新人对MQL4和MQL5的任何问题,对算法和代码的帮助和讨论 - 页 1631

 

下午好!!!。

在这里帮我一下。我正在为一个网格EA添加追踪止损,到目前为止,只为第一笔订单添加。小路还没有触发。问题是什么?

以下是打开单个订单的代码片段

double JAW = iAlligator(Symbol(),TimeframesIndicators,13,8,5,8,5,3,MODE_SMMA,PRICE_MEDIAN,MODE_GATORJAW,0);
     double TEETH = iAlligator(Symbol(),TimeframesIndicators,13,8,5,8,5,3,MODE_SMMA,PRICE_MEDIAN,MODE_GATORTEETH,0);
     double LIPS = iAlligator(Symbol(),TimeframesIndicators,13,8,5,8,5,3,MODE_SMMA,PRICE_MEDIAN,MODE_GATORLIPS,0);
     double DI_PLUSCurrent=iADX(Symbol(),TimeframesIndicators,14, PRICE_CLOSE,MODE_PLUSDI,0);
     double DI_MINUSCurrent=iADX(Symbol(),TimeframesIndicators,14, PRICE_CLOSE,MODE_MINUSDI,0);
     double MacdCurrent=iMACD(Symbol(),TimeframesIndicators,12,26,9, PRICE_CLOSE,MODE_MAIN,0);
     double MacdPrevious=iMACD(Symbol(),TimeframesIndicators,12,26,9, PRICE_CLOSE,MODE_MAIN,2 ); 
     double ATR = iATR(Symbol(), TimeframesVolatility, BarCount, 0);
     if (CountTrade() == 0)
     { 
        if((UseHour==1&&Hour()>=StartTime&&Hour()<=StopTime)||UseHour==0)
        if(LIPS>TEETH&& TEETH>JAW&&DI_PLUSCurrent>18&&DI_PLUSCurrent>DI_MINUSCurrent&&MacdCurrent>MacdPrevious)                              
         {
           FirstLots = Lots();
           tp = NormalizeDouble(Ask + TakeProfitFirstOrder*Point, Digits);
           ticket = OrderSend(Symbol(), OP_BUY, FirstLots, Ask, slip, 0, tp, "1-ый ордер", Magic, 0, Blue); 
            {
             if(Bid - OrderOpenPrice() > TrailingStop*Point) 
              Trailing();
            }
         }
        if((UseHour==1&&Hour()>=StartTime&&Hour()<=StopTime)||UseHour==0)
        if(LIPS<TEETH&& TEETH<JAW&&DI_MINUSCurrent>18&&DI_MINUSCurrent>DI_PLUSCurrent&&MacdCurrent<MacdPrevious)                            
         {
           FirstLots = Lots();
           tp = NormalizeDouble(Bid - TakeProfitFirstOrder*Point, Digits);
           ticket = OrderSend(Symbol(), OP_SELL, FirstLots, Bid, slip, 0, tp, "1-ый ордер", Magic, 0, Red); 
           {
           if(OrderOpenPrice() - Ask > TrailingStop*Point)
              Trailing();
           }
         }
       }

以下是单个订单的修改功能

//+----------------------------------------------------------------------------+
//| Трейлинг стоп одиночных ордеров                                            |
//+----------------------------------------------------------------------------+
void Trailing()
{
   for(int i = OrdersTotal()-1; i>=0; i--)
   {
      if(OrderSelect(i, SELECT_BY_POS, MODE_TRADES))
      {
         if(OrderSymbol() == Symbol() && OrderMagicNumber() == Magic)
         {
           if(OrderType() == OP_BUY)
           {
             if(Bid - OrderOpenPrice() > TrailingStop*Point || OrderStopLoss() == 0)
             {
                if(OrderStopLoss() < Bid - (TrailingStep + TrailingStop)*Point || OrderStopLoss() == 0)
                {
                  if(!OrderModify(OrderTicket(), OrderOpenPrice(), NormalizeDouble(Bid - TrailingStop*Point, Digits), tp, 0))
                    Print("Ошибка модификации ордера на покупку!");
                }
             }
           }
           if(OrderType() == OP_SELL)
           {
             if(OrderOpenPrice() - Ask > TrailingStop*Point || OrderStopLoss() == 0)
             {
                if(OrderStopLoss() > Ask + (TrailingStep + TrailingStop)*Point || OrderStopLoss() == 0)
               {
                  if(!OrderModify(OrderTicket(), OrderOpenPrice(), NormalizeDouble(Ask + TrailingStop*Point, Digits), tp, 0))
                    Print("Ошибка модификации ордера на продажу!");
               }
             }
           }
         }
      }
   }
}

谢谢你!!!!

 
EVGENII SHELIPOV #:

下午好!!!。

在这里帮我一下。我正在为一个网格EA添加追踪止损,到目前为止,只为第一笔订单添加。小路还没有触发。问题是什么?

以下是打开单个订单的代码片段

以下是单个订单的修改功能

谢谢你!!!!

只有在没有订单的情况下,你才可以求助于拖网...。
 
MakarFX #:
你是对的,它是有效的......在码头上有一个错误。
1345年构建的多货币模式有效)。我在10个专业上检查了它,它从所有10个配对中获取数据,并画出你想要的东西)
并在测试器中按下按钮)
 
MakarFX #:
只有在没有订单的情况下,你才有机会调用拖网......

变了,什么都没变

void OnTick()
{
     double JAW = iAlligator(Symbol(),TimeframesIndicators,13,8,5,8,5,3,MODE_SMMA,PRICE_MEDIAN,MODE_GATORJAW,0);
     double TEETH = iAlligator(Symbol(),TimeframesIndicators,13,8,5,8,5,3,MODE_SMMA,PRICE_MEDIAN,MODE_GATORTEETH,0);
     double LIPS = iAlligator(Symbol(),TimeframesIndicators,13,8,5,8,5,3,MODE_SMMA,PRICE_MEDIAN,MODE_GATORLIPS,0);
     double DI_PLUSCurrent=iADX(Symbol(),TimeframesIndicators,14, PRICE_CLOSE,MODE_PLUSDI,0);
     double DI_MINUSCurrent=iADX(Symbol(),TimeframesIndicators,14, PRICE_CLOSE,MODE_MINUSDI,0);
     double MacdCurrent=iMACD(Symbol(),TimeframesIndicators,12,26,9, PRICE_CLOSE,MODE_MAIN,0);
     double MacdPrevious=iMACD(Symbol(),TimeframesIndicators,12,26,9, PRICE_CLOSE,MODE_MAIN,2 ); 
     double ATR = iATR(Symbol(), TimeframesVolatility, BarCount, 0);
     if (CountTrade() == 0)
     { 
        if((UseHour==1&&Hour()>=StartTime&&Hour()<=StopTime)||UseHour==0)
        if(LIPS>TEETH&& TEETH>JAW&&DI_PLUSCurrent>18&&DI_PLUSCurrent>DI_MINUSCurrent&&MacdCurrent>MacdPrevious)                              
         {
           FirstLots = Lots();
           tp = NormalizeDouble(Ask + TakeProfitFirstOrder*Point, Digits);
           ticket = OrderSend(Symbol(), OP_BUY, FirstLots, Ask, slip, 0, 0, "1-ый ордер", Magic, 0, Blue); 
         }
        if((UseHour==1&&Hour()>=StartTime&&Hour()<=StopTime)||UseHour==0)
        if(LIPS<TEETH&& TEETH<JAW&&DI_MINUSCurrent>18&&DI_MINUSCurrent>DI_PLUSCurrent&&MacdCurrent<MacdPrevious)                            
         {
           FirstLots = Lots();
           tp = NormalizeDouble(Bid - TakeProfitFirstOrder*Point, Digits);
           ticket = OrderSend(Symbol(), OP_SELL, FirstLots, Bid, slip, 0, 0, "1-ый ордер", Magic, 0, Red); 
         }
         if (CountTrade() == 1) Trailing();

       }
 
EVGENII SHELIPOV #:

变了,什么都没变

你没有改变任何东西。

你的转换

 if (CountTrade() == 1) Trailing();

是在里面。

if (CountTrade() == 0)
 
你好,你能告诉我是否有可能在mt5的移动平均线专家 中添加单边(买入或卖出)交易吗?
 
amsgif80 移动平均线 专家中加入单边交易的选项(买入或卖出)?

把它写在专家顾问的MQL5代码中,你就会有这个选项。

 
Vladimir Karputov #:

把它写在专家顾问的MQL5代码中,你就会有这个选项。

我试过了,但没有用。我在这个行业里完全是一个零。
 
amsgif80 #:
我试过了,没有用。我在这方面完全是个新手 :(
让我看看你的尝试...
 
amsgif80 #:
我试过了,但没有用。我在这一行业完全是个新手 :(

这是我试图插入的代码。

在代码的顶部抛出这个:
enum ENUM_DIRECTION{
DIRECTION_BUY = 0, // 只买
DIRECTION_SELL = 1, // 只卖
DIRECTION_ANY = 2, // 买和卖
};

input ENUM_DIRECTION inp_direction = DIRECTION_ANY; // 允许交易方向


进一步查找代码中哪里开买、哪里卖在start()或OnTick()函数中查看
其中买入是在条件中添加:
if(inp_direction!=DIRECTION_SELL)
其中卖出是在条件中添加:
if(inp_direction!=DIRECTION_BUY)