заданное время работы эксперта - страница 2

 
Azerus:



Немного не понятно это:


Самый простой вариант

static datetime expStartTime= 0;
static datetime expStopTime = 0;
    if(expStartTime==0)
    {
        expStartTime = Time[0]+Period()*60;
        expStopTime  = expStartTime+Period()*60;
    }
    
if(curTime<expStartTime) return(0);
if(curTime>expStopTime) return(0);


пойдет. Ключевым здесь является то, что переменные статические: они не переинициализируются каждый раз - только при первом запуске эксперта.

Только, что Вы будете делать, если после завершения рабочего времени советника останутся ордера ? Вы их сопровождать не будете ? Стоп подтягивать или проверять не наступило ли условие закрытия ? Если планируете все руками, то ничего не нужно. Но сопровождение ордеров это на порядки более простая задача, чем обоснование точки входа/выхода и вполне логично "поручить" это компьютеру. Я набросал "рыбу" для этого случая.


Удачи.

 

Мысль понятна....

Я немного уточню ситуацию: идет попытка создать некий эмулятор LimitStop ордера (не путать со StopLimit в МТ5); мне необходимо, что бы советник на следующем или текущем баре, при достижении ценой некого заданного Limit-уровня выставил Stop ордер (уровни limit, stop, TP, SL, sell\buy, expiration) задаются руками или снимаются с других индикаторов через iCustom (что не суть важно)....

Т.о. при задачи выставить SellLimitStop ордер:

   static datetime expStartTime= 0;
   static datetime expStopTime = 0;
    if(expStartTime==0)
      {
      if (CurrentBar==true)                         // если советник может выставить ордер на текущем баре
          expStartTime = Time[0];
      else
          expStartTime = Time[0]+Period()*60;       // советник может выставить ордер на следующем баре
      expStopTime  = expStartTime+Period()*60;
      }
   datetime  curTime = TimeCurrent();  
//   if(curTime<expStartTime || curTime>expStopTime) return(0);   // представляется, что эта строка лишняя ??????????

  // -------------------------------------------------- Задаем торговые условия
  
   if (Sell==true &&                                // Если задано выставление SellLimitStop ордера и ....
                  High[0]>Limit_s &&                       // ... цена достигла Limit-уровня и ...
                           (curTime>=expStartTime && curTime<expStopTime))       // ... можно работать на этом баре... 
                                                   
      Opn_S=true;                                   // ... мы заявляем о возможности выставления SellStop-ордера ...

                                                    // ... а далее - по tradingexpert.mq4, который 
                                                    // предназначен для использования в качестве примера в учебнике MQL4
                                                    //    :)
     
Отсюда два вопроса, правильно ли: (1) моя мысль, изложенная выше, и (2) советник будет работать все время\при всех барах (сопровождение позиций и все такое...), но выставлять ордера он будет только на заданном баре???
 
Azerus:

Мысль понятна....

Я немного уточню ситуацию: идет попытка создать некий эмулятор LimitStop ордера (не путать со StopLimit в МТ5); мне необходимо, что бы советник на следующем или текущем баре, при достижении ценой некого заданного Limit-уровня выставил Stop ордер (уровни limit, stop, TP, SL, sell\buy, expiration) задаются руками или снимаются с других индикаторов через iCustom (что не суть важно)....

Т.о. при задачи выставить SellLimitStop ордер:

Отсюда два вопроса, правильно ли: (1) моя мысль, изложенная выше, и (2) советник будет работать все время\при всех барах (сопровождение позиций и все такое...), но выставлять ордера он будет только на заданном баре???

Если в заданное время уровень будет достигнут, то можно сделать выставление ордеров в заданное время, сопровождение - как захотите. Если же уроровень достигнут не будет, то ордера выставляться не будут - соответственно советник будет работать в холостую.
 
VladislavVG:
Если в заданное время уровень будет достигнут, то можно сделать выставление ордеров в заданное время, сопровождение - как захотите. Если же уроровень достигнут не будет, то ордера выставляться не будут - соответственно советник будет работать в холостую.
Да, это то, к чему я стремлюсь.... Если приведенный выше кусок кода не вызывает у Вас замечаний - я счастлив и крайне Вам признателен за оказанную помощь...