创意作者 - George F.Peskov,MQL5代码作者 - barabashkakvn.
CrossMA是一个基于两条移动平均线交叉的交易系统,自动设置止损,止损的值基于ATR(平均真实波幅)。每当开仓或平仓时,系统会发送邮件通知。参数设置可以通过回测进行调整。
获取第一根和第二根K线的指标值:
//--- 获取移动平均值
mas=iMAGet(handle_iMA1,1); // 长期移动平均 12
maf=iMAGet(handle_iMA2,1); // 短期移动平均 4
mas_p=iMAGet(handle_iMA1,2); // 长期移动平均 12
maf_p=iMAGet(handle_iMA2,2); // 短期移动平均 4
Atr=iATRGet(0);
mas=iMAGet(handle_iMA1,1); // 长期移动平均 12
maf=iMAGet(handle_iMA2,1); // 短期移动平均 4
mas_p=iMAGet(handle_iMA1,2); // 长期移动平均 12
maf_p=iMAGet(handle_iMA2,2); // 短期移动平均 4
Atr=iATRGet(0);
检查卖出条件:
//--- 卖出条件
if(maf<mas && maf_p>=mas_p)
{
double lots=LotsOptimized();
double stop_loss=NormalizeDouble(m_symbol.Ask()+Atr,Digits());
res=m_trade.Sell(lots,Symbol(),m_symbol.Bid(),stop_loss,0);
if(SndMl==true && res)
{
sHeaderLetter="卖出操作由"+Symbol()+"发起";
sBodyLetter="成交卖出"+Symbol()+" 于 "+DoubleToString(m_symbol.Bid(),Digits())+
",止损设置为 "+DoubleToString(stop_loss,Digits())+"";
sndMessage(sHeaderLetter,sBodyLetter);
}
return;
}
if(maf<mas && maf_p>=mas_p)
{
double lots=LotsOptimized();
double stop_loss=NormalizeDouble(m_symbol.Ask()+Atr,Digits());
res=m_trade.Sell(lots,Symbol(),m_symbol.Bid(),stop_loss,0);
if(SndMl==true && res)
{
sHeaderLetter="卖出操作由"+Symbol()+"发起";
sBodyLetter="成交卖出"+Symbol()+" 于 "+DoubleToString(m_symbol.Bid(),Digits())+
",止损设置为 "+DoubleToString(stop_loss,Digits())+"";
sndMessage(sHeaderLetter,sBodyLetter);
}
return;
}
检查买入条件:
//--- 买入条件
if(maf>mas && maf_p<=mas_p)
{
double lots=LotsOptimized();
double stop_loss=NormalizeDouble(m_symbol.Bid()-Atr,Digits());
res=m_trade.Buy(lots,Symbol(),m_symbol.Ask(),stop_loss,0);
if(SndMl==true && res)
{
sHeaderLetter="买入操作于"+Symbol()+"发起";
sBodyLetter="成交买入"+Symbol()+" 价格为 "+DoubleToString(m_symbol.Ask(),Digits())+
",止损设置为 "+DoubleToString(stop_loss,Digits())+"";
sndMessage(sHeaderLetter,sBodyLetter);
}
return;
}
if(maf>mas && maf_p<=mas_p)
{
double lots=LotsOptimized();
double stop_loss=NormalizeDouble(m_symbol.Bid()-Atr,Digits());
res=m_trade.Buy(lots,Symbol(),m_symbol.Ask(),stop_loss,0);
if(SndMl==true && res)
{
sHeaderLetter="买入操作于"+Symbol()+"发起";
sBodyLetter="成交买入"+Symbol()+" 价格为 "+DoubleToString(m_symbol.Ask(),Digits())+
",止损设置为 "+DoubleToString(stop_loss,Digits())+"";
sndMessage(sHeaderLetter,sBodyLetter);
}
return;
}
评论 0