Вопросы от начинающих MQL4 MT4 MetaTrader 4 - страница 3

 
mila.com:

Как сделать эту проверку в цикле ?

можно так

   for(BarCount=3; BarCount>0; BarCount--)
     {
      if(BufferPointUp[i+BarCount]!= EMPTY_VALUE)
         break;
     }
   if(BarCount==0) BufferPointUp[i]=high[i];
 
Taras Slobodyanik:

можно так

Спасибо.

 
Добрый день!!! Подскажите как сделать рандомный выбор числа в заданном диапазоне. Есть какая-нибудь функция для этого???
 
bobrush:
Добрый день!!! Подскажите как сделать рандомный выбор числа в заданном диапазоне. Есть какая-нибудь функция для этого???
Стандартная - MathRand(), или просто rand().
 

Фигня какая-то.Довел код уже до такого состояния:

{
   Ticket=OrderSend(NULL,OP_BUY,Lot,Ask,slippage,0,0,NULL,magic,0,Blue);
   if(OrdersTotal()!=0)
   {
    for (int i = 0; i < OrdersTotal(); i++)
    {
     if(OrderSelect(i,SELECT_BY_POS)==true)
     {
      TP=NormalizeDouble(Bid+TakeProfit*Point,Digits);
      bool modify=OrderModify(OrderTicket(),OrderOpenPrice(),TP,0,0);
     }
    }
     return;
   }

Все равно ТП не ставится. 

 
Nickolay72:

Все равно ТП не ставится. 

...при модификации неправильный стоплосс — в логах должен ошибку писать "инвалид стоплосс".
 
Nickolay72:

Фигня какая-то.Довел код уже до такого состояния:

Все равно ТП не ставится. 

Зачем так сложно, когда тикет есть?

Ticket=OrderSend(NULL,OP_BUY,Lot,Ask,slippage,0,0,NULL,magic,0,Blue);
//не забываем проверить код ошибки
if(Ticket<0Print("Ой, ошибочка: "_LastError);
TP=NormalizeDouble(Bid+TakeProfit*Point,Digits);

bool modify=OrderModify(Ticket,OrderOpenPrice(),OrderStopLoss(),TP,0);

//не забываем проверить код ошибки

if(!modify) Print("OOPS! Modify error: "_LastError);

 

Добрый день подскажите как сделать чтобы советник используя 15 минутный тайм фрейм проверял значения каждые 20 минут допустим в 9-20, 9-40 следил за пересечением RSI  и в случае пересечения уровня через двадцать минут проверял значение цены. Вот то что мне нужно исправить:

if (Hour()==9 && (Minute() == 20) && (RSI<50))
Price2==Bid;
     {
      if (Hour()==9 && (Minute() == 40) && (Bid<Price2))
  
         {
          ticket=OrderSend(Symbol(),OP_SELL, Lts, Bid, SP,0,0, NULL, Magic, 0, Blue);
          return(0);
         }
    
     }    
 
strongflex:

Добрый день подскажите как сделать чтобы советник используя 15 минутный тайм фрейм проверял значения каждые 20 минут    

 ...можно проверять остаток от деления, если минуты делятся без остатка на 20, значит сейчас очередные 20 минут

if (Minute()%20==0)
 
Taras Slobodyanik:

 ...можно проверять остаток от деления, если минуты делятся без остатка на 20, значит сейчас очередные 20 минут

if (Minute()%20==0)
А как сделать чтобы советник запомнил цену которая была при исполнении условия что допустим в 9-20 RSI пересекла уровень и через 20 минут идет проверка цены. И мне нужно сравнить цену 20 минут назад и сейчас