Структура рулит. Учимся структурировать программы, изучаем возможности, ошибки, решения и т.п. - страница 19

 
komposter:

Все правильно говорит MetaDriver, и система у него правильная. Хрен_фх бы еще добавил, что "торговый драйвер" должен работать с 10-20 платформами для использования лучших цен.

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

 

Разверну пример хрен_фх: работает 25 стратегий, агрегатор (торговый драйвер) их собирает в нетто-позицию и выводит в рынок, все ок. Вдруг в 17-й стратегии что-то ломается и она выдает нездоровые прогнозы - говорит открыться на 50% от депо. Советник послушно открывается.

Что делает банальный локер а-ля МТ4:

  • убирает 17-го советника с графика (найти его легко по магику в сделке),
  • закрывает соответствующую позицию (в терминах МТ4) или часть позиции (в терминах МТ5),
  • читает логи, созданные этим советником, для разбора ситуации.

Теперь перейдем на "правильный учет". Что должен сделать трейдер, чтоб устранить ошибку (сделка на 50% маржи - явная ошибка в логике):

  • Найти, какая из стратегий ее породила (как? по логам?),
  • Найти соответствующий код и внести в него правки (return(0)?),
  • ИЛИ в цикле суммирования позиции напротив нужной стратегии (номером бы не ошибиться!) поставить continue;
  • Скомпилировать советника (если это МТ4 - предварительно закрыв терминал или после компиляции указав правильные настройки),
  • Разбор ситуации - отдельная песня (если не предусмотрены свои логи с разделением на стратегии).

Вопрос: что проще? Очевидно, что вариант с МТ4.

А что дешевле? Очевидно, что вариант с Неттингом.

Какой вывод? Делать рыночный драйвер с GUI от МТ4 ;)

Проблема локализации глючной стратегии в толпе суммируемых разнородных стратегий существует, но пока не обострялась до таких драматических степеней. Лично я суммировал (в огромном количестве) только однородные стратегии, например по разному оптимизированные нейросетки.  Но там всё проще - сигналы стратегий нормализованы (-1...+1), каждая вносит микроскопический вклад в совокупную позицию, надёжность схемы достигается засчёт "статистического перевеса". С другой стороны сложнее - таки выловить глючную в такой толпе практически нереально в рантайм.  Только индивидуальным тестированием (желательно автоматизированным). 

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

// Возможно, действительно лучше индивидуального для каждой стратегии индикатора эквити (он же "тестер") придумать не удастся, но пока это видится чересчур накладным.

 
komposter:

Все правильно говорит MetaDriver, и система у него правильная. Хрен_фх бы еще добавил, что "торговый драйвер" должен работать с 10-20 платформами для использования лучших цен.

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

 

Разверну пример хрен_фх: работает 25 стратегий, агрегатор (торговый драйвер) их собирает в нетто-позицию и выводит в рынок, все ок. Вдруг в 17-й стратегии что-то ломается и она выдает нездоровые прогнозы - говорит открыться на 50% от депо. Советник послушно открывается.

Что делает банальный локер а-ля МТ4:

  • убирает 17-го советника с графика (найти его легко по магику в сделке),
  • закрывает соответствующую позицию (в терминах МТ4) или часть позиции (в терминах МТ5),
  • читает логи, созданные этим советником, для разбора ситуации.

Теперь перейдем на "правильный учет". Что должен сделать трейдер, чтоб устранить ошибку (сделка на 50% маржи - явная ошибка в логике):

  • Найти, какая из стратегий ее породила (как? по логам?),
  • Найти соответствующий код и внести в него правки (return(0)?),
  • ИЛИ в цикле суммирования позиции напротив нужной стратегии (номером бы не ошибиться!) поставить continue;
  • Скомпилировать советника (если это МТ4 - предварительно закрыв терминал или после компиляции указав правильные настройки),
  • Разбор ситуации - отдельная песня (если не предусмотрены свои логи с разделением на стратегии).

Вопрос: что проще? Очевидно, что вариант с МТ4.

А что дешевле? Очевидно, что вариант с Неттингом.

 

Какой вывод? Делать рыночный драйвер с GUI от МТ4 ;)

Складывается такое ощущение что МТ5 торгует позициями.

Неттинг это система учёта и не более того, в МТ4 есть только история ордеров, в МТ5 есть и история ордеров и их суммирование в позиции.

Т.е. в МТ5 однозначно больше информации обработано.

Так же не забываем что каждый ордер как и в МТ4 имеет магик и комментарий. По ним идентифицировать какая из стратегий агрегатора выставила ордер на 50% от маржи не проблема.

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

ЗЫ вот вам конкретное предложение как в МТ5 представить данные как будто это МТ4, пишите в магик out-ордера тикет того ордера который якобы закрывается, тогда в закрытых ордерах будут числиться только те ордера истории у которых есть out-ордера, а в открытых те у которых out отсутствуют.

 
TheXpert:

Торговый драйвер понижает надежность системы.

Неужели не верите? И так бурно обсуждаете драйвер как нечто действительно классное.

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

Что происходит во внутреннеем тестере? круг замыкается, там же нет реджектов, реквотов, пинга и прочей мешающей торговле гадости.

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

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

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

 

TheXpert:

TheXpert:

Торговый драйвер понижает надежность системы.

Неужели не верите? И так бурно обсуждаете драйвер как нечто действительно классное.

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

Что происходит во внутреннеем тестере? круг замыкается, там же нет реджектов, реквотов, пинга и прочей мешающей торговле гадости.

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

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

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

Ну-ну, ага


С Днём Рожденья ту ю....!

--

Андрюха, конечно такой драйвер для прогнозирующих стратегий, не арбитражных.  Причём одно другое вовсе не исключает.  Место арбитражных стратегий несколько дальше по каналу, а именно в агрегаторе. Я планирую этот модуль (арбитражный). Если продолжить схему... впрочем только вчера об этом писал, вот тут

https://www.mql5.com/ru/forum/105007/page9#821911

и дальше тут

https://www.mql5.com/ru/forum/105007/page10#821949

 
Urain:

Иди от задачи. Какие задачи наиболее востребованы в GUI ? лично у тебя.

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

Тогда придёт понимание каким он должен быть, перепиши всё заново. Мне видится как то так.

Хотелось бы что-то вроде этого:

Urain:
А если сделать обращение к API через модуль обращения? тогда можно сменив один модуль сменить платформу.

, только для развязки "ТС / GUI".  Т.е. видимо придётся сочинять универсальный (: да простит меня TheXpert :) настраиваемый маршрутизатор событий. К которому уже подключать с одного бока ТС, с другого GUI.

--

TheXpert:
...

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

//  Андрей, цель универсальных решений - многократное использование.  Минусы я и сам знаю.. ))

 
Urain:

Складывается такое ощущение что МТ5 торгует позициями.

Неттинг это система учёта и не более того, в МТ4 есть только история ордеров, в МТ5 есть и история ордеров и их суммирование в позиции.

Т.е. в МТ5 однозначно больше информации обработано.

Так же не забываем что каждый ордер как и в МТ4 имеет магик и комментарий. По ним идентифицировать какая из стратегий агрегатора выставила ордер на 50% от маржи не проблема.

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

ЗЫ вот вам конкретное предложение как в МТ5 представить данные как будто это МТ4, пишите в магик out-ордера тикет того ордера который якобы закрывается, тогда в закрытых ордерах будут числиться только те ордера истории у которых есть out-ордера, а в открытых те у которых out отсутствуют.

Сильно, Николай.  Ты практически закрыл тему "перевеса ордерной системы (MT4) над неттинговой (MT5)".  Мне такая фишка в голову не приходила, хотя явно рабочая и лежит под боком.
 
MetaDriver:
Мне такая фишка в голову не приходила, хотя явно рабочая и лежит под боком.
странно что не приходила :) тогда тебе вторая подсказка - на самом деле должно быть три связанных магика, ибо есть еще ТП и СЛ.
 
sergeev:
странно что не приходила :) тогда тебе вторая подсказка - на самом деле должно быть три связанных магика, ибо есть еще ТП и СЛ.

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

--

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

 
Urain:
А если сделать обращение к API через модуль обращения? тогда можно сменив один модуль сменить платформу.

Да именно. При этом писать отдельный модуль не надо. Потому что поставщик данных это и есть тот самый модуль. Схему такого обращения нарисую в понедельник. Что касается GUI - ни какого "маршрутизатора событий" как предлагает Владимир, сочинять не нужно. Исполняющий модуль поддерживает интерфейс работы с GUI, а значит любая ТС, подключаемая к исполняющему модулю по умолчанию начнет работать с GUI панелью, даже ничего не зная о ней (схемка будет в понедельник). Исполняющий модуль здесь как класс-адаптер. Принцип прост:

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

 
MetaDriver:
Сильно, Николай.  Ты практически закрыл тему "перевеса ордерной системы (MT4) над неттинговой (MT5)".  Мне такая фишка в голову не приходила, хотя явно рабочая и лежит под боком.

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

Да, поймите же, что дело не в неттинге. Как правильно заметил Владимир, рулят алгоритмы, без знания как правильно структурировать данные, большого, а главное масштабируемого проекта не построишь. Вот обратите внимание, пошло активное обсуждение схемы рыночного драйвера, одному то нужно, другому это, и в рамках этой схемы приходится вводить все новые и новые модули, взаимосвязи, разные "маршрутизаторы событий". И во что превратиться проект если его будут использовать  десятка два трейдеров с разными задачами и пониманием рынка?

На ум почему-то лезут слова Александра Радищева: "чудище обло озорно огромно стозевно и лаяй"

Причина обращения: