Mustafa99 Опубликовано 18 июня, 2021 Поделиться Доработка советников: общая тема Опубликовано 18 июня, 2021 Подскажите ,пожалуйста, есть советник ,когда то был установлен с маркета ,теперь не доступен для скачивания ,работает на любом счете в любом терминале в пределах одного ПК на котором был установлен! Как можно сделать чтоб он фурычил на других ПК ,возможно просто скопировать и перенести какие то dll-ки или не все так просто?) Ссылка на сообщение Поделиться на другие сайты More sharing options...
Ronnnnn Опубликовано 6 июля, 2021 Поделиться Доработка советников: общая тема Опубликовано 6 июля, 2021 Добрый день всем) Я только начинаю изучать программирование mql4, пишу советника на основе ADX, возникла проблемка: Когда adx выше 55, линия + больше линии -, то входим в позицию, но при этом когда мы зашли в позицию то можем выйти из рынка по стоп лос, но индикатор при том остается выше 55 и советник начинает снова открывать позицию. Как сделать так чтобы после первого входа, после выхода по стоп лос, советник снова ждал нового сигнала когда линия пересечет уровень 55? Советник во вложении, может код подскажите как это сделать или что почитать, хочу разобраться как это делается, чтобы знать в дальнейшем как применять на любом советнике. Буду очень благодарен помощи) Experts.rar Ссылка на сообщение Поделиться на другие сайты More sharing options...
Ronnnnn Опубликовано 6 июля, 2021 Поделиться Доработка советников: общая тема Опубликовано 6 июля, 2021 2 минуты назад, Ronnnnn сказал: Добрый день всем) Я только начинаю изучать программирование mql4, пишу советника на основе ADX, возникла проблемка: Когда adx выше 55, линия + больше линии -, то входим в позицию, но при этом когда мы зашли в позицию то можем выйти из рынка по стоп лос, но индикатор при том остается выше 55 и советник начинает снова открывать позицию. Как сделать так чтобы после первого входа, после выхода по стоп лос, советник снова ждал нового сигнала когда линия пересечет уровень 55? Советник во вложении, может код подскажите как это сделать или что почитать, хочу разобраться как это делается, чтобы знать в дальнейшем как применять на любом советнике. Буду очень благодарен помощи) Experts.rar 13 \u043a\u0411 · 0 загрузок Вот что получается сейчас Ссылка на сообщение Поделиться на другие сайты More sharing options...
usver73 Опубликовано 6 июля, 2021 Поделиться Доработка советников: общая тема Опубликовано 6 июля, 2021 У Вас противоречивое условие на вход. Сначала пишите, что 14 минут назад, Ronnnnn сказал: Когда adx выше 55, линия + больше линии -, то входим в позицию а ниже 16 минут назад, Ronnnnn сказал: Как сделать так чтобы ..... советник снова ждал нового сигнала когда линия пересечет уровень 55? Если хотите поймать именно пересечение, то смотрите значение индикатора на [2] и [1] свечах. Если на 2-й свече линия + ниже, на на 1-й свече выше, чем линия -, значит поступил сигнал Ссылка на сообщение Поделиться на другие сайты More sharing options...
Ronnnnn Опубликовано 6 июля, 2021 Поделиться Доработка советников: общая тема Опубликовано 6 июля, 2021 14 минут назад, usver73 сказал: У Вас противоречивое условие на вход. Сначала пишите, что а ниже Если хотите поймать именно пересечение, то смотрите значение индикатора на [2] и [1] свечах. Если на 2-й свече линия + ниже, на на 1-й свече выше, чем линия -, значит поступил сигнал Сделал как вы сказали, но советник по прежнему после вылета по стопу снова заходит в позицию, а мне нужно чтоб это совершалось 1 раз за данный сигнал индикатора т.е первый раз зашел, закрылся ордел и чтоб советник опять ждал нового сигнала когда индикатор уйдет ниже 55 и вернется уже на другой свечи. Надеюсь нормально описал)) Ссылка на сообщение Поделиться на другие сайты More sharing options...
Ronnnnn Опубликовано 6 июля, 2021 Поделиться Доработка советников: общая тема Опубликовано 6 июля, 2021 5 минут назад, Ronnnnn сказал: Сделал как вы сказали, но советник по прежнему после вылета по стопу снова заходит в позицию, а мне нужно чтоб это совершалось 1 раз за данный сигнал индикатора т.е первый раз зашел, закрылся ордел и чтоб советник опять ждал нового сигнала когда индикатор уйдет ниже 55 и вернется уже на другой свечи. Надеюсь нормально описал)) не правильный скрин прислал Изменено 6 июля, 2021 пользователем Ronnnnn Ссылка на сообщение Поделиться на другие сайты More sharing options...
usver73 Опубликовано 6 июля, 2021 Поделиться Доработка советников: общая тема Опубликовано 6 июля, 2021 16 минут назад, Ronnnnn сказал: Сделал как вы сказали сомневаюсь. Скиньте исправленную версию, вечером посмотрю код Ссылка на сообщение Поделиться на другие сайты More sharing options...
Ronnnnn Опубликовано 6 июля, 2021 Поделиться Доработка советников: общая тема Опубликовано 6 июля, 2021 7 минут назад, usver73 сказал: сомневаюсь. Скиньте исправленную версию, вечером посмотрю код Вот, буду благодарен Тест.rar Ссылка на сообщение Поделиться на другие сайты More sharing options...
Ronnnnn Опубликовано 6 июля, 2021 Поделиться Доработка советников: общая тема Опубликовано 6 июля, 2021 19 минут назад, Ronnnnn сказал: Вот, буду благодарен Тест.rar 13 \u043a\u0411 · 0 загрузок логика действий правильная, но т.к ордер слетает по стопу, то возможно советнику нужно запретить торговать на этом же баре, тогда он не откроет следующие ордера, и тогда по идее будет все норм, но как это сделать?))) Ссылка на сообщение Поделиться на другие сайты More sharing options...
Vadim_TM Опубликовано 6 июля, 2021 Поделиться Доработка советников: общая тема Опубликовано 6 июля, 2021 PERIOD_M5 на ваше усмотрение для селл && !CheckCloseOnCurBar(PERIOD_M5,Symbol(),OP_SELL) для бай && !CheckCloseOnCurBar(PERIOD_M5,Symbol(),OP_BUY) ************************************************************************* функция //+------------------------------------------------------------------+ //| Проверка закрытия позиции на текущей свече | //+------------------------------------------------------------------+ bool CheckCloseOnCurBar(int Per,string sym,int OrType) { for(int i = OrdersHistoryTotal()-1; i >= 0; i--) if(OrderSelect(i, SELECT_BY_POS, MODE_HISTORY)) { if(OrderCloseTime() < iTime(sym, Per, 0)) return(False); if(OrderSymbol() == sym && OrderMagicNumber() == Magic_Number && OrderCloseTime() > iTime(sym, Per, 0) && OrderType()==OrType) return(True); } return(False); } //+------------------------------------------------------------------+ Изменено 6 июля, 2021 пользователем Vadim_TM Ссылка на сообщение Поделиться на другие сайты More sharing options...
usver73 Опубликовано 6 июля, 2021 Поделиться Доработка советников: общая тема Опубликовано 6 июля, 2021 1 час назад, Ronnnnn сказал: логика действий правильная, но т.к ордер слетает по стопу, то возможно советнику нужно запретить торговать на этом же баре Если ордер закрывается по стопу на том же баре, что и открылся, то да, нужна проверка, о которой написал @Vadim_TM Ссылка на сообщение Поделиться на другие сайты More sharing options...
usver73 Опубликовано 6 июля, 2021 Поделиться Доработка советников: общая тема Опубликовано 6 июля, 2021 Тест_2.mq4 по логике пересечения АДХ уровня 55 вроде нормально. Вопрос по АДХ на Н1: смысл проверять значение на 0-й свече, если оно еще не стабилизировалось? Была ошибка в проверке нового бара. Компилятор явно писал, что expression has no effect По логике также не понял- зачем считать ТП, если при открытии ордера ставится ТП=0? В общем, если правильно понял, то код немного причесал- были лишние {}. Если все таки стопы будут короткие, то добавьте код проверки открытия на одной и той же свече 1 Ссылка на сообщение Поделиться на другие сайты More sharing options...
Ronnnnn Опубликовано 7 июля, 2021 Поделиться Доработка советников: общая тема Опубликовано 7 июля, 2021 Спасибо всем за помощь, очень помогли. Я код просто не чистил, как ковырялся изменял так все и оставил, поэтому там мусор был) Ссылка на сообщение Поделиться на другие сайты More sharing options...
Ronnnnn Опубликовано 7 июля, 2021 Поделиться Доработка советников: общая тема Опубликовано 7 июля, 2021 17 часов назад, usver73 сказал: Тест_2.mq4 по логике пересечения АДХ уровня 55 вроде нормально. Вопрос по АДХ на Н1: смысл проверять значение на 0-й свече, если оно еще не стабилизировалось? Была ошибка в проверке нового бара. Компилятор явно писал, что expression has no effect По логике также не понял- зачем считать ТП, если при открытии ордера ставится ТП=0? В общем, если правильно понял, то код немного причесал- были лишние {}. Если все таки стопы будут короткие, то добавьте код проверки открытия на одной и той же свече Иногда м5 противоречит по направлению тренду на н1, и из-за этого не правильно заходит, это редко происходит но бывает, поэтому сделал чтоб еще и на н1 проверял направление цены Ссылка на сообщение Поделиться на другие сайты More sharing options...
usver73 Опубликовано 7 июля, 2021 Поделиться Доработка советников: общая тема Опубликовано 7 июля, 2021 1 час назад, Ronnnnn сказал: Иногда м5 противоречит по направлению тренду на н1, и из-за этого не правильно заходи да я не про логику, а про то, что проверяют сигнал на 0-й свече крайне редко и осмысленно. В Вашем случае вряд ли это актуально Ссылка на сообщение Поделиться на другие сайты More sharing options...
Ronnnnn Опубликовано 7 июля, 2021 Поделиться Доработка советников: общая тема Опубликовано 7 июля, 2021 2 часа назад, usver73 сказал: да я не про логику, а про то, что проверяют сигнал на 0-й свече крайне редко и осмысленно. В Вашем случае вряд ли это актуально Кстати правильно подмечено, ранее я делал вход по 0 свече, просто не досмотрел этот момент, спасибо) Ссылка на сообщение Поделиться на другие сайты More sharing options...
Ronnnnn Опубликовано 8 июля, 2021 Поделиться Доработка советников: общая тема Опубликовано 8 июля, 2021 45 минут назад, Ronnnnn сказал: Всем доброго дня Немного переделал свой советник на Мартингейл, все работает вроде норм, но хочу добавить возможность в советник чтобы при достижении определенного числа колен ордеров (вынести этот параметр чтоб настраивать), все сделки закрывались. Посмотрел ютуб, поиска на сайта, но ничего подходящего не нашел, помогите пожалуйста)) советник во вложении Мартин тест.rar 2 \u043a\u0411 · 0 загрузок Друзья все нашел что нужно было, вопрос не актуален Ссылка на сообщение Поделиться на другие сайты More sharing options...
segaj Опубликовано 9 июля, 2021 Поделиться Доработка советников: общая тема Опубликовано 9 июля, 2021 Ребята-программисты, добавьте пожалуйста в приложенный индик возможность, чтобы он показывал стрелку на графике Н4, на М1-Н1 показывает, а выше не хочет. Mega trend.mq4 Ссылка на сообщение Поделиться на другие сайты More sharing options...
Rever27 Опубликовано 10 июля, 2021 Поделиться Доработка советников: общая тема Опубликовано 10 июля, 2021 В 09.07.2021 в 11:45, segaj сказал: а выше не хочет все он показывает. В коде нет привязки к какому либо ТФ для стрелок Спойлер 1 Ссылка на сообщение Поделиться на другие сайты More sharing options...
drobayura Опубликовано 14 июля, 2021 Поделиться Доработка советников: общая тема Опубликовано 14 июля, 2021 Ребята, прошу помощи с модификацией ордеров. При компиляции ошибок нет, но модификация по ТР не работает выдаёт ошибку 4108 и 4051. Код прилагается. High_Low.mq4 Изменено 15 июля, 2021 пользователем drobayura другой файл Ссылка на сообщение Поделиться на другие сайты More sharing options...
usver73 Опубликовано 14 июля, 2021 Поделиться Доработка советников: общая тема Опубликовано 14 июля, 2021 6 часов назад, drobayura сказал: Ребята, прошу помощи с модификацией ордеров. Вы в функции _OrdersModify() пытаетесь модифицировать закрытые (исторические) ордера... В этой же функции разберитесь с логикой (фигурными скобками) Ссылка на сообщение Поделиться на другие сайты More sharing options...
drobayura Опубликовано 14 июля, 2021 Поделиться Доработка советников: общая тема Опубликовано 14 июля, 2021 А как сделать что бы модифицировался самый убыточный рыночный ордер? Не поможете? Причём что бы ТР тралился в отрицательную зону. Изменено 14 июля, 2021 пользователем drobayura Ссылка на сообщение Поделиться на другие сайты More sharing options...
drobayura Опубликовано 14 июля, 2021 Поделиться Доработка советников: общая тема Опубликовано 14 июля, 2021 Маленько изменил. Не знаю правильно не правильно. Не работает. При компиляции ошибок нет. В журнале ошибка 4051 - Недопустимое значение параметра функции int init() { Comment (""); return(0); } void _OrdersModify(){ { bool m; double _profitByu=0.0, _profitSell=0.0; int i; for (i=OrdersHistoryTotal()-1; i>=0; i--){ if(OrderSelect(i,SELECT_BY_POS,MODE_HISTORY)){ if (OrderType()==OP_BUY && OrderProfit()>0) if (OrderProfit()>0) _profitByu += OrderProfit() + OrderSwap(); if (OrderProfit() < 0) _profitByu = 0; } if (OrderType()==OP_SELL && OrderProfit()>0) if (OrderProfit()>0) _profitSell += OrderProfit() + OrderSwap(); if (OrderProfit() < 0) _profitSell = 0; { Comment("Посчитаем профит:" ,"\n","Buy ", _profitByu, "\n"," Sell ", _profitSell); } for (i=OrdersTotal()-1; i>=0; i--){ if (OrderSelect(i, SELECT_BY_POS)==true) { if (OrderSymbol()==Symbol()) if (OrderType()==OP_BUY && OrdersTotal()>0){ while (IsTradeContextBusy()) Sleep(1000); RefreshRates();{ m=OrderModify(OrderTicket(),OrderOpenPrice(),OrderStopLoss(), NormalizeDouble(OrderOpenPrice() - _profitSell * _procent,Digits),OrderExpiration(),CLR_NONE); } if (OrderType()==OP_SELL && OrdersTotal()>0){ while (IsTradeContextBusy()) Sleep(1000); RefreshRates();{ m=OrderModify(OrderTicket(),OrderOpenPrice(),OrderStopLoss(), NormalizeDouble(OrderOpenPrice() + _profitByu * _procent,Digits),OrderExpiration(),CLR_NONE); } } } } } } } return; } //+------------------------------------------------------------------+ Ссылка на сообщение Поделиться на другие сайты More sharing options...
Rigal Опубликовано 14 июля, 2021 Поделиться Доработка советников: общая тема Опубликовано 14 июля, 2021 45 минут назад, drobayura сказал: Маленько изменил. Не знаю правильно не правильно. Не работает. При компиляции ошибок нет. В журнале ошибка 4051 - Недопустимое значение параметра функции int init() { Comment (""); return(0); } void _OrdersModify(){ { bool m; double _profitByu=0.0, _profitSell=0.0; int i; for (i=OrdersHistoryTotal()-1; i>=0; i--){ if(OrderSelect(i,SELECT_BY_POS,MODE_HISTORY)){ if (OrderType()==OP_BUY && OrderProfit()>0) if (OrderProfit()>0) _profitByu += OrderProfit() + OrderSwap(); if (OrderProfit() < 0) _profitByu = 0; } if (OrderType()==OP_SELL && OrderProfit()>0) if (OrderProfit()>0) _profitSell += OrderProfit() + OrderSwap(); if (OrderProfit() < 0) _profitSell = 0; { Comment("Посчитаем профит:" ,"\n","Buy ", _profitByu, "\n"," Sell ", _profitSell); } for (i=OrdersTotal()-1; i>=0; i--){ if (OrderSelect(i, SELECT_BY_POS)==true) { if (OrderSymbol()==Symbol()) if (OrderType()==OP_BUY && OrdersTotal()>0){ while (IsTradeContextBusy()) Sleep(1000); RefreshRates();{ m=OrderModify(OrderTicket(),OrderOpenPrice(),OrderStopLoss(), NormalizeDouble(OrderOpenPrice() - _profitSell * _procent,Digits),OrderExpiration(),CLR_NONE); } if (OrderType()==OP_SELL && OrdersTotal()>0){ while (IsTradeContextBusy()) Sleep(1000); RefreshRates();{ m=OrderModify(OrderTicket(),OrderOpenPrice(),OrderStopLoss(), NormalizeDouble(OrderOpenPrice() + _profitByu * _procent,Digits),OrderExpiration(),CLR_NONE); } } } } } } } return; } //+------------------------------------------------------------------+ Я не совсем понимаю, а что вы пытаетесь с ордером сделать? Вы берете каждый ордер на покупку и пытаетесь переставить тейки ниже цены на почему-то профит продаж, умноженный на процент. Профит, вообще говоря, в деньгах. А цена в... безразмерная величина Если вам хочется перевести прибыль/убыток в размерность цены, то нужно поделить сумму на цену тика (TICK_VALUE) и домножить на размер тик TICK_SIZE, который в пунктах - то есть нужно потом домножить еще и на пункт. Ну и нужно как-то проверять на близость к текущей цене закрытия: по меньшей мере тейк покупки не может быть ниже текущего бида. Я если быть точнее, то не может быть ближе, чем STOPLEVEL от текущего бида. И если он во FREEZELEVEL то модификации будут запрещены. 1 Ссылка на сообщение Поделиться на другие сайты More sharing options...
drobayura Опубликовано 15 июля, 2021 Поделиться Доработка советников: общая тема Опубликовано 15 июля, 2021 Идея в общем такая: От любого закрытого ордера с профитом берём скажем 30% и ТР убыточного ордера переносим в убыток и таким образом тралим его в убыток до закрытия (это своеобразный SL, только сначала берем прибыль потом возвращаем процент от этой прибыли. Система "сначала взял, потом отдал"). Уверен такого алгоритма нет нигде. Если открывать ордера на каждом баре на пробой хай, лоу, то берем всё движение минус процент, который возвращаем для закрытия самого убыточного ордера. Изменено 15 июля, 2021 пользователем drobayura Ссылка на сообщение Поделиться на другие сайты More sharing options...
Рекомендуемые сообщения
Для публикации сообщений создайте учётную запись или авторизуйтесь
Вы должны быть пользователем, чтобы оставить комментарий
Создать учетную запись
Зарегистрируйте новую учётную запись в нашем сообществе. Это очень просто!
Регистрация нового пользователяВойти
Уже есть аккаунт? Войти в систему.
Войти