#2154
52 минуты назад, Rigal сказал:

Давайте так: форум - это место куда мы пришли поделиться и заработать вместе.

Именно поэтому мы помогаем друг другу здесь.

Спасибо! Я вас  понял... Ситуация  следующая. Есть советник (см. файл). Нужно  его слегка  доработать, правда, не знаю, возможна  ли доработка. ТЗ выглядит так;

 

1. Вывести на  график  кнопку "Закрыть все ордера"

2. Предусмотреть выбор варианта  усреднения (или через заданное количество свечей (по умолчанию 5) или через определенное  количество пунктов. Как сейчас  это делает советник, у  меня отследить не получается.

3. Предусмотреть возможность  остановки работы советника в том случае, если серия ордеров или все ордера закрылись в  пятницу после 19-00 мск.

4. Самое  сложное. Если закрывается серия ордеров, то в этом направлении ордер может открыться  только после  открытия  противоположной  сделки. То есть, если  закрылась серия в селл, то сначала советник  должен открыть  ордер бай  и только после  этого может  снова  открыть селл.

 

Я понимаю, что задание слишком обширное, но можно хотя бы пункты 1 и 3  реализовать... Буду  благодарен.

KE_BarsAndMA.mq412 скач.

#2155
1 час назад, DIMICH55 сказал:

Спасибо! Я вас  понял... Ситуация  следующая. Есть советник (см. файл). Нужно  его слегка  доработать, правда, не знаю, возможна  ли доработка. ТЗ выглядит так;

 

1. Вывести на  график  кнопку "Закрыть все ордера"

2. Предусмотреть выбор варианта  усреднения (или через заданное количество свечей (по умолчанию 5) или через определенное  количество пунктов. Как сейчас  это делает советник, у  меня отследить не получается.

3. Предусмотреть возможность  остановки работы советника в том случае, если серия ордеров или все ордера закрылись в  пятницу после 19-00 мск.

4. Самое  сложное. Если закрывается серия ордеров, то в этом направлении ордер может открыться  только после  открытия  противоположной  сделки. То есть, если  закрылась серия в селл, то сначала советник  должен открыть  ордер бай  и только после  этого может  снова  открыть селл.

 

Я понимаю, что задание слишком обширное, но можно хотя бы пункты 1 и 3  реализовать... Буду  благодарен.

KE_BarsAndMA.mq4 54 \u043a\u0411 · 0 загрузок

Я гляну в код

Уточню по четвертому пункту: принципиально ли, что закрыта была именно "серия" ордеров?

Могу я перефразировать, как:

4. Первый ордер в продажу может открыться только если последний открытый ордер был покупкой, в покупку - только если последняя открытая сделка была продажей

?

Изменено 22 декабря, 2022 пользователем Rigal

#2156
1 час назад, DIMICH55 сказал:

3. Предусмотреть возможность  остановки работы советника в том случае, если серия ордеров или все ордера закрылись в  пятницу после 19-00 мск.

остановка до понедельника, или совсем?

#2157
59 минут назад, Rigal сказал:

остановка до понедельника, или совсем?

До понедельника  до  открытия  торгов

#2158
1 час назад, Rigal сказал:

Я гляну в код

Уточню по четвертому пункту: принципиально ли, что закрыта была именно "серия" ордеров?

Могу я перефразировать, как:

4. Первый ордер в продажу может открыться только если последний открытый ордер был покупкой, в покупку - только если последняя открытая сделка была продажей

?

Нет! Именно серия  ордеров. Если  закрылся к  примеру, одиночный ордер селл, то допускается, что откроется  снова  ордер селл. 

#2159

Там  есть еще  один  момент, который  меня волнует. К  примеру, была открыта серия  из 5-ти ордеров  селл и 5-ти  ордеров бай (по умолчанию это максимальное  число усреднений). Закрылась к  примеру серия в селл. Должен открыться  ордер бай. Но их уже открыто максимальное количество. Надо сделать так, чтобы новый  ордер бай, к уже открытым не имел никакого отношения и начиная с него может открыться еще 5 ордеров в бай. (Не знаю, понятно ли объяснил)

#2160
15 минут назад, DIMICH55 сказал:

Нет! Именно серия  ордеров. Если  закрылся к  примеру, одиночный ордер селл, то допускается, что откроется  снова  ордер селл. 

два - это серия?

#2161
22 часа назад, Rigal сказал:

Сейчас бОльшая часть мудрености кода МТ4 решается библиотекой от сабера, так что работы обычно немного. Делитесь результатами - переписать найдется, кому.

Не могли бы Вы поделиться или дать напутствия на поиски библиотеки от сабера?

#2162
2 минуты назад, Rigal сказал:

два - это серия?

Конечно! Два  это серия. Все  что больше одного - серия.

#2163
3 часа назад, DIMICH55 сказал:

2. Предусмотреть выбор варианта  усреднения (или через заданное количество свечей (по умолчанию 5) или через определенное  количество пунктов. Как сейчас  это делает советник, у  меня отследить не получается.

Советник сейчас позволяет задать шаг усреднения в пятизначных пунктах (не менее, чем Х) и в барах (не менее, чем Y).

input int    MartinStepBars         = 5;        // Шаг усреднения в барах
input int    MartinPips             = 250;      // Величина шага в пунктах, не менее

Это суперсет того, что вы хотите от логики:

- если задать MartinPips = 0, будет контролироваться отступ только в барах. Задав отрицательное число, можно позволить советнику открывать "усреднения" позиций в профите - то, что обычно называется доливкой по тренду

- если задать MartinStepBars = 0, будет контролироваться отступ только в пипсах.

- можно задать оба, тогда получится не "или", а "и"

 

Так что пункт 2 я игнорирую

#2164
1 минуту назад, Rigal сказал:

Советник сейчас позволяет задать шаг усреднения в пятизначных пунктах (не менее, чем Х) и в барах (не менее, чем Y).

input int    MartinStepBars         = 5;        // Шаг усреднения в барах
input int    MartinPips             = 250;      // Величина шага в пунктах, не менее

Это суперсет того, что вы хотите от логики:

- если задать MartinPips = 0, будет контролироваться отступ только в барах. Задав отрицательное число, можно позволить советнику открывать "усреднения" позиций в профите - то, что обычно называется доливкой по тренду

- если задать MartinStepBars = 0, будет контролироваться отступ только в пипсах.

- можно задать оба, тогда получится не "или", а "и"

 

Так что пункт 2 я игнорирую

Понятно. Спасибо за  разъяснение... Я эти тонкости не знал

#2165

В советнике предусмотрена опция CloseOnReverce. При включении этой опции, он по сигналу в покупку закроет все продажи.

В этой связи вопрос: если он закрыл серию продаж и открыл покупку - значит ли это, что он может открывать снова продажи, согласно требованиям пункта 4? Формально покупка была открыта...

#2166
35 минут назад, Rigal сказал:

В советнике предусмотрена опция CloseOnReverce. При включении этой опции, он по сигналу в покупку закроет все продажи.

В этой связи вопрос: если он закрыл серию продаж и открыл покупку - значит ли это, что он может открывать снова продажи, согласно требованиям пункта 4? Формально покупка была открыта...

По  моим наблюдениям на данный  момент он  торгует одновременно в  обе  стороны и не закрывает все  сделки при наличие противоположного сигнала. Если же  серия  продаж закрылась  по тейку и открылся ордер на  покупку, то в дальнейшем советник  может снова  открыть продажи. То же самое касается и покупок.

Изменено 22 декабря, 2022 пользователем DIMICH55

#2167
39 минут назад, Rigal сказал:

В советнике предусмотрена опция CloseOnReverce. При включении этой опции, он по сигналу в покупку закроет все продажи.

Я понял  о чем вы. Просто я  этой  функцией  не пользуюсь. При ее включении результаты тестирования неудовлетворительные. Возможно, я  мало экспериментировал с  настройками, но результат  мне не понравился.

#2168

Добавил два параметра в конце списка.

Один - час "приостановки" в пятницу. Не будут стартовать новые серии после этого часа и до старта сессии после выходных

Второй - включение описанного в п.4 фильтра.

Добавлена кнопка на график, закроет все ордера данного сета (и перестанет торговать). Для продолжения торговли нужно отжать кнопку.

Пробуем, делимся результатами.

 

 

UPD: перезалил файл, была опечатка

 

KE_BarsAndMA-modR-1.0.mq419 скач.

Изменено 22 декабря, 2022 пользователем Rigal

#2169
6 минут назад, Rigal сказал:

Добавил два параметра в конце списка.

Один - час "приостановки" в пятницу. Не будут стартовать новые серии после этого часа и до старта сессии после выходных

Второй - включение описанного в п.4 фильтра.

Добавлена кнопка на график, закроет все ордера данного сета (и перестанет торговать). Для продолжения торговли нужно отжать кнопку.

Пробуем, делимся результатами.

 

KE_BarsAndMA-modR-1.0.mq4 59 \u043a\u0411 · 0 загрузок

Спасибо! Сейчас  уже  поздно тестировать. Надо же на более продолжительном периоде чем 1  месяц это делать. Как только проведу  выложу  результат.

#2170

Немного прогнал. Первое что явно бросается  в глаза, так  это рост нагрузки на депозит в  два  раза. Если в  исходном варианте, открываемых ордеров в  продажу и покупку было практически поровну, то в новом, после закрытия серии, к  примеру  продаж, образуется  две  серии ордеров в покупку. Естественно  маржа  стремительно  растет, что очень плохо. В исходнике продажи и покупки взаимно "гасились"...

#2171

В общем, эксперимент по модификации советника не удался. Точнее, задумка  сработала не совсем так, как я  рассчитывал. Как уже  заметил выше, увеличивается  нагрузка  на депозит  после  закрытия серии сделок и открытии противоположного ордера. Если в  "оригинале" советник  открывал ордера по типу  локирования, то в  модификации это практически не случается и на фоне этого появляются две  независящих друг от друга серии ордеров. Теоретически это не так уж плохо. При откате  можно будет закрыть обе серии и выйти в  ноль или даже в плюс. Проблема в том, что слив может случится  раньше. Как никак  робот все же принадлежит к  семейству "мартышек", хоть и может  работать в  относительно мягком режиме. Что еще. На длинных интервалах он работать точно не будет. Это болезнь всех "мартышек". На коротких он выглядит довольно неплохо и может даже удвоить депозит за месяц. Но есть оговорка. Месяц месяцу рознь. Что еще лучший  результат советник показал на паре евро/франк. Фунт/франк тоже заслуживает внимание, но он более волатилен, что для "мартина" не очень хорошо. Буду дальше  крутить настройки. Может что найду. Пока что выкладываю месячный тест. Понятно, что это не показатель, но все же. Прибыль в конце концов надо выводить...Особенно с счетов, где  работает советник на основе мартингейла.

 

 

1.png

#2172

Не знаю, как там за месяц (и не хочу спорить о том, есть ли смысл в тестах за месяц), но на глобальном уровне есть явно положительные изменения.

Вот, например, график теста USDJPY на часовом графике с настройками по умолчанию и включенной фильтрацией противоположными входами с 2010 года:

Спойлер

image.thumb.png.fca7974b35beb66f40ca9658c78cf838.png

Кочерга в конце, понятно, но: вполне себе собираются в единую линию графики средств и баланса.

А вот тот же сет без фильтрации:

Спойлер

image.thumb.png.98877fced2c372c41615f4347ce08099.png

Нагрузка на счет, может, ниже местами - но он никогда не подтягивает средства к балансу.

Безнадежен :)

#2173
20 часов назад, Antoxa0059 сказал:

Не могли бы Вы поделиться или дать напутствия на поиски библиотеки от сабера?

@Rigal

Изменено 23 декабря, 2022 пользователем Antoxa0059

#2174
6 минут назад, Antoxa0059 сказал:

Ептель, а Гугл уже тоже заблокировали???!!!!

https://www.mql5.com/en/code/16006

#2175
14 часов назад, DIMICH55 сказал:

В общем, эксперимент по модификации советника не удался. Точнее, задумка  сработала не совсем так, как я  рассчитывал. Как уже  заметил выше, увеличивается  нагрузка  на депозит  после  закрытия серии сделок и открытии противоположного ордера. Если в  "оригинале" советник  открывал ордера по типу  локирования, то в  модификации это практически не случается и на фоне этого появляются две  независящих друг от друга серии ордеров. Теоретически это не так уж плохо. При откате  можно будет закрыть обе серии и выйти в  ноль или даже в плюс. Проблема в том, что слив может случится  раньше. Как никак  робот все же принадлежит к  семейству "мартышек", хоть и может  работать в  относительно мягком режиме. Что еще. На длинных интервалах он работать точно не будет. Это болезнь всех "мартышек". На коротких он выглядит довольно неплохо и может даже удвоить депозит за месяц. Но есть оговорка. Месяц месяцу рознь. Что еще лучший  результат советник показал на паре евро/франк. Фунт/франк тоже заслуживает внимание, но он более волатилен, что для "мартина" не очень хорошо. Буду дальше  крутить настройки. Может что найду. Пока что выкладываю месячный тест. Понятно, что это не показатель, но все же. Прибыль в конце концов надо выводить...Особенно с счетов, где  работает советник на основе мартингейла.

 

 

1.png

я немного самодеятельности проявил и заменил сравнительно бестолковый логический параметр CloseOnReverce на целочисленный: CloseOnReverseProfitPips

Это минимальный профит в пятизначных пунктах, который будет закрываться по обратному сигналу.

Это позволяет, с одной стороны, не игнорировать обратный сигнал, а с другой - не закрывать крупные убытки, достраивать сеткой до состояния, когда убыток некрупный.

Интересные результаты для значений меньше нуля. Скажем, -50 пятизначных.

Дальше нужно смотреть, каких колен и сколько ему позволять, на каком ТФ и с каким периодом машки.

 

 

KE_BarsAndMA-modR-1.1.mq427 скач.

#2176

Ребята, подскажите, почему на реале советник пропускает сигналы? В тестере и на демо отрабатывает четко все сигналы.

Вот КОД:

//+------------------------------------------------------------------+
//| Подсчет ордеров по типу                                          |
//+------------------------------------------------------------------+
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();
        }
  }
//+------------------------------------------------------------------+

#2177
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 :)

 

#2178
12 часов назад, Rigal сказал:

Не вполне понятно, что означает "пропускает сигналы" и "отрабатывает четко".

Как вы определяете, что вот он, сигнал, который советник пропустил?

 

Приведенный код пытается открывать по high и low, вместо bid и ask.

 

Да это и есть цена входа high в BUY и low в SELL. ... "пропускает сигналы" - не открывает ордер на реальном счете. 

..."отрабатывает четко" а на демо счете открывает ордера по  high и low ценам свечи.

Для публикации сообщений создайте учётную запись или авторизуйтесь

Перейти к списку тем
Форум · 2.0.20260627.0025