Nevalyashka_BreakdownLevel:MetaTrader 5的高效交易系统

Mike 2017.08.10 21:51 20 0 0
附件

创意作者Vladimir KhlystovMQL5代码作者barabashkakvn.

这款交易系统的策略是突破选定时间区间的高点或低点。当市场出现亏损时,EA会采用“Nevalyashka”策略和马丁格尔技术来增加手数。

EA会在指定的时间区间内计算高点和低点,从 开始时间结束时间

Nevalyashka BreakdownLevel

如果价格超过这个时间区间的高点,则会开一个买入(BUY)仓位;如果价格低于低点,则会开一个卖出(SELL)仓位。止损(StopLoss)会设置在相应的区间边界,即买入仓位在低点,卖出仓位在高点。止盈(TakeProfit)则根据控制区间的高度进行设置。

如果设置了 使用关闭时间 为真,那么 关闭时间 参数(关闭所有仓位的时间)将会生效。

在参数 开始时间结束时间关闭时间 中,仅考虑小时和分钟。

止损的执行由 OnTradeTransaction 监控

当找到 “DEAL_ENTRY_OUT” (即“退出”)时,检查该交易的评论字段。如果 评论中包含“sl”,则表示该交易是由止损关闭的:

      if(deal_symbol==m_symbol.Name() && deal_magic==m_magic)
         if(deal_entry==DEAL_ENTRY_OUT)
           {
            MqlDateTime str1;
            TimeToStruct(TimeCurrent(),str1);
            //--- 可能是止盈的关闭
            if(StringFind(deal_comment,"tp",0)!=-1 || deal_profit>=0.0)
              {
               TradeDey=str1.day;
               return;
              }
            //--- 可能是止损的关闭            if(StringFind(deal_comment,"sl",0)!=-1)
              {
               if(TradeDey!=str1.day)
                 {
                  Print("检测到止损关闭!");

                  double loss=MathAbs(deal_profit/m_symbol.TickValue()/deal_volume);

                  if(deal_type==DEAL_TYPE_SELL) // 卖出仓位被关闭
                {
                     double SL=m_symbol.Bid()+loss*m_symbol.Point();
                     double TP=m_symbol.Bid()-loss*m_symbol.Point();
                     double Lot=LotCheck(deal_volume*InpK_martin);
                     if(Lot==0.0)
                        return;
                     OpenSell(SL,TP,Lot,"Nevalyashka");

                  if(deal_type==DEAL_TYPE_BUY) // 买入仓位被关闭
                    {
                     double SL=m_symbol.Ask()-loss*m_symbol.Point();
                     double TP=m_symbol.Ask()+loss*m_symbol.Point();
                     double Lot=LotCheck(deal_volume*InpK_martin);
                     if(Lot==0.0)
                        return;
                     OpenBuy(SL,TP,Lot,"Nevalyashka");
                    }
                  return;
                 }
              }
           }  

在关闭的仓位对面开一个新的仓位(如果交易类型是“DEAL_TYPE_SELL”,那么关闭的是买入仓位;而“DEAL_TYPE_BUY”表示关闭的是卖出仓位),并且手数增加,乘以 K. martin。如果仓位关闭时盈利,EA将等待下一个时间区间的开始时间 结束时间,然后重复上述操作。

 无损 参数表示盈亏平衡;当仓位利润达到一半时,止损会调整到开仓价格。

例如在 EURUSD,M30 上测试:

Nevalyashka BreakdownLevel test EURUSD M30

    列表
    评论 0