実際の API 取引インターフェイス C# 呼び出しデモの例

人間には限界があり、感情の影響を受けることは誰もが知っています。主導権を握るために、プログラマティック取引が誕生し、API インターフェースがその中間の橋渡しとなります。

API インターフェイスとは何ですか? API インターフェイスは株式プログラム取引に必要なものです。車の車輪と同様、これなしではプログラムによるトランザクションは行われません。

ただし、API インターフェイスの使用は、クリックするだけでは利用できず、プログラミング言語をロードして呼び出すことで接続されます。

今日は、C# で呼び出される実際の API トランザクション インターフェイスの例を共有したいと思います。

using System.Runtime.InteropServices;
using System.Text;

namespace MetaTradeDemo;

/// <summary>
/// MetaTrade 接口
/// </summary>
public static class MetaTrade
{
	/* ---------------------------------------------------------------------------------
	 * 简单说明:
	 * 1.此文件为 .Net 与 MetaTrade 接口混合调用的接口文件
	 * 2.通常不需要修改此文件内容, 除非你非常了解 .Net 与 C++ 的调用规范
	 * 3.本接口在 .net6 下测试通过, .net6 为当前长期支持版本, 强烈建议您也使用这个版本
	 * ---------------------------------------------------------------------------------
	 */

	/// <summary>
	/// 初始化接口
	/// 调用此方法将会检验授权, 并返回授权的账户数量
	/// 建议在程序启动时, 调用此方法, 以便再进行后续操作
	/// </summary>
	/// <returns>已授权的账户数</returns>
	[DllImport("MetaTrade.dll", CharSet = CharSet.Ansi)]
	public static extern int Init();

	/// <summary>
	/// 反初始化接口
	/// 建议在程序退出出调用些方法
	/// </summary>
	[DllImport("MetaTrade.dll", CharSet = CharSet.Ansi)]
	public static extern void Deinit();

	/// <summary>
	/// 登录账户
	/// </summary>
	/// <param name="ip">服务端 Ip 地址</param>
	/// <param name="port">端口号</param>
	/// <param name="version">版本号, 默认为空</param>
	/// <param name="yybId">营业部, 默认为零</param>
	/// <param name="account">账号, 同授权账号</param>
	/// <param name="tradeAccount">资金账号</param>
	/// <param name="jyPassword">交易密码</param>
	/// <param name="txPassword">通讯密码</param>
	/// <param name="errorInfo">错误信息,一般要分配256字节的空间,出错时为非空字符串</param>
	/// <returns>客户端 Id</returns>
	[DllImport("MetaTrade.dll", CharSet = CharSet.Ansi)]
	public static extern int Logon(string ip, short port, string version, short yybId, string account, string tradeAccount, string jyPassword, string txPassword, StringBuilder errorInfo);

	/// <summary>
	/// 注销账户
	/// </summary>
	/// <param name="clientId">客户端 Id</param>
	[DllImport("MetaTrade.dll", CharSet = CharSet.Ansi)]
	public static extern void Logoff(int clientId);

	#region + QueryData / SendOrder / CancelOrder / GetQuote / Repay

	/// <summary>
	/// 查询各种交易数据
	/// </summary>
	/// <param name="clientId">客户端 Id</param>
	/// <param name="category">信息种类:0资金,1股份,2当日委托,3当日成交,4可撤单,5股东代码,6融资余额,7融券余额,8可融证券</param>
	/// <param name="result">返回信息,一般要分配1024*1024字节的空间,出错时为空字符串。</param>
	/// <param name="errorInfo">错误信息,一般要分配256字节的空间,出错时为非空字符串</param>
	[DllImport("MetaTrade.dll", CharSet = CharSet.Ansi)]
	public static extern void QueryData(int clientId, int category, StringBuilder result, StringBuilder errorInfo);

	/// <summary>
	/// 委托下单
	/// </summary>
	/// <param name="clientId">客户端 Id</param>
	/// <param name="category">委托种类:0买入,1卖出,2融资买入,3融券卖出,4买券还券,5卖券还款,6现券还券</param>
	/// <param name="entrustType">委托类型:0上海限价委托;深圳限价委托,1深圳对方最优价格,2深圳本方最优价格,3深圳即时成交剩余撤销,4上海五档即成剩撤;深圳五档即成剩撤,5深圳全额成交或撤销,6上海五档即成转限价</param>
	/// <param name="gddm">股东代码</param>
	/// <param name="zqdm">证券代码</param>
	/// <param name="price">委托价格</param>
	/// <param name="quantity">委托数量</param>
	/// <param name="result">返回信息,一般要分配1024*1024字节的空间,出错时为空字符串。</param>
	/// <param name="errorInfo">错误信息,一般要分配256字节的空间,出错时为非空字符串</param>
	[DllImport("MetaTrade.dll", CharSet = CharSet.Ansi)]
	public static extern void SendOrder(int clientId, int category, int entrustType, string gddm, string zqdm, float price, int quantity, StringBuilder result, StringBuilder errorInfo);

	/// <summary>
	/// 委托撤单
	/// </summary>
	/// <param name="clientId">客户端 Id</param>
	/// <param name="exchangeId">交易所 Id:A1上海,A0深圳(部分券商是2)</param>
	/// <param name="entrustId">委托编号</param>
	/// <param name="result">返回信息,一般要分配1024*1024字节的空间,出错时为空字符串。</param>
	/// <param name="errorInfo">错误信息,一般要分配256字节的空间,出错时为非空字符串</param>
	[DllImport("MetaTrade.dll", CharSet = CharSet.Ansi)]
	public static extern void CancelOrder(int clientId, string exchangeId, string entrustId, StringBuilder result, StringBuilder errorInfo);

	/// <summary>
	/// 查询五档行情
	/// </summary>
	/// <param name="clientId">客户端 Id</param>
	/// <param name="zqdm">证券代码</param>
	/// <param name="result">返回信息,一般要分配1024*1024字节的空间,出错时为空字符串。</param>
	/// <param name="errorInfo">错误信息,一般要分配256字节的空间,出错时为非空字符串</param>
	[DllImport("MetaTrade.dll", CharSet = CharSet.Ansi)]
	public static extern void GetQuote(int clientId, string zqdm, StringBuilder result, StringBuilder errorInfo);

上記は、C# での MetaTrade インターフェイスのデモ例です。.NET バージョンは .NET6 であることが望ましいことに注意してください。

パラメータの展開は簡単です。接続後の安定性が高い。戦略に関しては、感情に左右されず、単に五胡が飛び立つだけです。

おすすめ

転載: blog.csdn.net/LegendCode/article/details/127785042