Вопросы от начинающих MQL5 MT5 MetaTrader 5 - страница 587

 
Karputov Vladimir:
Dream11:

Доброго времени суток така проблема.. есть функция трелинг стопа...

 как ее переделать чтобы тралились неограниченное кол-во ордеров а не один... 


У меня вот такая, тралит все.
extern int             TrailingStep = 10;     //Шаг трейлинга
extern int             TrailingStop = 30;     //Трейлинг стоп
//+------------------------------------------------------------------+
//Трейлинг стоп
void Trailing()
{
 int err = GetLastError();
 err = 0;
 
 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(Ask - OrderOpenPrice() > TrailingStop*Point)
     {
      if(OrderStopLoss() < Ask - (TrailingStep + TrailingStop)*Point)
      {
       if(!OrderModify(OrderTicket(),OrderOpenPrice(),NormalizeDouble(Ask - TrailingStop*Point,Digits),OrderTakeProfit(),0,clrGreen))
       {
        err = GetLastError();
        if(err != 0) Print("Ошибка модификации ордера № ",OrderTicket()," на покупку! Код ошибки: ",err,".");
       }
      }
     }
    }
    if(OrderType() == OP_SELL)
    {
     if(OrderOpenPrice() - Bid > TrailingStop*Point)
     {
      if(OrderStopLoss() > Bid + (TrailingStep + TrailingStop)*Point)
      {
       if(!OrderModify(OrderTicket(),OrderOpenPrice(),NormalizeDouble(Bid + TrailingStop*Point,Digits),OrderTakeProfit(),0,clrRed))
       {
        err = GetLastError();
        if(err != 0) Print("Ошибка модификации ордера № ",OrderTicket()," на продажу! Код ошибки: ",err,".");
       }
      }
     }
    }
   }
  }
 }
}
//+------------------------------------------------------------------+
 
barudkinarseniy:
У меня вот такая, тралит все.
Впринципи такая же, может вызываешь ее не в том месте !?
 
Alexey Viktorov:
А через OnTimer() разве не получается?

По таймеру делаю. Уже разобрался, спасибо, просто нужно было добавить в каждый цикл отрисовки времени функцию ChartRedraw, чтобы обновить графику. Блин, много сложностей добавили в mql5 после mql4, но может это и к лучшему...

 
Еще вопрос, как можно переменную даты-времени (типа datetime) преобразовать в КОЛИЧЕСТВО секунд после 1970 года? Ведь если приравнять обычному integer значение времени, эта int-переменная действительно будет равняться этому кол-ву секунд, НО будет предупреждение "possible loss of data due to type conversion", оно немного мозолит глаз, можно ли как-то решить проблему?

 
loleg1991:
Еще вопрос, как можно переменную даты-времени (типа datetime) преобразовать в КОЛИЧЕСТВО секунд после 1970 года? Ведь если приравнять обычному integer значение времени, эта int-переменная действительно будет равняться этому кол-ву секунд, НО будет предупреждение "possible loss of data due to type conversion", оно немного мозолит глаз, можно ли как-то решить проблему?

Почитай в документации "Приведение числовых типов"
Документация по MQL5: Основы языка / Типы данных / Приведение типов
Документация по MQL5: Основы языка / Типы данных / Приведение типов
  • www.mql5.com
Основы языка / Типы данных / Приведение типов - справочник по языку алгоритмического/автоматического трейдинга для MetaTrader 5
 
loleg1991:
Еще вопрос, как можно переменную даты-времени (типа datetime) преобразовать в КОЛИЧЕСТВО секунд после 1970 года? Ведь если приравнять обычному integer значение времени, эта int-переменная действительно будет равняться этому кол-ву секунд, НО будет предупреждение "possible loss of data due to type conversion", оно немного мозолит глаз, можно ли как-то решить проблему?

datetime это и есть количество секунд

https://www.mql5.com/ru/docs/basis/types/integer/datetime 

.

https://www.mql5.com/ru/docs/convert/stringtotime 

Документация по MQL5: Основы языка / Типы данных / Целые типы / Тип datetime
Документация по MQL5: Основы языка / Типы данных / Целые типы / Тип datetime
  • www.mql5.com
Основы языка / Типы данных / Целые типы / Тип datetime - справочник по языку алгоритмического/автоматического трейдинга для MetaTrader 5
 
loleg1991:
Еще вопрос, как можно переменную даты-времени (типа datetime) преобразовать в КОЛИЧЕСТВО секунд после 1970 года? Ведь если приравнять обычному integer значение времени, эта int-переменная действительно будет равняться этому кол-ву секунд, НО будет предупреждение "possible loss of data due to type conversion", оно немного мозолит глаз, можно ли как-то решить проблему?

Если Вы имеете ввиду, чтобы отражалось не в виде даты, а в виде именно количества секунд - приводите явно к типу long.
 
Alexey Kozitsyn:
Если Вы имеете ввиду, чтобы отражалось не в виде даты, а в виде именно количества секунд - приводите явно к типу long.
да, про отображение имел ввиду, спасибо, помогло.
 
loleg1991:
да, про отображение имел ввиду, спасибо, помогло.
Пожалуйста)
 

Здравствуйте ! Подскажите пожалуйста возможно ли что бы советник добавлял на график объект типа кнопки или тумблера и если можно то как?

 

Причина обращения: