Перейти к содержанию

[open source] [Советник] Beat The Market 2.0 (мультивалютный)


Рекомендуемые сообщения

[open source] [Советник] Beat The Market 2.0 (мультивал… Опубликовано (изменено)

Уважаемый @lsv107

Мне кажется вот тут

   if(tmaUseCurrentBar)
      SetNewBar(symbol.Pair,symbol.newBarTMA);
   else
      symbol.newBarTMA=symbol.newBar;

немного нестройно. Если мы хотим добиться перерасчета на текущем баре, когда выбрано использование значения ТМА на текущем баре, то логично было бы просто сбрасывать флажок is_new_bar. А так мы, получается, пересчитываем его либо на новом баре, либо на новом баре текущего ТФ, что совсем лишнее.

Я бы предложил, например, вот так:

   if(tmaUseCurrentBar)
      symbol.newBarTMA.is_new_bar = true;
   else
      SetNewBar(symbol.Pair,symbol.newBarTMA);

 Так будет пересчитывать на тиках. Можно сделать, чтобы пересчитывало на барах текущего таймфрейма:

   if(tmaUseCurrentBar)
      symbol.newBarTMA.is_new_bar = symbol.newBar.is_new_bar;
   else
      SetNewBar(symbol.Pair,symbol.newBarTMA);

Я могу что-то упускать, конечно.

 

Еще я бы оградил работу с визуальными объектами

   if(IsTesting() && !IsVisualMode())
      return;

Ибо оно довольно много процессорного времени и памяти отжирает - а если на это некому смотреть, то лучше пропускать.

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

 

Глядя на код дальше:

Сигнал на покупку и продажу по BTArrows вычисляется на разных ТФ: в покупку на текущем, а в продажу - на заданном в настройках. Поправил

 

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

Я вытащил оба индикатора в отдельные функции, огородил проверкой нового бара (постарался вписаться в вашу концепцию проверки) и кэширую последнее значение, на случай, если оно может пригодиться посреди бара - сейчас, или в будущем.

Также пересадил боллинджера на библиотечную реализацию в Indicators\Indicators.mqh - гораздо оптимальнее доступ к массиву.

 

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

 

Из чистого эстетства перенес функцию расчета TMA внутрь структуры инструмента - она работает с членами структуры исключительно.

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

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

Автору огромное спасибо и просьба меня не пинать за безудержный забег по чужому коду.

 

 

Beat The Market 2.0.2 Rigal Mod.mq4

Изменено пользователем Rigal
  • Лайк 7
  • Спасибо 1
  • Огонь! 5
Ссылка на сообщение
Поделиться на другие сайты

  • Ответов 261
  • Создано
  • Последний ответ

Популярные авторы

Популярные авторы

Популярные посты

Название советника: Beat The Market Год выпуска: 2020 Актуальная версия: 2.1.1 Терминал: MT4 (build 1200+) Сайт разработки: http://tradelikeapro.ru/ Описание стратегии в блоге: ht

Перейти

Добавил фильтр входов в одном направлении по валютам Два параметра: Макс кол-во ордеров в одном направлении по валюте С этим все просто: если ноль - не применяем. Если не ноль: счи

Перейти

Уважаемый @lsv107 Мне кажется вот тут if(tmaUseCurrentBar) SetNewBar(symbol.Pair,symbol.newBarTMA); else symbol.newBarTMA=symbol.newBar; немного нестройно. Если мы хотим

Перейти
[open source] [Советник] Beat The Market 2.0 (мультивал… Опубликовано (изменено)
8 минут назад, Старик сказал:

@Stinger12 , вам следует найти и выложить в топик файлы логов бота (тот, что виден во вкладке "Эксперты" мт4) за 17 и 18 июня.

Сделать это желательно незамедлительно - некоторые ДЦ в течение недели удаляют логи ботов прошлой недели и необходимые нам файлы вскоре могут быть утрачены безвозвратно.

 

Также сообщите нам у вас в терминале работал бот в мультивалютном режиме лишь на одном графике или у вас в терминале одновременно было/работало несколько копий бота?!

 

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

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

От вас требуются точные и быстрые действия!  Пожалуйста, сделайте что вам предложено точно и не откладывая!

Я пробежался по коду и не нашел, как может возникать такая ситуация с одного графика.

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

Но вот если мультивалютный режим на многих графиках с разными маджиками -  тогда да, неизбежно наклепает.

Но имхо прокладка всему виной. Между рулем и сиденьем :)

Ждем комментариев пользователя.

Изменено пользователем Rigal
  • Лайк 5
Ссылка на сообщение
Поделиться на другие сайты

[open source] [Советник] Beat The Market 2.0 (мультивал… Опубликовано
35 минут назад, Rigal сказал:

Автору огромное спасибо и просьба меня не пинать за безудержный забег по чужому коду.

Исходники и для меня как быку красное - немедленно забодать!:d

Ближе к 60 я понял, что это неизлечимо.

 

28 минут назад, Rigal сказал:

Я пробежался по коду и не нашел, как может возникать такая ситуация с одного графика.

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

Но вот если мультивалютный режим на многих графиках с разными маджиками -  тогда да, неизбежно наклепает.

Но имхо прокладка всему виной. Между рулем и сиденьем :)

Ждем комментариев пользователя.

У меня сейчас 3 ситуации класса "(Слово удалено системой)" (в смысле фиаско), когда по уму надо объявлять запрет на торги ботом вообще или использования какого-то режима.

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

Мой пост попытка хотя бы здесь получить всю необходимую инфу сразу и полностью, определиться есть ли проблема и какое предписание "не делать что" выдать пользователям - и переключиться на намного худшие вопросы. :)

  • Лайк 2
Ссылка на сообщение
Поделиться на другие сайты

[open source] [Советник] Beat The Market 2.0 (мультивал… Опубликовано

Обработка ситуации с множеством окон в мультивалютном режиме нетривиально отловить, с учетом потенциальной изобретательности пользователя, который может захотеть подоткнуть разные наборы валют в разные окна.

Один из надежных способов - открытие файла на запись по имени символа (и отказ торговать этот символ с предупреждением на экране, если открыть не удалось).

Держать открытым, пока не наступит DeInit.

  • Лайк 4
  • Спасибо 1
Ссылка на сообщение
Поделиться на другие сайты

[open source] [Советник] Beat The Market 2.0 (мультивал… Опубликовано (изменено)

@Rigal, приветствую!

10 часов назад, Rigal сказал:

просьба меня не пинать за безудержный забег по чужому коду

В большинстве случаев программисты, особенно начинающие, не любят выкладывать на всеобщее обозрение открытый код вовсе не из боязни "воровства" их идей, а по причине опростоволоситься в глазах коллег. Я с возрастом понял, что лучше выставить напоказ свои ошибки и чему-то научиться, чем вариться в собственном соку. К тому же коллеги не упустят возможности поковыряться в твоём коде и всегда найдут за тебя баги, которые ты упустил ;). Ну и в конце концов - проект некоммерческий, а скорее экспериментальный. Так что, "забеги по чужому коду" я горячо приветствую. Уверен, что и для себя вы нашли там что-то полезное. Единственная просьба, в названии файла, указывайте, пожалуйста, что это ваша модификация, например "... mod Rigal ..." или ещё как. Просто пользователи будут думать, что вышел новый релиз "2.0.2" от автора. Вдруг кто-то из коллег тоже захочет что-то поменять и продолжит вашу нумерацию.  Все запутаются.

 

По ситуации с 

tmaUseCurrentBar

Тут у меня конкретная ошибка, забыл указать логическое отрицание. Спасибо за отловленного "жука"=b

 

10 часов назад, Rigal сказал:

Еще я бы оградил работу с визуальными объектами


   if(IsTesting() && !IsVisualMode())
      return;

 

У меня в коде есть глобальный флаг display_graphics как раз для этих целей.

   if(IsOptimization() || (IsTesting() && !IsVisualMode()))
      display_graphics=false;
   else
      display_graphics=true;

В моновалютной версии из графических объектов были только TMA и пивоты. В мультивалютной добавились панели, и я благополучно забыл ограничить их отрисовку с помощью флага. Хотя терминал сам блокирует к ним доступ в режиме оптимизации и невизуального тестирования, какие-то такты мы теряем просто на обращении к соответствующим функциям. Тут наши подходы совпадают.

 

По остальному сейчас не могу ничего сказать, надо смотреть код. 

Вам респект.

 

Изменено пользователем lsv107
  • Лайк 6
  • Огонь! 1
Ссылка на сообщение
Поделиться на другие сайты

[open source] [Советник] Beat The Market 2.0 (мультивал… Опубликовано
11 минут назад, lsv107 сказал:

названии файла, указывайте, пожалуйста, что это ваша модификация, например "... mod Rigal ..." или ещё как

перезалил

  • Лайк 7
Ссылка на сообщение
Поделиться на другие сайты

[open source] [Советник] Beat The Market 2.0 (мультивал… Опубликовано

Добрый день, уважаемые форумчане!!! Хотелось бы выразить огромную благодарность за создание такого профессионального советника!!!

@chmelyn  за мультивалютную идею!!!

@lsv107 за прекрасную реализацию как самого советника, так и его мультивалютную версию!!!

Просила бы @lsv107 все-таки добавить в мультивалютную версию функцию лока! Сейчас (как на скрине) мы имеем открытый ордер по стратегии и его профит, если будет добавлен лок, то будет видно все ордера и первые  и локовые. Что нам это даст?

1) видеть текущую ситуацию по паре

2) возможность закрыть обе позиции одним нажатием на крестик ( так на этой неделе 24,06 был открыт ордер селл  по gbpnzd и его лок, позже профит по двум ордерам составлял порядка 10-20 центов, таким образом можно было получить прибыль, не висеть в рынке, может быть получили еще один вход, а так имеем профит по селл 56,08 и

профит по локу -300 центов)

3) возможность оптимизировать шаг лока, что может помочь быстрее закрывать ордера, и может быть повысит прибыльность

Вроде бы постаралась объяснить свое видение добавления функции лока в советник!

ВСЕМ ПРОФИТА!!!

1889537086_.thumb.png.078da41c96d931e64148226290bb6b11.png

  • Лайк 1
Ссылка на сообщение
Поделиться на другие сайты

[open source] [Советник] Beat The Market 2.0 (мультивал… Опубликовано

Побаловался с советником с тралом общего профита и сторонним локом.

Моё мнение - можно просто подбрасывать монетку и потом тралить общий профит и лочить и разруливать. 

Ведь нет никакой статистики в таком методе. И нет тестов отдельно пар, чтоб свести в Кванте и посмотреть насколько оправдан такой подход к торговле.

На этом баловство закончил.

 

  • Лайк 4
Ссылка на сообщение
Поделиться на другие сайты

[open source] [Советник] Beat The Market 2.0 (мультивал… Опубликовано
35 минут назад, ostapbender сказал:

Ведь нет никакой статистики в таком методе. И нет тестов отдельно пар, чтоб свести в Кванте и посмотреть насколько оправдан такой подход к торговле.

Можно отключить мультивалютный режим, и провести тесты с каждой парой.

  • Спасибо 1
Ссылка на сообщение
Поделиться на другие сайты

[open source] [Советник] Beat The Market 2.0 (мультивал… Опубликовано (изменено)
В 28.06.2020 в 08:49, ademen сказал:

Можно отключить мультивалютный режим, и провести тесты с каждой парой.

А  тралл общего эквити вы как протестируете?

Изменено пользователем valerii.badaev
  • Лайк 2
  • Попей водички 1
Ссылка на сообщение
Поделиться на другие сайты

[open source] [Советник] Beat The Market 2.0 (мультивал… Опубликовано (изменено)

По итогам прошедшей недели снял сов с реальных торгов.В пятницу закрыл сделки вручную в минус. Оставил только на демосчете.

Изменено пользователем valerii.badaev
  • Лайк 2
  • Пичалька 4
Ссылка на сообщение
Поделиться на другие сайты

[open source] [Советник] Beat The Market 2.0 (мультивал… Опубликовано

Валерий, Вы опытный человек!!! Когда было  +10% за неделю и один лок, то супер!!! а сейчвс 6 локов и??? Поэтому и нужны советы или предложения, как можно улучшить!!!

Ссылка на сообщение
Поделиться на другие сайты

[open source] [Советник] Beat The Market 2.0 (мультивал… Опубликовано (изменено)
2 часа назад, AngelaZP сказал:

Валерий, Вы опытный человек!!! Когда было  +10% за неделю и один лок, то супер!!! а сейчвс 6 локов и??? Поэтому и нужны советы или предложения, как можно улучшить!!!

Сейчас на демо счете 3 лока.И просадка только увеличивается.В тестере протестировать мультивалютный советник  невозможно, тем более с переворотом позиции.Гонять на демосчете можно всю оставшуюся жизнь.А у вас какие предложения?

Изменено пользователем valerii.badaev
  • Лайк 2
Ссылка на сообщение
Поделиться на другие сайты

[open source] [Советник] Beat The Market 2.0 (мультивал… Опубликовано
16 минут назад, valerii.badaev сказал:

В тестере протестировать мультивалютный советник  невозможно

А если МТ5?

Ссылка на сообщение
Поделиться на другие сайты

[open source] [Советник] Beat The Market 2.0 (мультивал… Опубликовано
Только что, SebastianPerreira сказал:

А если МТ5?

Это могло бы стать решением проблемы с тестированием.

  • Лайк 2
Ссылка на сообщение
Поделиться на другие сайты

[open source] [Советник] Beat The Market 2.0 (мультивал… Опубликовано
30 минут назад, valerii.badaev сказал:

Сейчас на демо счете 3 лока.И просадка только увеличивается.В тестере протестировать мультивалютный советник  невозможно, тем более с переворотом позиции.Гонять на демосчете можно всю оставшуюся жизнь.А у вас какие предложения?

Я уже предложила!!! Сделать лок- переворот в  советнике!!!

Ссылка на сообщение
Поделиться на другие сайты

[open source] [Советник] Beat The Market 2.0 (мультивал… Опубликовано
26 минут назад, valerii.badaev сказал:

Это могло бы стать решением проблемы с тестированием.

Попробовал конвертнуть в лоб - не получилось: 41 ошибка при конвертации, моих знаний не хватает для исправления.

Файлы прилагаю, уверен, у опытных программистов исправление много времени не займет.

BTMmql5.zip

  • Лайк 3
Ссылка на сообщение
Поделиться на другие сайты

[open source] [Советник] Beat The Market 2.0 (мультивал… Опубликовано
14 минут назад, AngelaZP сказал:

Я уже предложила!!! Сделать лок- переворот в  советнике!!!

Лок равнозначен закрытию, только копит своп вдобавок, который никогда не положителен в локе.

Я готов пространно расписать,  почему это так - или просто скопирую публикацию,  где я это уже делал, если найду. Дайте знать, если вам интересно.

 

Тогда уже закрытие и переворот.

7 минут назад, SebastianPerreira сказал:

Попробовал конвертнуть в лоб - не получилось

МТ5 выглядит, как рабочая альтернатива.  Советник объемный, там нетривиально.  Надо,  чтобы кто-то с хорошим знанием МТ5,  я пока продираюсь сквозь дебри.

 

3 часа назад, AngelaZP сказал:

все для каждой пары отдельно!!! а там можно делать корзины!!!

ну так прогоните его в тестере по каждой паре, это может сильно убавить восклицательных знаков.

Я прогнал с десяток и не получил устойчивого результата.

  • Лайк 6
Ссылка на сообщение
Поделиться на другие сайты

[open source] [Советник] Beat The Market 2.0 (мультивал… Опубликовано
19 минут назад, AngelaZP сказал:

Я уже предложила!!! Сделать лок- переворот в  советнике!!!

Вы точно понимаете о чём говорите?

Вы вообще знаете, что локи вручную более-менее успешно разруливает хорошо если 1 из 1000 трейдеров?

А все основные автоматизированные "разрулы" локов сводятся к набивке прибыли другим способом и постепенному невыгодному погашению лока?

Не уверен, что эту тему есть смысл вообще хоть как-то рассматривать...

  • Лайк 7
Ссылка на сообщение
Поделиться на другие сайты

[open source] [Советник] Beat The Market 2.0 (мультивал… Опубликовано
23 минуты назад, AngelaZP сказал:

Я уже предложила!!! Сделать лок- переворот в  советнике!!!

 

3 минуты назад, Rigal сказал:

Тогда уже закрытие и переворот.

Поддержу Rigal - лок это долгое зло: его вручную нервными месяцами разруливать приходиться, а автоматов умеющее это эффективно делать я не встречал. В свое время хороший урок по локам получил: мог закрыть сделку в минус $2000, пожадничал залез в локи (практиковал тогда) и, в итоге, через месяца полтора-два закрыл в минус $50 000. С тех пор на жо волос нет ))

  • Лайк 4
  • Огонь! 2
Ссылка на сообщение
Поделиться на другие сайты

[open source] [Советник] Beat The Market 2.0 (мультивал… Опубликовано

У меня есть советник специальный, "разруливатель". Мелкими профитами постепенно вынимает из просадки.

Он умеет работать в трех режимах:

  • разруливать, как есть, позволяя исходной позиции проседать, или выруливаться
  • залочить просадку 
  • закрыть просадку

Во всех трех режимах он восполняет потери сериями мелких сделок.

Он работает в тестере: если тестер, он сперва раскидывает сделки, залезая в просадку. А когда достигается заданная просадка, принимается за работу.

 

Так вот, многочисленные воспроизводимые тесты показали, что закрытие гораздо выгоднее лока. Из-за свопов.

Первый вариант, понятно, как повезет с трендом.

  • Лайк 5
Ссылка на сообщение
Поделиться на другие сайты

[open source] [Советник] Beat The Market 2.0 (мультивал… Опубликовано
31 минуту назад, Rigal сказал:

У меня есть советник специальный, "разруливатель". Мелкими профитами постепенно вынимает из просадки.

Он умеет работать в трех режимах:

  • разруливать, как есть, позволяя исходной позиции проседать, или выруливаться
  • залочить просадку 
  • закрыть просадку

Во всех трех режимах он восполняет потери сериями мелких сделок.

Он работает в тестере: если тестер, он сперва раскидывает сделки, залезая в просадку. А когда достигается заданная просадка, принимается за работу.

 

Так вот, многочисленные воспроизводимые тесты показали, что закрытие гораздо выгоднее лока. Из-за свопов.

Первый вариант, понятно, как повезет с трендом.

я прочитала ветку с Вашим локером!!! Спасибо!!!

Ссылка на сообщение
Поделиться на другие сайты

[open source] [Советник] Beat The Market 2.0 (мультивал… Опубликовано
1 минуту назад, AngelaZP сказал:

я прочитала ветку с Вашим локером!!! Спасибо!!!

нет, я боюсь, это ветка уважаемого @Rever27

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

Вот она эта просадка, лок и результат, очень похоже на то, что @SebastianPerreira описал, включая оставшиеся залысины:

image.thumb.png.79f7c3ea182730f42550786b4e6bb821.png

  • Лайк 3
Ссылка на сообщение
Поделиться на другие сайты

[open source] [Советник] Beat The Market 2.0 (мультивал… Опубликовано
6 часов назад, SebastianPerreira сказал:

Попробовал конвертнуть в лоб - не получилось: 41 ошибка при конвертации, моих знаний не хватает для исправления.

Файлы прилагаю, уверен, у опытных программистов исправление много времени не займет.

Здесь не все так просто. Если даже выйдет конвертнуть в лоб - мы не получим то что хотим, а получим только такую же версию, но уже в мт5. Насколько я знаю мультивалютный режим (что бы несколько пар одновременно тестировались) нужно настраивать отдельно.

6 часов назад, Rigal сказал:

Лок равнозначен закрытию, только копит своп вдобавок, который никогда не положителен в локе.

Я готов пространно расписать,  почему это так - или просто скопирую публикацию,  где я это уже делал, если найду. Дайте знать, если вам интересно.

Интересно было бы почитать. 

Если мыслить объективно - да, лок не выгодный по всем параметрам. Но если подойти к вопросу субъективно - некоторые трейдеры чувствуют себя не комфортно закрывая позицию по убытку, особенно в ситуациях неопределенности, конечно это вопрос психологии, и от этого нужно избавиться, но прав тот, кто зарабатывает. 

В нашем же случаи советник, который входит редко, и игнорирования сигнала только потому что у нас уже есть открытая позиция считаю неправильным. В моем понимании лок - это разнонаправленные ордера без тейков. У нашем же случаи есть тейк и при достаточно воллатильности может быть закрытия обоих сделок.

Ссылка на сообщение
Поделиться на другие сайты

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

Вы должны быть пользователем, чтобы оставить комментарий

Создать учетную запись

Зарегистрируйте новую учётную запись в нашем сообществе. Это очень просто!

Регистрация нового пользователя

Войти

Уже есть аккаунт? Войти в систему.

Войти

  • Специальное предложение


  • Рекомендуемые брокеры

  • ×
    ×
    • Создать...