实盘api交易接口C#调用DEMO示例

众所周知,人是有极限的,受情绪影响的。为了占据先机,程序化交易就此诞生,而api接口就是中间的桥梁。

api接口是什么,api接口是一个股票程序化交易中必备的东西。就像汽车的轮子,没有它就没有程序化交易。

但api接口使用并不是点开就可以用的,是通过编程语言加载调用进行连接的。

今天在这分享一下在C#下调用的实盘api交易接口的示例。

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

namespace MetaTradeDemo;

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

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

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

	/// 
	/// 登录账户
	/// 
	/// 服务端 Ip 地址
	/// 端口号
	/// 版本号, 默认为空
	/// 营业部, 默认为零
	/// 账号, 同授权账号
	/// 资金账号
	/// 交易密码
	/// 通讯密码
	/// 错误信息,一般要分配256字节的空间,出错时为非空字符串
	/// 客户端 Id
	[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);

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

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

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

	/// 
	/// 委托下单
	/// 
	/// 客户端 Id
	/// 委托种类:0买入,1卖出,2融资买入,3融券卖出,4买券还券,5卖券还款,6现券还券
	/// 委托类型:0上海限价委托;深圳限价委托,1深圳对方最优价格,2深圳本方最优价格,3深圳即时成交剩余撤销,4上海五档即成剩撤;深圳五档即成剩撤,5深圳全额成交或撤销,6上海五档即成转限价
	/// 股东代码
	/// 证券代码
	/// 委托价格
	/// 委托数量
	/// 返回信息,一般要分配1024*1024字节的空间,出错时为空字符串。
	/// 错误信息,一般要分配256字节的空间,出错时为非空字符串
	[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);

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

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

以上是C#下的MetaTrade接口的demo示例。注意一下.NET版本最好是.NET6哦。

参数部署简单。连接后稳定性很强。对策略来说简直就是芜湖起飞,不再受情绪影响。

你可能感兴趣的:(c#,开发语言,.net)