Любые вопросы новичков по MQL4 и MQL5, помощь и обсуждение по алгоритмам и кодам - страница 1836

 
Andrey Sokolov #:

И вас с НГ. Что вы сами сделали, и что у вас не получается?

у меня советик собран и работает.

вопрос в его остановке или приостановке. в эту сторону только начал копать. 

понимаю так:

int OnInit()
  {
Start          = TimeCurrent();
MaxMartinLot   = Lot*MathPow(1.4,OrdersClose);
MaxMartinLot2  = Lot*MathPow(K_Martin2,OrdersClose2);

советник запускается в любое текущее время.

далее:

void OnTick()
  {
// Получим значение индикатора
   dMA = iMA(Symbol(), 0,PeriodMA, MovingShift, MODE_SMA, PRICE_CLOSE, 0); // MODE_SMA - простое усреднение , значение 0. PRICE_CLOSE- цена закрытия, значение 0.

// Если нет открытых ордеров, то входим в условие
      if(CountOrders()==0)
     {
// Если появился сигнал на покупку, то откроем ордер на покупку
      if(bSignalBuy() == true)
         vOrderOpenBuy();

// Если появился сигнал на продажу, то откроем ордер на продажу
      if(bSignalSell() == true)
         vOrderOpenSell();
     }

получается, как только CountOrders()==0  &&  (OrderLots()>=Lotcontrol)- "заданная лотность достигнута"

мне нужно остановить /приостановить отправку сигнала bSignalBuy/bSignalSell на N- часов/дней

получается мне нужно сравнить TimeCurrent() с каким то параметром , типа TimeControl (название не важно)

и если  TimeCurrent()>=TimeControl - то снова идет сигнал  bSignalBuy/bSignalSell.

я уже спрашивал про (Sleep)  мне сказали, что процесс останавливать не рекомендуется. 

вопрос не в том, что у меня не получается, а в том, верно ли я мыслю и какой функцией описать TimeControl?

 
законопослушный гражданин #:

у меня советик собран и работает.


   input int HourPause  = 1;        // Пауза в часах
   datetime  Start      = 0;
//----------------------------------------------------
   // выключаем торговлю
   if (OrderLots()>=Lotcontrol)
     {
      Start=TimeCurrent()+(HourPause*60*60));
     }
// Если нет открытых ордеров, то входим в условие
      if(CountOrders()==0&&Start<=TimeCurrent())
 

Tretyakov Rostyslav #:

спасибо.

я начал думать так: 

If (TimeCurrent() >=(OrderCloseTime() + (Pause*60*60)))

так не правильно?

 
законопослушный гражданин #:

спасибо.

я начал думать так: 

If (TimeCurrent() >=(OrderCloseTime() + (Pause*60*60)))

так не правильно?

Так тоже можно
 
Tretyakov Rostyslav #:
Так тоже можно

но тут сначала нужно выбрать последний ордер через  if(OrderSelect()- так?

 
законопослушный гражданин #:

но тут сначала нужно выбрать последний ордер через  if(OrderSelect()- так?

да
 

Подскажите, есть ли готовые решения дла закрытия по FIFO? Нашел только для МТ5.

Для МТ4 Open Time пендинга равен времени его активации или установки?

 
leonerd #:

Подскажите, есть ли готовые решения дла закрытия по FIFO? Нашел только для МТ5.

Для МТ4 Open Time пендинга равен времени его активации или установки?

После активации это уже не пендинг.

Что такое FIFO?

 
Tretyakov Rostyslav #:

После активации это уже не пендинг.

Что такое FIFO?

FIFO = Fist Input Fist Output - Первый вошел первый вышел Выход в том же порядке что и заходит = Очередь

FILO = Fist Input Last Output - Первый вошел последний вышел Выход в обратном порядке = Стек

 
a007 #:

FIFO = Fist Input Fist Output - Первый вошел первый вышел Выход в том же порядке что и заходит = Очередь

FILO = Fist Input Last Output - Первый вошел последний вышел Выход в обратном порядке = Стек

Даже не слышал об этом...
Причина обращения: