Вчера вечером по просьбе коллеги начал экспериментировать с трейлинг-стопом по эквити для портфельной торговли.
Есть у меня для этого экспериментальная модель робота, своего рода конструктор, из которого можно собирать все что угодно в любых комбинациях. Но этой возможности в нем еще не было.
Вроде все сделал как надо, запустил на экспериментальном счете, поставил уровень цели по эквити +100%, трейлинг по эквити на 5%, и ушел спать.
Просыпаюсь утром, мать моя женщина!
Робот за ночь такого наторговал....
Первым делом он закрыл все имеющиеся к тому моменты прибыльные позиции. А потом и начал открываться по сигналам и тут же закрывать.В общем хрен знает что.
Хорошо что я сразу не посмотрел на его художества. Иначе ночь точно спать не пришлось бы. А так у меня испорчено только утро.
Встал в 6 часов попить водички, глянул на монитор и офигел от неожиданности и полного непонимания.
Что эта железяка выделывает совершенно непонятно.
Точнее, выделывает она то, что хозяин приказал, а хозяин в собственных приказах разобраться не может.
Вроде логика алгоритма примитивная, проще быть не может и все понятно. Ан нет, что-то не учел или в стартовых условиях или в процессе работы с присвоением значений переменным.
Два часа пытался решить проблему, мозги вскипали, ан нет. Дошло до того, что усомнился в понимании роботом правил арифметики, и основания для этого тоже казалось были.
Но результатом всех моих действий было только ускорение падения в конце графика баланса, приведенного вверху.
И только к концу второго часа что-то в мозгах забрезжило. Забыл старое правило: «Машина дура и делает то, что ты ей написал в программе, а не то, что ты от нее хотел бы получить.»
Переписал модуль, ставлю на комп и иду заваривать кофе, потому что чаем меня в чувство привести уже не получится.
А в целом после такой перегрузки нужно уже не работать, а весь день пить пиво с фисташками. Чем я наверное и займусь.
Это если все удачно выйдет. Если же нет, то пропал человек, а все из-за того, что кому-то понадобился трейлинг-стоп по эквити. :)
P.S. Честно говоря, программирование — дело молодых. В моем возрасте уже нужно сидеть за полированным столом в кабинете и раздавать указания через секретаршу. :)
На реале запускаются только отлаженные программы, в которых явно видимых косяков нет. Обычно, до окончательной версии еще несколько невидимых вылавливается.
И даже смайлик поставил для ясности, что я не в претензии.
Ошибка где-то. Бывает. Выводите после каждого действия командой print в журнал значения переменных и предпринимаемые действия, думаю быстро разберетесь. Потом принты комментарятся, на случай если понадобятся снова.
В тестере всё то же самое.
В моей практике роботописания был такой смешной случай, в очень большом коде, вероятно в результате копирования похожего куска, но с другими условиями, я не заменил "<" на ">". И сколько не смотрел на этот код, побуквенно проигрывая логику, глаз видать замылился и не тот знак сравнения не замечал прямо в упор. Взгляд через журнал, где было написано что-то типа «Сигнал жопа =0. В панике закрываем сделку» помог. Одно дело код смотреть или даже визуализацию, другое такие понятные комментарии анализировать. Ну по крайней мере я теперь пользуюсь, затраты сокращает.
Если речь об эквити, кстати, значит возможно вы анализируете закрытые ордера. Там, если я всё правильно помню, есть нюанс, робот видит закрытые ордера за тот период, который показан в вашем терминале. Возможно тут проблема. Так же с порядком выдачи вам ордеров у них чехарда, они этот порядок даже меняли от билда к билду. Может поможет эта инфа.
TovaL,
P.S. Тестер фиксирует результат сделки. Для меня важны действия в промежутке между сделками, так как настройки и режимы меняются по плавающей прибыли.
Да и комментарии лень встраивать. Не привык... Хотя на будущее учту.
Это правда мне напоминает рассуждения типа о невозможности прыгнуть на 2 метра в высоту на основании собственного печального опыта.