一杯拿铁不加糖_
2024-06-03 20:37:48
最佳回答
1新建ea程序:打开mql4编辑器,新建一个ea,起名myea,点击下一步进入编程界面2界面上三个函数oninit()是初始化函数,当载入ea的时候执行一次;ondeinit(const int reason)是当关闭ea的时候执行一次;void ontick()函数,是当每个价格到达的时候执行;3在开头部分需要填写的外部可设置的参数(包括止盈,止损,交易手数,两个均线的周期 ,一个20日均线,一个5日均线)extern double takeprofit = 50; //止盈点数extern double stoploss = 20; //止损点数extern double lots = 0.1; //交易手数extern double poin; //**最小报价单位extern int maperiodslow=20; //20日移动平均extern int maperiodfast=5; //5日移动平均4在oninit()函数中编写初始化函数,主要是为了统一不同币种最小报价单位 if (point == 0.00001) poin = 0.0001; //6 digits else if (point == 0.001) poin = 0.01; //3 digits (for yen based pairs) else poin = point; //normal5在ondeinit()函数中填写逻辑和交易函数 double mymaslow,mymafast,mymaslow1,mymafast1; int i=0; mymaslow=ima(symbol(),0,maperiodslow,0,mode_sma,price_close,0); mymafast=ima(symbol(),0,maperiodfast,0,mode_sma,price_close,0); mymaslow1=ima(symbol(),0,maperiodslow,0,mode_sma,price_close,1); mymafast1=ima(symbol(),0,maperiodfast,0,mode_sma,price_close,1); //上穿买入 平掉卖单 if(mymafast>mymaslow && mymafast1<mymaslow1) { if(orderselect(i,select_by_pos,mode_trades) && ordertype()==op_sell) orderclose(orderticket(),orderlots(),ask,3,clr_none); if(orderstotal()==0) ordersend(symbol(),op_buy,lots,ask,3,ask-stoploss*poin,ask+takeprofit*poin,"tf0_1",0,green); } //下穿卖出 平掉买单 if(mymafast<mymaslow && mymafast1>mymaslow1) { if(orderselect(i,select_by_pos,mode_trades) && ordertype()==op_buy) orderclose(orderticket(),orderlots(),bid,3,clr_none); if(orderstotal()==0) ordersend(symbol(),op_sell,lots,bid,3,bid+stoploss*poin,bid-takeprofit*poin,"tf0_1",0,red); }6最后回测一下效果,点击测量测试,或者显示中的ea测试选项(或者ctrl+r键),选择你的ea,选择测试货币对,点击复盘显示,选择时间周期进行测试,最后点击测试进行复盘测试。end 20210311