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

 
VasiliKolchanov:
Ihor спасибо за ответ, только один вопрос, а это не будет оттяжкой действий, т.е. за время паузы будут накапливаться с каждым тиком алерты , а по истечению времени советник мне их всё равно выдаст (всё накопленное) ? Может звучит смешно, но уж извините новичка - учусь.

Не будет, т. к. дело до срабатывания алерта попросту не дойдет. Получите один алерт, а потом, через заданный период, еще один алерт и т. д.

 
Vitaly Muzichenko:

Вообще-то всё наоборот должно быть)

Спасибо!!!

 

Объясните что тут не так. Ставлю открытие ордера на дневной пробой по дневным свечкам. Т.е. в 00.00 открывается новая дневная свеча внутри предыдущей свечи. 



double open1, close1, open, close;

open1=iHigh(NULL,PERIOD_D1,1);

close1=iLow(NULL,PERIOD_D1,1);

open=iHigh(NULL,PERIOD_D1,0);

close=iLow(NULL,PERIOD_D1,0);


if(O(m)==false){ //если ордера нет

if(open1<Ask){

b(......);} //открытие ордера


if(close1>Ask){

s(.......);}}//открытие ордера



Время московское, ордер открывает внутри предыдущей свечи в 00.03, наблюдал ночью в 00.03 как сформировалась новая свеча, и он всё равно открыл ордер. Советник как будто не видит новой дневной свечки.

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

Если я включу в 06.00 советник, то всё норм, будет работать как положено, но не прикалывает то что до 06.00 бывают дневные пробои, и тогда у меня после 06.00 уже откроются ордера в не нужных местах. Проблема в разницах во времени я так понял у свечки дневной и времени москвы. ДЦ гранд капитал


Помогитеееее! пжлст

 
Evgeniy Oshurkevich: вы сами ответили на вопрос. Свечи рисуются по времени сервера. И ваше локальное с ним может не совпадать.

 Так что оставляйте сову на ночь, если нормально написана, то выставит вам позицию. Или высчитывайте свои свечи на интересующем вас промежутке времени.

 
Ihor Herasko:

Не будет, т. к. дело до срабатывания алерта попросту не дойдет. Получите один алерт, а потом, через заданный период, еще один алерт 

Спасибо !

 

Подскажите пожалуйста как поступить в ситуации когда у открытого ордера перенесённого на завтра, автоматически с открытием новой сессии  переноситься профит по заданным параметрам ? Вопрос один : как распознать , что наступила новая сессия ? Функция распознания нового бара в моей ситуации не подойдёт. Может кто знает как вернуть по отдельности год, месяц и  день открытия этого ордера, тогда бы проблема решилась.Остальное примерно представляю как делать.И ещё не знаю поможет мне это или нет подскажите в каком формате возвращает значение функция OrderOpenTime (год.месяц.день.час : мин : сек  ИЛИ  час : мин : сек.) ?

 
VasiliKolchanov:

Подскажите пожалуйста как поступить в ситуации когда у открытого ордера перенесённого на завтра, автоматически с открытием новой сессии  переноситься профит по заданным параметрам ? Вопрос один : как распознать , что наступила новая сессия ? Функция распознания нового бара в моей ситуации не подойдёт. Остальное примерно представляю как делать.

очевидно - нужна функция распознания новой сессии)

 
VasiliKolchanov:

Может кто знает как вернуть по отдельности год, месяц и  день открытия этого ордера, тогда бы проблема решилась.Остальное примерно представляю как делать.И ещё не знаю поможет мне это или нет подскажите в каком формате возвращает значение функция OrderOpenTime (год.месяц.день.час : мин : сек  ИЛИ  час : мин : сек.) ?

вот набросал и проверил скрипт, который проверит историю закрытых ордеров (у меня нет сейчас рыночных ордеров, переделайте под себя самостоятельно) и найдет последний закрытый ордер и выведет в журнал информацию о нем:

#property strict
//+------------------------------------------------------------------+
void OnStart()
  {
   int i,otype,k=OrdersHistoryTotal();
   string sy=Symbol();
   datetime oclose,t=0;
   for(i=0; i<k; i++) 
     {
      if(OrderSelect(i,SELECT_BY_POS,MODE_HISTORY)) 
        {
         otype    = OrderType();
         oclose   = OrderCloseTime();
         if(OrderSymbol()==sy)
           {
            if(otype==OP_BUY || otype==OP_SELL)
              {
               if(t<oclose)
                 {
                  t=oclose;
                 }
              }
           }
        }
     }
   Print("Последний ордер закрыт: ",TimeDay(t)," день, ",TimeHour(t),"час, ",TimeMinute(t)," минуты");
  }
//+------------------------------------------------------------------+

результат:

21:12:07.558 test EURUSD,H1: Последний ордер закрыт: 27 день, 21час, 17 минуты

 
Taras Slobodyanik:

очевидно - нужна функция распознания новой сессии)

А как она выглядит Taras ?
 
Igor Makanu:

вот набросал и проверил скрипт, который проверит историю закрытых ордеров (у меня нет сейчас рыночных ордеров, переделайте под себя самостоятельно) и найдет последний закрытый ордер и выведет в журнал информацию о нем:

результат:

21:12:07.558 test EURUSD,H1: Последний ордер закрыт: 27 день, 21час, 17 минуты

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