Скорректируйте так:
//+------------------------------------------------------------------+ //| Обнаружение нового бара //+------------------------------------------------------------------+ bool NewBar(int tfNewBar) { //---- static datetime NewTime; // Время текущего бара bool NewBar=false; // Нового бара нет if( NewTime!=iTime(Symbol(),tfNewBar,0)) { NewTime=iTime(Symbol(),tfNewBar,0); // Теперь время такое NewBar=true; // Поймался новый бар } //---- return(NewBar); } //+------------------------------------------------------------------+ int start() { if(NewBar(tfNewBar)) { // тело эксперта ...
Не помню кто, из здешних, предложил так:
if (iVolume(Symb, PERIOD_M1, 0)< 2) { // тело }
Есс-но период - требуемый.
У меня работает
Не помню кто, из здешних, предложил так:
Есс-но период - требуемый.
У меня работает
Вариант, предложенный khorosh почему-то вообще не подаёт признаков жизни.
Версия hhohholl срабатывает, но советника хватает только на вывод алерта "Ордер не найден".
Ума не приложу, в чём ошибка. Вроде бы суть советника предельно проста=(((
Вариант, предложенный khorosh почему-то вообще не подаёт признаков жизни.
Версия hhohholl срабатывает, но советника хватает только на вывод алерта "Ордер не найден".
Ума не приложу, в чём ошибка. Вроде бы суть советника предельно проста=(((
Вариант от Хороша не работает, вероятно, потому, что Вы что-нибудь не так вставили.
Исправьте свой вариант:
bool New_Bar; void Fun_New_Bar() // Ф-ия обнаружения .. { // .. нового бара static datetime New_Time=0; // Время текущего бара New_Bar=false; // Нового бара нет if(New_Time!=Time[0]) // Сравниваем время { New_Time=Time[0]; // Теперь время такое New_Bar=true; // Поймался новый бар } } int start() { int i; string message; Fun_New_Bar(); if (New_Bar==false) // Если бар не новый.. return; // ..выходим if(New_Bar==true) {
Вариант, предложенный khorosh почему-то вообще не подаёт признаков жизни.
Версия hhohholl срабатывает, но советника хватает только на вывод алерта "Ордер не найден".
Ума не приложу, в чём ошибка. Вроде бы суть советника предельно проста=(((
Ищите причину в теле эксперта. Тикет у вас = 0, i = 0. Цикл перебора ордеров куда дели?
for(int i=1; i<=OrdersTotal(); i++) // Цикл перебора ордер {
- Бесплатные приложения для трейдинга
- 8 000+ сигналов для копирования
- Экономические новости для анализа финансовых рынков
Вы принимаете политику сайта и условия использования
Решил написать небольшой советник со следующим принципом действия.
При наличии отложенного ордера на открытии каждой последующей свечи советник перетаскивает цену открытия предстоящей позиции и стоп-лосс.
При наличии открытого ордера на октрытии каждой последующей свечи советник перетаскивает стоп-лосс.
Т.е. по сути это трейлинг-стоп, только срабатывает он ни на каждом тике, а только когда свеча сформирована и начала отрисовываться следующая.
Так вот, проблема в том, что алгоритм определения начала отрисовки новой свечи не работает. Что самое интересное - он взят из стандартного учебника по mql4 =)))
Буду очень признателен, если кто-нибудь поможет разобраться!