在设计自动交易系统中,查询现有持仓情况,并分类处理是比较关键的一个步骤,今天,我和大家一道,用MQL4做一个这样的例程。
工具/原料
电脑
MQL4语言编辑器
方法/步骤
1、在电脑上打开“MetaEditor4”(MQL4语言编辑器);在上方工具栏选择“文件”,然后“新建”一个文件;
2、在接下来的“向导界面”中选择“EA模板”;然后给例程起个名字(我起的名字是“example”;接下来使用默认配置;一个例程的模板文件建立了;
3、在这个例程模板文件中有三个主要函数:OnInit()、OnDeinit()、OnTick();OnInit()函数用于载入EA自动交易程序时进行初始化;OnDeinit()函数用于EA自动交易程序退出时归还占用资源;OnTick()是EA自动交易函数的主体,是运行你的EA自动交易程序的主体;一般情况下,我们不会去动OnInit()函数和OnDeinit()函数;
4、为了查询我们现有持仓订撮劝丛食单的情况,我们用到了“循环遍历”的结构;为了体现查询结果,需要设置一些变量和数组,用于记录查询数据;在例程的OnTic娱浣嫁装k()函数中输入以下语句:intcheck_order;stringcheck_symbol[4];intcheck_order_num[4];intcheck_order_type[4];doublecheck_order_lots[4];doublecheck_order_profit[4];
5、然后设计我们的“循环遍历”订单的系统功能,这里用到了“for循环”结构和一些M兑恶铼融QL4自带的函数;在定义的变量和数组的后面输入下列语句:for(check_order租涫疼迟=0;check_order<OrdersTotal();check_order++){if(OrderSelect(check_order,SELECT_BY_POS)==true){check_symbol[check_order]=OrderSymbol();check_order_num[check_order]=OrderTicket();check_order_type[check_order]=OrderType();check_order_lots[check_order]=OrderLots();check_order_profit[check_order]=OrderProfit();}elseComment("checkfailed!!!");}
6、最后,我们使用comment()函墙绅褡孛数,将检查结果显示在行情图表的左上角,因此,继续在OnTick(像粜杵泳)函数中输入下列语句:Comment(check_symbol[0],"",check_order_num[0],"",check_order_type[0],"",check_order_lots[0],"",check_order_profit[0],"\n",check_symbol[1],"",check_order_num[1],"",check_order_type[1],"",check_order_lots[1],"",check_order_profit[1],"\n",check_symbol[2],"",check_order_num[2],"",check_order_type[2],"",check_order_lots[2],"",check_order_profit[2],"\n",check_symbol[3],"",check_order_num[3],"",check_order_type[3],"",check_order_lots[3],"",check_order_profit[3],"\n");
7、完成输入后,点击上方工具栏中的“编译调试”键;怎么样,我们已经能全部查询到我们现在的持仓情况了。