MQL4语言实现马丁策略震荡EA交易(后附测试结果)

2018年10月11日01:09:14 发表评论 6,712 views

之前就想测试一下震荡策略,那个时候还不知道叫马丁,于是开始自己学习弄一个,现在终于折腾出来了,感觉效果不是特别理想,不知道是我哪里出问题了或者参数设置不正确,现在发出来以来方便新入门的朋友学习,其次就是供大家参考

下面是源代码:

//+------------------------------------------------------------------+
//|                                                        my1ea.mq4 |
//|                                             http://www.eait.co |
//+------------------------------------------------------------------+

 

//+------------------------------------------------------------------+
//| expert initialization function                                   |
//+------------------------------------------------------------------+
int cnt,ticket,total,TakeProfit;
extern double Lots=3; //默认下单数量
extern int Max=999;//最大下单数量
extern double Pip=30;//下单点差
extern double H=22000;//设置最高价(从最高价向下加仓)
int count;
int index;//
//double Lots1;
//double TotalLots;
double cnt1;
//double Risk=0.1;
int start()

{
//index= iHighest(Symbol(),0,MODE_HIGH,50,0);
//H=20990;//指定最高价
//double Money=AccountEquity();

total=OrdersTotal();//GetHoldingOrdersCount();//本EA下单数量
cnt1=(H-Ask)/Pip;//计算订单总数
cnt=MathRound(cnt1)-1; //取证
//Lots=2;
int TakeProfit=(cnt-total+1)*Pip; //止盈价格,用来设置最初订单的止盈价

if(total<=cnt&&total<Max)//设置条件判断
{
//Print (cnt);
//Print (total);
//while(IsTradeContextBusy())Sleep(10);
OrderSend(Symbol(),OP_BUY,Lots,Ask,3,0,Ask+TakeProfit,"macd sample",16666,0,Red);
}

//return(0);
}

 


上面是仅仅测试的源代码,用的是总订单数,如果还有其他EA或者手动下单,则可能出错,需要用到下面筛选本EA下单的代码,缺点是在回测时速度慢,可以选择性地调用:

 

int GetHoldingOrdersCount()
{
int Count=0;
for(int i=0;i<OrdersTotal();i++)
{
OrderSelect(i, SELECT_BY_POS, MODE_TRADES);
if(OrderSymbol()==Symbol() && OrderMagicNumber()==16666)
{
Count+=1;
}
}
return(Count);
}

 

测试结果:http://www.eait.co/?p=81

www.eait.co

e-AIT编程投资分享,微信搜索eainvest可以收到更多

 

发表评论

:?: :razz: :sad: :evil: :!: :smile: :oops: :grin: :eek: :shock: :???: :cool: :lol: :mad: :twisted: :roll: :wink: :idea: :arrow: :neutral: :cry: :mrgreen: