Господа! Прошу о помощи!
Задача заключается в том, чтобы запретить советнику торговать на определенном баре, если в этом баре произошло закрытие сделки.
if (OrderSelect(i-1,SELECT_BY_POS)==true)
{ ...
int x=(OrderClosePrice()/OrderClosePrice())*2;
if (x-1>=iBarShift(Symbol(),0,OrderCloseTime()))
{y=false;}
... }
Все было бы хорошо, если iBarshift мог возвращать смещение баров не только от OrderOpenTime, но и от OrderCloseTime. А так, получается, что эта схема не работает.
Подскажите, пожалуйста, либо как исправить схему, либо название функции типа iBarShift, только для OrderCloseTime. А еще лучше как запретить советнику торговать на определенном баре :))
Заранее СПАСИБО!!!
Да ему все равно - он работает от любого времени.
int iBarShift( string symbol, int timeframe, datetime time, bool exact=false) Поиск бара по времени. Функция возвращает смещение бара, которому принадлежит указанное время. Если для указанного времени бар отсутствует ("дыра" в истории), то функция возвращает, в зависимости от параметра exact, -1 или смещение ближайшего бара.
Мысль правильная - берете время закрытия бара и считаете его номер, то есть смещение от нулевого бара. Проверьте остальные расчеты под условным оператором.
datetime CT=OrderCloseTime();
int x=(OrderClosePrice()/OrderClosePrice())*2;
{y=false;} // не разрешаем торговлю
}
Далее я ввел функцию Alert (iBarShift("EUROUSD",0,CT));
Тестер открывает только одну сделку, после нее iBarShift остается равным нулю, соответственно торговать советник не будет. Не понимаю где ошибка...
Следующая функция вычисляет время открытия следующего бара в зависимости от текущего времени и от таймфрэйма без использования функций МТ4:
Просто дождитесь этого времени и торгуйте дальше !
datetime NextBar (datetime d, int TF) { return((d/TF/60+1)*TF*60); }
Спасибо большое за ответ!
Правда, я не очень понял что Вы подразумеваете под d и TF? Прокомментируете, пожалуйста. Буду Вам очень благодарен!
Но я тут еще на одну красивую версию натолкнулся:
int oldTime; int init(){ oldTime = Time[0]; return(0); } int start(){ if(oldTime != Time[0){ // first tick of new bar found // do something useful oldTime = Time[0]; return(0);
}
Спасибо большое за ответ!
Правда, я не очень понял что Вы подразумеваете под d и TF? Прокомментируете, пожалуйста. Буду Вам очень благодарен!
Но я тут еще на одну красивую версию натолкнулся:
}
А если учебник почитаете, - весь мир в ладони будет.
Нет, последняя версия, все-таки не совсем то..
Tara, я честно прочел учебник. Но подобного вопроса там не обсуждалось, а чтобы самому сообразить. то пока еще не хватает опыта программирования. Поэтому и спрашиваю на форуме. Мне кажется он для этого и создан.
Спасибо большое за ответ!
Правда, я не очень понял что Вы подразумеваете под d и TF? Прокомментируете, пожалуйста. Буду Вам очень благодарен!
d - текущее время закрытия ордера
TF - текущий таймфрэйм
Если опять что-то не понятно, пишите ! Поясню ...
d - текущее время закрытия ордера
TF - текущий таймфрэйм
Если опять что-то не понятно, пишите ! Поясню ...
Спасибо! Теперь все предельно ясно :)
Господа! Прошу о помощи!
Задача заключается в том, чтобы запретить советнику торговать на определенном баре, если в этом баре произошло закрытие сделки.
if (OrderSelect(i-1,SELECT_BY_POS)==true)
{ ...
int x=(OrderClosePrice()/OrderClosePrice())*2;
if (x-1>=iBarShift(Symbol(),0,OrderCloseTime()))
{y=false;}
... }
Все было бы хорошо, если iBarshift мог возвращать смещение баров не только от OrderOpenTime, но и от OrderCloseTime. А так, получается, что эта схема не работает.
Подскажите, пожалуйста, либо как исправить схему, либо название функции типа iBarShift, только для OrderCloseTime. А еще лучше как запретить советнику торговать на определенном баре :))
Заранее СПАСИБО!!!
- Бесплатные приложения для трейдинга
- 8 000+ сигналов для копирования
- Экономические новости для анализа финансовых рынков
Вы принимаете политику сайта и условия использования
Господа! Прошу о помощи!
Задача заключается в том, чтобы запретить советнику торговать на определенном баре, если в этом баре произошло закрытие сделки.
if (OrderSelect(i-1,SELECT_BY_POS)==true)
{ ...
int x=(OrderClosePrice()/OrderClosePrice())*2;
if (x-1>=iBarShift(Symbol(),0,OrderCloseTime()))
{y=false;}
... }
Все было бы хорошо, если iBarshift мог возвращать смещение баров не только от OrderOpenTime, но и от OrderCloseTime. А так, получается, что эта схема не работает.
Подскажите, пожалуйста, либо как исправить схему, либо название функции типа iBarShift, только для OrderCloseTime. А еще лучше как запретить советнику торговать на определенном баре :))
Заранее СПАСИБО!!!