1. проверить по истории что сегодня уже открывали (OrderSelect, MODE_HISTORY)
или
2. Хранить переменную в которую будете заносить последнее время OrderSend
а могли бы чуть подробнее объяснить, а то все равно не совсем понятно,
в первом варианте, если я правильно понял, используем функцию OrderCloseTime()
получили переменную datetime, и как с помощью нее сделать проверку ???
P.S. плиз хелп, оч нужно ))))
в первом варианте, если я правильно понял, используем функцию OrderCloseTime()
получили переменную datetime, и как с помощью нее сделать проверку ???
P.S. плиз хелп, оч нужно ))))
6EDayTrader:
а могли бы чуть подробнее объяснить, а то все равно не совсем понятно,
в первом варианте, если я правильно понял, используем функцию OrderCloseTime()
получили переменную datetime, и как с помощью нее сделать проверку ???
P.S. плиз хелп, оч нужно ))))
а могли бы чуть подробнее объяснить, а то все равно не совсем понятно,
в первом варианте, если я правильно понял, используем функцию OrderCloseTime()
получили переменную datetime, и как с помощью нее сделать проверку ???
P.S. плиз хелп, оч нужно ))))
Почему OrderCloseTime()?
Условие ведь на открытие.
Дальше
string TimeToStr( | datetime value, int mode=TIME_DATE) |
два раза, на текущий момент и на время открытия последнего ордера нужного типа, и сравнить.
6EDayTrader:
Подскажите, как в советнике реализовать условие чтобы в день открывался один sell и один buy, не больше!
либо с возможностью задавать это количество во входных параметрах
Подскажите, как в советнике реализовать условие чтобы в день открывался один sell и один buy, не больше!
либо с возможностью задавать это количество во входных параметрах
if(NumberOfBarOpenLastPos("0", 1440, OP_BUY, MagicNumber)>0) { //открываем бай } if(NumberOfBarOpenLastPos("0", 1440, OP_SELL, MagicNumber)>0) { //открываем селл }Функцию возьмите у Кима.
Спасибо друзья, не ожидал на такие быстрые отклики на мою просьюу )))) всем СПАСИБО!
оба варианта интересны и заслуживают внимания, но я успел и сам найти третий способ ))) прикрутил. все работает )))
оба варианта интересны и заслуживают внимания, но я успел и сам найти третий способ ))) прикрутил. все работает )))
int start() { //---- string CTime = TimeToStr(TimeCurrent(),TIME_MINUTES); if (CTime == IB_Start) { Start_t = TimeCurrent(); } if (CTime == IBEnd) { End_t = TimeCurrent(); } // открытие и проверка SELL //=============================================================================================================== static bool was_closed = false; //флаг, показывающий был ли закрыт ордер на данном баре if(IsNewIB()==true) //начался новый бар - обнуляем флаг was_closed = false; if(was_closed == false) //флаг говорит нам, что ордер не был закрыт { for(int i=OrdersHistoryTotal()-1; i>=0; i--) { //перебираем ордера в истории, начиная с самого свежего OrderSelect(i, SELECT_BY_POS, MODE_HISTORY); if(OrderCloseTime()>=End_t && OrderType()==OP_SELL) //нашли ордер, который был закрыт на текущем баре { was_closed = true; //ставим флаг в режим: ордер был закрыт на текущем баре break; //выходим из цикла } } if(was_closed == false) //проверяем, что флаг не был изменён в цикле { Check_Sell(); //проверяем условие на вход } //иначе: ждём нового бара } // открытие и проверка BUY //=============================================================================================================== static bool was_closed_buy = false; //флаг, показывающий был ли закрыт ордер на данном баре if(IsNewIB_buy()==true) //начался новый бар - обнуляем флаг was_closed_buy = false; if(was_closed_buy == false) //флаг говорит нам, что ордер не был закрыт { for(int b=OrdersHistoryTotal()-1; b>=0; b--) { //перебираем ордера в истории, начиная с самого свежего OrderSelect(b, SELECT_BY_POS, MODE_HISTORY); if(OrderCloseTime()>=End_t && OrderType()==OP_BUY) //нашли ордер, который был закрыт на текущем баре { was_closed_buy = true; //ставим флаг в режим: ордер был закрыт на текущем баре break; //выходим из цикла } } if(was_closed_buy == false) //проверяем, что флаг не был изменён в цикле { Check_Buy(); //проверяем условие на вход } //иначе: ждём нового бара } //---- return(0); } //+------------------------------------------------------------------+ //==========================================================================// // функция проверки для SELL // //==========================================================================// bool IsNewIB() { static datetime BARflag = 0; datetime now = End_t ; if(BARflag < now) { BARflag = now; return(1); } else { return(0); } } //=========================================================================// // функция проверки для BUY // //=========================================================================// bool IsNewIB_buy() { static datetime BARflag_buy = 0; datetime now_buy = End_t ; if(BARflag_buy < now_buy) { BARflag_buy = now_buy; return(1); } else { return(0); } } //============================================================================
Вы упускаете торговые возможности:
- Бесплатные приложения для трейдинга
- 8 000+ сигналов для копирования
- Экономические новости для анализа финансовых рынков
Регистрация
Вход
Вы принимаете политику сайта и условия использования
Если у вас нет учетной записи, зарегистрируйтесь
либо с возможностью задавать это количество во входных параметрах