DIMICH55 Опубликовано 22 декабря, 2022 Поделиться Доработка советников: общая тема Опубликовано 22 декабря, 2022 52 минуты назад, Rigal сказал: Давайте так: форум - это место куда мы пришли поделиться и заработать вместе. Именно поэтому мы помогаем друг другу здесь. Спасибо! Я вас понял... Ситуация следующая. Есть советник (см. файл). Нужно его слегка доработать, правда, не знаю, возможна ли доработка. ТЗ выглядит так; 1. Вывести на график кнопку "Закрыть все ордера" 2. Предусмотреть выбор варианта усреднения (или через заданное количество свечей (по умолчанию 5) или через определенное количество пунктов. Как сейчас это делает советник, у меня отследить не получается. 3. Предусмотреть возможность остановки работы советника в том случае, если серия ордеров или все ордера закрылись в пятницу после 19-00 мск. 4. Самое сложное. Если закрывается серия ордеров, то в этом направлении ордер может открыться только после открытия противоположной сделки. То есть, если закрылась серия в селл, то сначала советник должен открыть ордер бай и только после этого может снова открыть селл. Я понимаю, что задание слишком обширное, но можно хотя бы пункты 1 и 3 реализовать... Буду благодарен. KE_BarsAndMA.mq4 1 Ссылка на сообщение Поделиться на другие сайты More sharing options...
Rigal Опубликовано 22 декабря, 2022 Поделиться Доработка советников: общая тема Опубликовано 22 декабря, 2022 1 час назад, DIMICH55 сказал: Спасибо! Я вас понял... Ситуация следующая. Есть советник (см. файл). Нужно его слегка доработать, правда, не знаю, возможна ли доработка. ТЗ выглядит так; 1. Вывести на график кнопку "Закрыть все ордера" 2. Предусмотреть выбор варианта усреднения (или через заданное количество свечей (по умолчанию 5) или через определенное количество пунктов. Как сейчас это делает советник, у меня отследить не получается. 3. Предусмотреть возможность остановки работы советника в том случае, если серия ордеров или все ордера закрылись в пятницу после 19-00 мск. 4. Самое сложное. Если закрывается серия ордеров, то в этом направлении ордер может открыться только после открытия противоположной сделки. То есть, если закрылась серия в селл, то сначала советник должен открыть ордер бай и только после этого может снова открыть селл. Я понимаю, что задание слишком обширное, но можно хотя бы пункты 1 и 3 реализовать... Буду благодарен. KE_BarsAndMA.mq4 54 \u043a\u0411 · 0 загрузок Я гляну в код Уточню по четвертому пункту: принципиально ли, что закрыта была именно "серия" ордеров? Могу я перефразировать, как: 4. Первый ордер в продажу может открыться только если последний открытый ордер был покупкой, в покупку - только если последняя открытая сделка была продажей ? Изменено 22 декабря, 2022 пользователем Rigal 1 Ссылка на сообщение Поделиться на другие сайты More sharing options...
Rigal Опубликовано 22 декабря, 2022 Поделиться Доработка советников: общая тема Опубликовано 22 декабря, 2022 1 час назад, DIMICH55 сказал: 3. Предусмотреть возможность остановки работы советника в том случае, если серия ордеров или все ордера закрылись в пятницу после 19-00 мск. остановка до понедельника, или совсем? 1 Ссылка на сообщение Поделиться на другие сайты More sharing options...
DIMICH55 Опубликовано 22 декабря, 2022 Поделиться Доработка советников: общая тема Опубликовано 22 декабря, 2022 59 минут назад, Rigal сказал: остановка до понедельника, или совсем? До понедельника до открытия торгов Ссылка на сообщение Поделиться на другие сайты More sharing options...
DIMICH55 Опубликовано 22 декабря, 2022 Поделиться Доработка советников: общая тема Опубликовано 22 декабря, 2022 1 час назад, Rigal сказал: Я гляну в код Уточню по четвертому пункту: принципиально ли, что закрыта была именно "серия" ордеров? Могу я перефразировать, как: 4. Первый ордер в продажу может открыться только если последний открытый ордер был покупкой, в покупку - только если последняя открытая сделка была продажей ? Нет! Именно серия ордеров. Если закрылся к примеру, одиночный ордер селл, то допускается, что откроется снова ордер селл. Ссылка на сообщение Поделиться на другие сайты More sharing options...
DIMICH55 Опубликовано 22 декабря, 2022 Поделиться Доработка советников: общая тема Опубликовано 22 декабря, 2022 Там есть еще один момент, который меня волнует. К примеру, была открыта серия из 5-ти ордеров селл и 5-ти ордеров бай (по умолчанию это максимальное число усреднений). Закрылась к примеру серия в селл. Должен открыться ордер бай. Но их уже открыто максимальное количество. Надо сделать так, чтобы новый ордер бай, к уже открытым не имел никакого отношения и начиная с него может открыться еще 5 ордеров в бай. (Не знаю, понятно ли объяснил) Ссылка на сообщение Поделиться на другие сайты More sharing options...
Rigal Опубликовано 22 декабря, 2022 Поделиться Доработка советников: общая тема Опубликовано 22 декабря, 2022 15 минут назад, DIMICH55 сказал: Нет! Именно серия ордеров. Если закрылся к примеру, одиночный ордер селл, то допускается, что откроется снова ордер селл. два - это серия? Ссылка на сообщение Поделиться на другие сайты More sharing options...
Antoxa0059 Опубликовано 22 декабря, 2022 Поделиться Доработка советников: общая тема Опубликовано 22 декабря, 2022 22 часа назад, Rigal сказал: Сейчас бОльшая часть мудрености кода МТ4 решается библиотекой от сабера, так что работы обычно немного. Делитесь результатами - переписать найдется, кому. Не могли бы Вы поделиться или дать напутствия на поиски библиотеки от сабера? Ссылка на сообщение Поделиться на другие сайты More sharing options...
DIMICH55 Опубликовано 22 декабря, 2022 Поделиться Доработка советников: общая тема Опубликовано 22 декабря, 2022 2 минуты назад, Rigal сказал: два - это серия? Конечно! Два это серия. Все что больше одного - серия. Ссылка на сообщение Поделиться на другие сайты More sharing options...
Rigal Опубликовано 22 декабря, 2022 Поделиться Доработка советников: общая тема Опубликовано 22 декабря, 2022 3 часа назад, DIMICH55 сказал: 2. Предусмотреть выбор варианта усреднения (или через заданное количество свечей (по умолчанию 5) или через определенное количество пунктов. Как сейчас это делает советник, у меня отследить не получается. Советник сейчас позволяет задать шаг усреднения в пятизначных пунктах (не менее, чем Х) и в барах (не менее, чем Y). input int MartinStepBars = 5; // Шаг усреднения в барах input int MartinPips = 250; // Величина шага в пунктах, не менее Это суперсет того, что вы хотите от логики: - если задать MartinPips = 0, будет контролироваться отступ только в барах. Задав отрицательное число, можно позволить советнику открывать "усреднения" позиций в профите - то, что обычно называется доливкой по тренду - если задать MartinStepBars = 0, будет контролироваться отступ только в пипсах. - можно задать оба, тогда получится не "или", а "и" Так что пункт 2 я игнорирую 1 Ссылка на сообщение Поделиться на другие сайты More sharing options...
DIMICH55 Опубликовано 22 декабря, 2022 Поделиться Доработка советников: общая тема Опубликовано 22 декабря, 2022 1 минуту назад, Rigal сказал: Советник сейчас позволяет задать шаг усреднения в пятизначных пунктах (не менее, чем Х) и в барах (не менее, чем Y). input int MartinStepBars = 5; // Шаг усреднения в барах input int MartinPips = 250; // Величина шага в пунктах, не менее Это суперсет того, что вы хотите от логики: - если задать MartinPips = 0, будет контролироваться отступ только в барах. Задав отрицательное число, можно позволить советнику открывать "усреднения" позиций в профите - то, что обычно называется доливкой по тренду - если задать MartinStepBars = 0, будет контролироваться отступ только в пипсах. - можно задать оба, тогда получится не "или", а "и" Так что пункт 2 я игнорирую Понятно. Спасибо за разъяснение... Я эти тонкости не знал Ссылка на сообщение Поделиться на другие сайты More sharing options...
Rigal Опубликовано 22 декабря, 2022 Поделиться Доработка советников: общая тема Опубликовано 22 декабря, 2022 В советнике предусмотрена опция CloseOnReverce. При включении этой опции, он по сигналу в покупку закроет все продажи. В этой связи вопрос: если он закрыл серию продаж и открыл покупку - значит ли это, что он может открывать снова продажи, согласно требованиям пункта 4? Формально покупка была открыта... 1 Ссылка на сообщение Поделиться на другие сайты More sharing options...
DIMICH55 Опубликовано 22 декабря, 2022 Поделиться Доработка советников: общая тема Опубликовано 22 декабря, 2022 35 минут назад, Rigal сказал: В советнике предусмотрена опция CloseOnReverce. При включении этой опции, он по сигналу в покупку закроет все продажи. В этой связи вопрос: если он закрыл серию продаж и открыл покупку - значит ли это, что он может открывать снова продажи, согласно требованиям пункта 4? Формально покупка была открыта... По моим наблюдениям на данный момент он торгует одновременно в обе стороны и не закрывает все сделки при наличие противоположного сигнала. Если же серия продаж закрылась по тейку и открылся ордер на покупку, то в дальнейшем советник может снова открыть продажи. То же самое касается и покупок. Изменено 22 декабря, 2022 пользователем DIMICH55 Ссылка на сообщение Поделиться на другие сайты More sharing options...
DIMICH55 Опубликовано 22 декабря, 2022 Поделиться Доработка советников: общая тема Опубликовано 22 декабря, 2022 39 минут назад, Rigal сказал: В советнике предусмотрена опция CloseOnReverce. При включении этой опции, он по сигналу в покупку закроет все продажи. Я понял о чем вы. Просто я этой функцией не пользуюсь. При ее включении результаты тестирования неудовлетворительные. Возможно, я мало экспериментировал с настройками, но результат мне не понравился. Ссылка на сообщение Поделиться на другие сайты More sharing options...
Rigal Опубликовано 22 декабря, 2022 Поделиться Доработка советников: общая тема Опубликовано 22 декабря, 2022 Добавил два параметра в конце списка. Один - час "приостановки" в пятницу. Не будут стартовать новые серии после этого часа и до старта сессии после выходных Второй - включение описанного в п.4 фильтра. Добавлена кнопка на график, закроет все ордера данного сета (и перестанет торговать). Для продолжения торговли нужно отжать кнопку. Пробуем, делимся результатами. UPD: перезалил файл, была опечатка KE_BarsAndMA-modR-1.0.mq4 Изменено 22 декабря, 2022 пользователем Rigal 1 Ссылка на сообщение Поделиться на другие сайты More sharing options...
DIMICH55 Опубликовано 22 декабря, 2022 Поделиться Доработка советников: общая тема Опубликовано 22 декабря, 2022 6 минут назад, Rigal сказал: Добавил два параметра в конце списка. Один - час "приостановки" в пятницу. Не будут стартовать новые серии после этого часа и до старта сессии после выходных Второй - включение описанного в п.4 фильтра. Добавлена кнопка на график, закроет все ордера данного сета (и перестанет торговать). Для продолжения торговли нужно отжать кнопку. Пробуем, делимся результатами. KE_BarsAndMA-modR-1.0.mq4 59 \u043a\u0411 · 0 загрузок Спасибо! Сейчас уже поздно тестировать. Надо же на более продолжительном периоде чем 1 месяц это делать. Как только проведу выложу результат. Ссылка на сообщение Поделиться на другие сайты More sharing options...
DIMICH55 Опубликовано 22 декабря, 2022 Поделиться Доработка советников: общая тема Опубликовано 22 декабря, 2022 Немного прогнал. Первое что явно бросается в глаза, так это рост нагрузки на депозит в два раза. Если в исходном варианте, открываемых ордеров в продажу и покупку было практически поровну, то в новом, после закрытия серии, к примеру продаж, образуется две серии ордеров в покупку. Естественно маржа стремительно растет, что очень плохо. В исходнике продажи и покупки взаимно "гасились"... Ссылка на сообщение Поделиться на другие сайты More sharing options...
DIMICH55 Опубликовано 23 декабря, 2022 Поделиться Доработка советников: общая тема Опубликовано 23 декабря, 2022 В общем, эксперимент по модификации советника не удался. Точнее, задумка сработала не совсем так, как я рассчитывал. Как уже заметил выше, увеличивается нагрузка на депозит после закрытия серии сделок и открытии противоположного ордера. Если в "оригинале" советник открывал ордера по типу локирования, то в модификации это практически не случается и на фоне этого появляются две независящих друг от друга серии ордеров. Теоретически это не так уж плохо. При откате можно будет закрыть обе серии и выйти в ноль или даже в плюс. Проблема в том, что слив может случится раньше. Как никак робот все же принадлежит к семейству "мартышек", хоть и может работать в относительно мягком режиме. Что еще. На длинных интервалах он работать точно не будет. Это болезнь всех "мартышек". На коротких он выглядит довольно неплохо и может даже удвоить депозит за месяц. Но есть оговорка. Месяц месяцу рознь. Что еще лучший результат советник показал на паре евро/франк. Фунт/франк тоже заслуживает внимание, но он более волатилен, что для "мартина" не очень хорошо. Буду дальше крутить настройки. Может что найду. Пока что выкладываю месячный тест. Понятно, что это не показатель, но все же. Прибыль в конце концов надо выводить...Особенно с счетов, где работает советник на основе мартингейла. Ссылка на сообщение Поделиться на другие сайты More sharing options...
Rigal Опубликовано 23 декабря, 2022 Поделиться Доработка советников: общая тема Опубликовано 23 декабря, 2022 Не знаю, как там за месяц (и не хочу спорить о том, есть ли смысл в тестах за месяц), но на глобальном уровне есть явно положительные изменения. Вот, например, график теста USDJPY на часовом графике с настройками по умолчанию и включенной фильтрацией противоположными входами с 2010 года: Спойлер Кочерга в конце, понятно, но: вполне себе собираются в единую линию графики средств и баланса. А вот тот же сет без фильтрации: Спойлер Нагрузка на счет, может, ниже местами - но он никогда не подтягивает средства к балансу. Безнадежен 1 Ссылка на сообщение Поделиться на другие сайты More sharing options...
Antoxa0059 Опубликовано 23 декабря, 2022 Поделиться Доработка советников: общая тема Опубликовано 23 декабря, 2022 20 часов назад, Antoxa0059 сказал: Не могли бы Вы поделиться или дать напутствия на поиски библиотеки от сабера? @Rigal Изменено 23 декабря, 2022 пользователем Antoxa0059 Ссылка на сообщение Поделиться на другие сайты More sharing options...
nba31 Опубликовано 23 декабря, 2022 Поделиться Доработка советников: общая тема Опубликовано 23 декабря, 2022 6 минут назад, Antoxa0059 сказал: @Rigal Ептель, а Гугл уже тоже заблокировали???!!!! https://www.mql5.com/en/code/16006 2 Ссылка на сообщение Поделиться на другие сайты More sharing options...
Rigal Опубликовано 23 декабря, 2022 Поделиться Доработка советников: общая тема Опубликовано 23 декабря, 2022 14 часов назад, DIMICH55 сказал: В общем, эксперимент по модификации советника не удался. Точнее, задумка сработала не совсем так, как я рассчитывал. Как уже заметил выше, увеличивается нагрузка на депозит после закрытия серии сделок и открытии противоположного ордера. Если в "оригинале" советник открывал ордера по типу локирования, то в модификации это практически не случается и на фоне этого появляются две независящих друг от друга серии ордеров. Теоретически это не так уж плохо. При откате можно будет закрыть обе серии и выйти в ноль или даже в плюс. Проблема в том, что слив может случится раньше. Как никак робот все же принадлежит к семейству "мартышек", хоть и может работать в относительно мягком режиме. Что еще. На длинных интервалах он работать точно не будет. Это болезнь всех "мартышек". На коротких он выглядит довольно неплохо и может даже удвоить депозит за месяц. Но есть оговорка. Месяц месяцу рознь. Что еще лучший результат советник показал на паре евро/франк. Фунт/франк тоже заслуживает внимание, но он более волатилен, что для "мартина" не очень хорошо. Буду дальше крутить настройки. Может что найду. Пока что выкладываю месячный тест. Понятно, что это не показатель, но все же. Прибыль в конце концов надо выводить...Особенно с счетов, где работает советник на основе мартингейла. я немного самодеятельности проявил и заменил сравнительно бестолковый логический параметр CloseOnReverce на целочисленный: CloseOnReverseProfitPips Это минимальный профит в пятизначных пунктах, который будет закрываться по обратному сигналу. Это позволяет, с одной стороны, не игнорировать обратный сигнал, а с другой - не закрывать крупные убытки, достраивать сеткой до состояния, когда убыток некрупный. Интересные результаты для значений меньше нуля. Скажем, -50 пятизначных. Дальше нужно смотреть, каких колен и сколько ему позволять, на каком ТФ и с каким периодом машки. KE_BarsAndMA-modR-1.1.mq4 1 1 Ссылка на сообщение Поделиться на другие сайты More sharing options...
drobayura Опубликовано 27 декабря, 2022 Поделиться Доработка советников: общая тема Опубликовано 27 декабря, 2022 Ребята, подскажите, почему на реале советник пропускает сигналы? В тестере и на демо отрабатывает четко все сигналы. Вот КОД: //+------------------------------------------------------------------+ //| Подсчет ордеров по типу | //+------------------------------------------------------------------+ int CountOrders(int type=-1) { int count=0; for(int i=OrdersTotal()-1; i>=0; i--) { if(OrderSelect(i,SELECT_BY_POS,MODE_TRADES)) { if(OrderSymbol()==Symbol() && OrderMagicNumber()==magic) { if(OrderType()==type || type==-1) count++; } } } return(count); } //+------------------------------------------------------------------+ //| Check for open order conditions | //+------------------------------------------------------------------+ void OnTick() { double Lo = NormalizeDouble(iLow(_Symbol, _Period, 1), Digits); double H = NormalizeDouble(iHigh(_Symbol, _Period, 1), Digits); double Cl = NormalizeDouble(iClose(_Symbol, _Period, 1), Digits); double Op = NormalizeDouble(iOpen(_Symbol, _Period, 1), Digits); double TP = H - Lo; int r=0; CountOrders(); if(Op < Cl && CountOrders(OP_BUY) < 1) { while (IsTradeContextBusy()) Sleep(3000); RefreshRates(); r = OrderSend(Symbol(), OP_BUY, NormalizeDouble(lot, 2), H, 5, Lo, //SL NormalizeDouble(H + TP, Digits)+5*Point, //TP "HIGH_LOW", magic, 0, Blue); // BUY Sleep(3000); RefreshRates(); } else if(Op > Cl && CountOrders(OP_SELL) < 1) { while (IsTradeContextBusy()) Sleep(3000); RefreshRates(); r = OrderSend(Symbol(), OP_SELL, NormalizeDouble(lot, 2), Lo, 5, H, //SL NormalizeDouble(Lo - TP, Digits)-5*Point, //TP "HIGH_LOW", magic, 0, Red); // SELL Sleep(3000); RefreshRates(); } } //+------------------------------------------------------------------+ Ссылка на сообщение Поделиться на другие сайты More sharing options...
Rigal Опубликовано 27 декабря, 2022 Поделиться Доработка советников: общая тема Опубликовано 27 декабря, 2022 3 часа назад, drobayura сказал: Ребята, подскажите, почему на реале советник пропускает сигналы? В тестере и на демо отрабатывает четко все сигналы. Вот КОД: //+------------------------------------------------------------------+ //| Подсчет ордеров по типу | //+------------------------------------------------------------------+ int CountOrders(int type=-1) { int count=0; for(int i=OrdersTotal()-1; i>=0; i--) { if(OrderSelect(i,SELECT_BY_POS,MODE_TRADES)) { if(OrderSymbol()==Symbol() && OrderMagicNumber()==magic) { if(OrderType()==type || type==-1) count++; } } } return(count); } //+------------------------------------------------------------------+ //| Check for open order conditions | //+------------------------------------------------------------------+ void OnTick() { double Lo = NormalizeDouble(iLow(_Symbol, _Period, 1), Digits); double H = NormalizeDouble(iHigh(_Symbol, _Period, 1), Digits); double Cl = NormalizeDouble(iClose(_Symbol, _Period, 1), Digits); double Op = NormalizeDouble(iOpen(_Symbol, _Period, 1), Digits); double TP = H - Lo; int r=0; CountOrders(); if(Op < Cl && CountOrders(OP_BUY) < 1) { while (IsTradeContextBusy()) Sleep(3000); RefreshRates(); r = OrderSend(Symbol(), OP_BUY, NormalizeDouble(lot, 2), H, 5, Lo, //SL NormalizeDouble(H + TP, Digits)+5*Point, //TP "HIGH_LOW", magic, 0, Blue); // BUY Sleep(3000); RefreshRates(); } else if(Op > Cl && CountOrders(OP_SELL) < 1) { while (IsTradeContextBusy()) Sleep(3000); RefreshRates(); r = OrderSend(Symbol(), OP_SELL, NormalizeDouble(lot, 2), Lo, 5, H, //SL NormalizeDouble(Lo - TP, Digits)-5*Point, //TP "HIGH_LOW", magic, 0, Red); // SELL Sleep(3000); RefreshRates(); } } //+------------------------------------------------------------------+ Не вполне понятно, что означает "пропускает сигналы" и "отрабатывает четко". Как вы определяете, что вот он, сигнал, который советник пропустил? Приведенный код пытается открывать по high и low, вместо bid и ask Ссылка на сообщение Поделиться на другие сайты More sharing options...
drobayura Опубликовано 28 декабря, 2022 Поделиться Доработка советников: общая тема Опубликовано 28 декабря, 2022 12 часов назад, Rigal сказал: Не вполне понятно, что означает "пропускает сигналы" и "отрабатывает четко". Как вы определяете, что вот он, сигнал, который советник пропустил? Приведенный код пытается открывать по high и low, вместо bid и ask. Да это и есть цена входа high в BUY и low в SELL. ... "пропускает сигналы" - не открывает ордер на реальном счете. ..."отрабатывает четко" а на демо счете открывает ордера по high и low ценам свечи. Ссылка на сообщение Поделиться на другие сайты More sharing options...
Рекомендуемые сообщения
Для публикации сообщений создайте учётную запись или авторизуйтесь
Вы должны быть пользователем, чтобы оставить комментарий
Создать учетную запись
Зарегистрируйте новую учётную запись в нашем сообществе. Это очень просто!
Регистрация нового пользователяВойти
Уже есть аккаунт? Войти в систему.
Войти