- Пользовательские индюки
- как нарисовать прямоугольник...
- Как узнать время последнего закрытого ордера из истории (в эксперте для META TRADER 4) ?
Время открытия текущего бара плюс Period()*60, получаем закрытие текущего=открытие следующего.
Еще плюс Period()*60, получаем закрытие следующего.
Потом проверяем текущее время, и если оно вне диапазона - не торгуем.
новая тема - продолжение предыдущей, как я понимаю? https://www.mql5.com/ru/forum/127861
Время открытия текущего бара плюс Period()*60, получаем закрытие текущего=открытие следующего.
Еще плюс Period()*60, получаем закрытие следующего.
Потом проверяем текущее время, и если оно вне диапазона - не торгуем.
Таким образом? И, наверное, если текущее время в диапазоне - то торгуем?
datetime PB = Time[0]+Period()*60; datetime PE = PB+Period()*60; if (TimeCurrent()>PB && TimeCurrent()<PE) { }
понимаете не правильно.....
datetime PB = Time[0]+Period()*60; datetime PE = PB+Period()*60; if (TimeCurrent()>PB && TimeCurrent()<PE) { }
Как можно торговать в будущем периоде?
В первом посте я описал задачу...
Если у вас есть желание поправить написанный мною кусок кода - буду крайне признателен... (Код отражает мое понимание полученного ранее совета; вполне возможно, что он неправильный, для этого я и прошу его посмотреть)
Если у вас есть желание просто поумничать - можете поумничать.....
В первом посте я описал задачу...
Если у вас есть желание поправить написанный мною кусок кода - буду крайне признателен... (Код отражает мое понимание полученного ранее совета; вполне возможно, что он неправильный, для этого я и прошу его посмотреть)
Если у вас есть желание просто поумничать - можете поумничать.....
Написанный Вами код соответствует описанной Вами в первом посте задачи. В связи с чем вопрос к Вам как постановщику задачи: "Как можно совершить торговую операцию на следующем баре?" У бара, следующего за текущим (нулевым) баром нет параметров открытия, закрытия и пр., как нет и самого бара.
Вывод: разберитесь в своём "понимании полученного ранее совета"
С точки зрения mql, если (i) - некоторый временной период, то следующий период по времени - (i-1). Ограничение (i>=0), т.к. (i=0) - это текущее время.
Написанный Вами код соответствует описанной Вами в первом посте задачи. В связи с чем вопрос к Вам как постановщику задачи: "Как можно совершить торговую операцию на следующем баре?" У бара, следующего за текущим (нулевым) баром нет параметров открытия, закрытия и пр., как нет и самого бара.
Вывод: разберитесь в своём "понимании полученного ранее совета"
Под "следующим баром" имеется в виду бар, после бара, на котором советник подключен к чарту. По окончании бара, на котором советник подключен к чарту, открывается новый бар, и именно на нем советник должен\может совершить торговую операцию - не раньше и не позже....
Если Вы намекаете, что при открытии нового бара, переменные datetime PB = Time[0]+Period()*60; и datetime PE = PB+Period()*60; пересчитаются и условие станет заведомо невыполнимым, то я это отчасти и сам подозреваю.... Именно поэтому, я и выложил код для замечаний....
Уточню вопрос: как можно сделать так, чтобы переменные datetime PB и datetime PE, будучи высчитанными на момент присоединения советника к чарту, больше не пересчитывались?
Уточню вопрос: как можно сделать так, чтобы переменные datetime PB и datetime PE, будучи высчитанными на момент присоединения советника к чарту, больше не пересчитывались?
Можно, например, так:
int start() { static datetime expStartTime= 0; static datetime expStopTime = 0; if(expStartTime==0) { expStartTime = Time[0]+Period()*60; expStopTime = expStartTime+Period()*60; } datetime curTime = TimeCurrent(); if(curTime<expStartTime) return(0); if(curTime>expStopTime) { if(CheckOpenPositionCount()>0) { if(CheckforClose()>0) { if(CheckOpenPositionCount()>0) CheckforTral(); } else CheckforTral(); } return(0); } /* ................................................. Y code heare ................................................. */ return(0); }
Удачи.
Можно, например, так:
Удачи.
Немного не понятно это:
if(curTime<expStartTime) return(0); if(curTime>expStopTime) // если время работы советника завершено..... { if(CheckOpenPositionCount()>0) // проверка на открытые позиции ??????? - а зачем? { if(CheckforClose()>0) // проверка на закрытие ??????? - что это? { if(CheckOpenPositionCount()>0) CheckforTral(); } else CheckforTral(); } return(0); } /* ................................................. Y code heare ................................................. */ return(0); }
Может для моего условия можно записать так:
if(curTime<expStartTime) return(0); if(curTime>expStopTime) return(0); if(curTime>=expStartTime && curTime<expStopTime)P.S. Хочу поблагодарить за конструктивное участие.....
- Бесплатные приложения для трейдинга
- 8 000+ сигналов для копирования
- Экономические новости для анализа финансовых рынков
Вы принимаете политику сайта и условия использования