Робот с отложками

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

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

Состояние - это двоичное число, соответствующее "частицам" (ордерам), имеющимся в данный момент времени. Это может быть:
- 00 = 0 (нет ордеров - ни отложек, ни активных). Это начало работы.
- 01 = 1 (один активный; состояние возникает при срабатывании отложки),
- 10 = 2 (одна отложка; состояние возникает при закрытии активного по стопу или при начале работы),
- 11 = 3 (оба).

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

Событие - это изменение состояния, т.е. рождение/уничтожение "частиц":
- срабатывание отложки и закрытие активного по профиту (11 -> 01). Обработка: грубая оценка TP ставшего активным и выставление соответствующей отложки при цене TP активного. Конечное состояние - 11.
- закрытие активного по стопу (11 -> 10). Обработка: переоценка цены открытия отложки и ее модификация. Остается только отложка. Конечное состояние то же - 10.
- просто срабатывание отложки (активных не было) (10 -> 01). Обработка - та же, что в первом случае. Конечное состояние - 11.

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

Все ли я учел - или нет? За язык физики элементарных частиц прошу сильно не пинать, это так, для красоты...
 

Я бы делал независимый контур для каждого ордера. Набор возможных состояний: 0 - отсутствие, 1 - отложенный, 2 - активный. Траектория закольцована: 0 -> 1 -> 2 - > 0 . В матрице состояний системы это будут два перпендикулярных колечка - если конечно состояние 22 запрещённое.

 
Советник должен видеть все ордера насквозь(последовательно в зависимости от состояния ордера) в каждый момент времени - изменяется цена , и соответственно необходимость модификации ордеров.Т.е. сначала ищем открытые ордера и работаем с ними , затем отложенные - траектория  0 -> 2 ->1  
 
Обработка отложенного ордера имеет одну особенность - можно менять цену открытия. В каких-то ситуациях это будет эквивалентно принятию решения о входе в позицию. Выход не менее важен, но активный ордер уже будет подстрахован унаследованными от отложенного tp и sl, а активного выхода из позиции, как я понял, не предполагается. Хотя на самом деле в предыдущем посте я имел в виду не траекторию советника, а траекторию ордера :)
 
При решении подобной задачи я столкнулся с проблемой соблюдения ММ. Дело в том, что надо установить ордер заранее с нужным числом лотов. Это число лотов зависит от Equity. Когда цена дойдет до ордера, то эквити будет иметь другое значение, и число лотов должно быть уже другим.

Проблема легко решается в случае торговли по одному инструменту: можно заранее рассчитать значение эквити в точке срабатывания отложенного ордера, и определить нужное число лотов.
Однако, когда торговля идет по нескольким инструментам одновременно, то прогнозировать значение эквити невозможно. Тогда приходится удалять отложенные ордера, размеры лотов которых стали несоответствовать текущему состоянию эквити. В результате в стейтменте на данный момент 62% отмененных ордеров.
 
Bauleken:
При решении подобной задачи я столкнулся с проблемой соблюдения ММ. Дело в том, что надо установить ордер заранее с нужным числом лотов. Это число лотов зависит от Equity. Когда цена дойдет до ордера, то эквити будет иметь другое значение, и число лотов должно быть уже другим.

Проблема легко решается в случае торговли по одному инструменту: можно заранее рассчитать значение эквити в точке срабатывания отложенного ордера, и определить нужное число лотов.
Однако, когда торговля идет по нескольким инструментам одновременно, то прогнозировать значение эквити невозможно. Тогда приходится удалять отложенные ордера, размеры лотов которых стали несоответствовать текущему состоянию эквити. В результате в стейтменте на данный момент 62% отмененных ордеров.


А Вы всем депо заходите в рынок, что вас такая проблема волнует?
 
Bauleken:
При решении подобной задачи я столкнулся с проблемой соблюдения ММ. Дело в том, что надо установить ордер заранее с нужным числом лотов. Это число лотов зависит от Equity. Когда цена дойдет до ордера, то эквити будет иметь другое значение, и число лотов должно быть уже другим.

Проблема легко решается в случае торговли по одному инструменту: можно заранее рассчитать значение эквити в точке срабатывания отложенного ордера, и определить нужное число лотов.
Однако, когда торговля идет по нескольким инструментам одновременно, то прогнозировать значение эквити невозможно. Тогда приходится удалять отложенные ордера, размеры лотов которых стали несоответствовать текущему состоянию эквити. В результате в стейтменте на данный момент 62% отмененных ордеров.
Проблема еще проще решается если , разнести разнае тактики на разные счета.
 
notused писал (а):

А Вы всем депо заходите в рынок, что вас такая проблема волнует?

Нет, не всем.
Дело не в том какой частью депо я захожу, а в соответствии (точнее несоответствии) размеров реально открываемых лотов при тесте отложками и размеров лотов открываемых при тесте рыночными ордерами.
 
FION писал (а):
Проблема еще проще решается если , разнести разнае тактики на разные счета.


Вообще-то есть такое понятие как портфель, и системы там подобраны совсем не наобум.
 
Bauleken, торговля - только по одному инструменту, так что проблемы ММ несложны. Candid, очень интересно насчет перпендикулярных колечек и матрицы системы. FION, я пока примерно по такой схеме и делаю, т.е. отслеживаю полное состояние системы и события.

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

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


Вообще-то есть такое понятие как портфель, и системы там подобраны совсем не наобум.

Втаком случае можно разрешить каждому советнику работать с частью эквити.    
Причина обращения: