Andrey (npokka)
Andrey (npokka) личный блог
14 февраля 2016, 08:28

Интересно мнение алготрейдеров со стажем

Всем привет. 

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

Робот под ТСлаб. Оттестирован на 2х инструментах. Ри и Си. 
Тестировал на истории 3 года. 
Оптимизируемых параметров 5 (3 из них для трейла).

Размер проскальзывания установил 70п для тестирования Ри (достаточно ли?)
var comisHnd = new AbsolutCommission() {Commission = 35};

Планирую торговать 12 контрактов. Депо 1 млн. Риск на сделку 2% от депо.
Стоп для Ри 1750 пунктов.
Максимальная просадка на 3 летнем периоде составила 27%.

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

1. Скрипт не открывается на первом утреннем часе, но может быть в позиции в это время. Побаиваюсь, что могу пролететь со стопом.
2. Пока не понял, как часто нужно обновлять оптимизируемые параметры и на какой истории это делать.
3. Как понять, что скрипт перестал работать (после какой просадки нужно его останавливать).
4. На какие параметры нужно обращать внимание при тестировании будущих скриптов, кроме макс просадки и доходности?


Интересно мнение алготрейдеров со стажемИнтересно мнение алготрейдеров со стажем
81 Комментарий
  • Федор
    14 февраля 2016, 11:47
    стопы убери… это пятка ахилеса)
    • MaGaDaN
      14 февраля 2016, 12:19
      Федор, стопы убери, а что делать как их заменить
  • Виктор Татарников
    14 февраля 2016, 11:50
    Прогнать робота с меньшим депо. Вполне вероятно выявятся слабые звенья.
  • Sergey Pavlov
    14 февраля 2016, 11:55
    1. Со стопом обязательно пролетите (не один раз и не только на первом часе) — это нормальная история, не надо этого бояться, надо к этому быть готовым.
    2. Хоть каждый день. Всё зависит от того, каков физический (финансово-экономический) смысл этих параметров и аналогично каков смысл процедуры оптимизации (не математическо-вычислительный, а опять же физическо-финансовый).
    3. Достоверно (с вероятностью 1) никак. Это, скорее, вопрос психологический.
    4. Средняя сделка, профит-фактор и фактор-восстановления. Однако, намного важнее и полезнее смотреть не на формально голые числа каких-либо показателей, а индивидуально просмотреть каждую сделку на истории, чтобы четко понимать, где и за счет чего ваша система зарабатывает и теряет.

    P.S. Единственное, что может вам помочь — это уверенность в двух моментах:
    1. Ваша система основана на закономерности, присущей Ри и Си.
    2. Ваша система не запоминает удачные входы-выходы на предыстории, а эксплуатирует найденную в п.1 закономерность.
    3. Результаты системы на истории не являются ошибкой вычислений (заглядывание в будущее) или сделками, которые невозможно исполнить в реальных торгах.
    Собственно, для проверки того, что система не сломалась, вам необходим тест, который вы, условно говоря, проводите с каждым новым тактом (баром), чтобы убедиться в том, что закономерность на рынке осталась и нужно продолжать торговать, не взирая, скажем, на текущую просадку в 35 или 40%.
  • А. Г.
    14 февраля 2016, 11:56
    Для 12 контрактов 70 пунктов «за глаза», но стоп в пунктах — это ошибка. Он должен зависеть от волатильности.
    • VladMih
      14 февраля 2016, 12:30
      А. Г., согласен.
      Он должен либо быть очень коротким, либо привязываться к волатильности. Как вариант, можно цеплять за хай/лоу нескольких предвходных баров или экстремумов (таким образом тоже учитывается текущая волатильность).
    • Oleg Only Algo
      14 февраля 2016, 13:15
      А. Г., согласен. Стоп вообще должен быть аварийным- то есть большим. Остальное все должно просчитываться и стоп и тейк и переворот по условиям. просадка огромная для алгоритма. И период надо брать весь!!! а отдельные участки не показательны! И параметр оптимизации настраиваемый лучше один:-) и этот алгоритм- туфта одним словом, увы. Таких алгоритмов тысячи и они ни о чем. ЭтоТ со 100 проЦ вероятностью будет сливать счет
      • А. Г.
        14 февраля 2016, 15:47
        Oleg Only Algo,

        Это от системы зависит. Если трендовая, то стоп должен быть к*волатильность (к — параметр в бОльшей степени зависит от психотипа трейдера). А если контртренд, то стоп — это факт наличия тренда, т. е. сравнительно далекий.
        • SciFi
          15 февраля 2016, 17:34
          А. Г., а волатильность как считаете? по ATR, sigma и за какой период?
          • А. Г.
            15 февраля 2016, 21:18
            SciFi, 

            Ни то, ни другое и не третье, но это и не столь важно при наличии коэффициента k
      • SciFi
        15 февраля 2016, 17:35
        Oleg Only Algo, как считать тейк? 
  • Mr. Bean
    14 февраля 2016, 11:58
    средний П/У маленький. не понятно насколько сильна подгонка. нужна стата с форвард теста.
  • Дмитрий Д.
    14 февраля 2016, 12:00
    Начните торговать 1 контрактом. Сразу и увидите все косяки
  • Falcone
    14 февраля 2016, 12:15
    «3. Как понять, что скрипт перестал работать (после какой просадки нужно его останавливать).»

    Когда просадка превысит тестовую на истории — в вашем случае за три года.
  • VladMih
    14 февраля 2016, 12:36
    Просадки как по величине, так и по времени такие, что я бы думал не о том, когда робота останавливать, а… зачем его в таком виде запускать.
    Запустить и через год остановить с убытком 30-40-50% вероятность более 50% (не математически, а чисто логически) — это ж ведь не ваша цель?

    PS: меня нельзя считать алготрейдером со стажем, так что…
    Можете считать, что это мнение ПРОСТО трейдера )
  • Димас Упрунзин
    14 февраля 2016, 12:46
    Бл.опять двадцать пять. Да усе уже давно протестировано…
  • Alex Hazar
    14 февраля 2016, 12:47
    Не разбирался с tslab поэтому на всякий спрошу. Комиссия вся учтена?
  • Дмитрий ЕрМак
    14 февраля 2016, 12:48
    Последний максимум эквити 07/2015 пол года назад… Готовы ждать пол года еще?
  • MTrader
    14 февраля 2016, 12:51
    если это ваш самый первый робот и вы без опыта, то рекомендую 
    -запустить робота который сделали и не разу не вмешаться в его торговлю
    -столкнутся с множеством различной степени косяков технической стороны и решить их с приемлемым для вас уровнем остаточного техн. риска
    -думать
    -писать параллельно с этим других роботов, много роботов, по сути большая часть вашего времени должна быть занята исследованиями
    -чтобы понять какие метрики оттестированной стратегии важны, то тестируйте на истории до 15 или 14 года, а потом смотрите чтобы было в эти года, что изменилось, какие чувствительные метрики в ваших стратегиях (одна из ключевых это вола, выше уже подсказали)
    -учить апи тслаба, сишарп, теор.вер., эконометрику
    дальше сами поймете что вам делать
  • П М
    14 февраля 2016, 13:26
    в роботе у меня стопов нет, закрываю лимитками по закрытию свечи (минутка?) стопы это не совсем честно.
    проскальзывание 70 пунктов выглядит даже излишним, хотя это зависит. в РИ в принципе более менее ликвидно.
    какие параметры смотреть — вам решать. выглядит всё неплохо, хорошее мат ожидание, высокий фактор восстановления. можно ещё сортино посчитать. 
    вообще же всё зависит что за стратегия. у каждой стратегии своя фитнес функция, по-моему.

  • ICEDONE
    14 февраля 2016, 13:48
    делай не на истории робота а за месяц до начала жизни контракта. Переносы через день лучше не делать чтобы не нервничать.
  • Вячеслав Собакин
    14 февраля 2016, 13:55
    Для начала запусти бота на 1 контракт так ты познаешь все косяки. Сделай второго другого бота и запусти его опять же на 1 контракт — чем больше разных ботов тем надежнее 
  • П М
    14 февраля 2016, 13:56
    кстати всегда хотел спросить, Wealthlab профит в сделке показывает к бюджету сделки или к общему бюджету?
  • SECRET
    14 февраля 2016, 14:22
    я бы не запустил такую страту на реальные торги.
    • П М
      14 февраля 2016, 15:05
      SECRET, из-за последней пилы или общей просадки?
      • SECRET
        14 февраля 2016, 15:33
        ПBМ, кривая эквити. мне больше по душе вот такие:
        • Niktesla (бывш. Бабёр-Енот)
          14 февраля 2016, 19:19
          SECRET, а если комиссию вычесть?))
          PS: а картинками мы и сами богаты...
          • SECRET
            14 февраля 2016, 20:30
            Бабёр-Енот, комиссия уже вычтена.
          • Sergii Onyshchenko
            19 февраля 2016, 05:05
            Бабёр-Енот, 
  • facevalue
    14 февраля 2016, 15:09
    Много чего не учтено, и много дельных советов. Я даже по-хорошему удивлен. Повторяться не буду:

    1.  Запустите ЛЮБОГО робота на реале, одним лотом. Feel that. )))

    2. Роботы, которые сидят по полгода в +- 0 не достойны реальных счетов. Проверено лично и на очень большом депозите. Соответственно, совет:

    3. Опираясь на логику, построенную в роботе, найдите объяснение рывкам по прибыли и убыткам. Именно рывкам, резким приростам или убыткам. Все остальное шум. Если не сможете выявить закономерность, в мусорку. Если сможете — вуаля, это будет толковый робот. )

    Сложность такой оценки заключается в том, что рывки могут быть связаны с какими-то факторами, не заложенными в базовую логику. Но с таким подходом к самой роботизации изменится подход к оценке качества и логике самих роботов.
    • Niktesla (бывш. Бабёр-Енот)
      14 февраля 2016, 19:26
      facevalue, не, одним лотом не прочувствовать… надо хотя бы двумя! иначе...
      … не прочувствовать ту жопу, что начинается внутри у робота при частичном исполнении заявок… ^^'
      • facevalue
        16 февраля 2016, 12:43
        Бабёр-Енот, Весьма согласен. ) Но я это написал для того, чтобы человек с минимальным риском вообще почувствовал каково это. А логика с частичным исполнением — это отдельная статья для обсуждения. Мы в свое время столкнулись с этой проблемой не на шутку, но решение было найдено. )
  • Chepell
    14 февраля 2016, 15:09
    А разделение истории на IS/OOS периоды было?
    • Ivor
      16 февраля 2016, 00:47
      Chepell, IS/OOS это что?
  • facevalue
    14 февраля 2016, 15:11
     И да, самый большой обман — результат на большом временном периоде. В следствие чего получается вот такая статистика. Глобально прирост, но по факту пила с рывками. Тестировать полезно на отдельных участках, зачастую к чему-то привязанным. Например, на фьючах это может быть банальная экспирация. Или отдельно сознательно вырезанные участки графика. Например, на аптренде вот такая стата. Окей, выпиливаем, вставляем в флет. Какая стата? И т.д.
  • Олег Бу
    14 февраля 2016, 15:43
     А данные для тестирования с Финама скачаны?
    • Cheshirscy
      14 февраля 2016, 15:58
      Олег Бу, что плохого в финамовских данных? периоды «склеивания» фьючей?
      • Олег Бу
        14 февраля 2016, 16:02
        Cheshirscy, Да, смотрю на периодичность просадок. Поxоже на то.
        • Cheshirscy
          14 февраля 2016, 16:04
          Олег Бу, ну это все от тайм фрейма завист.  Если внутри дня… то и фиг с ним
          а вообще у меня когда вот такое было

          function isLastContractDay()
          {
          CyrDateNum = DateNum();
          result = ( CyrDateNum == 1080307)
          || (CyrDateNum == 1080607)
          || (CyrDateNum == 1080912)
          || (CyrDateNum == 1081209)
          || (CyrDateNum == 1090306)
          || (CyrDateNum == 1090609)
          || (CyrDateNum == 1090909)
          || (CyrDateNum == 1091209)
          || (CyrDateNum == 1100309)
          || (CyrDateNum == 1100609)
          || (CyrDateNum == 1100909)
          || (CyrDateNum == 1101209)
          || (CyrDateNum == 1110309)
          || (CyrDateNum == 1110609)
          || (CyrDateNum == 1110909)
          || (CyrDateNum == 1111209)
          || (CyrDateNum == 1120307)
          || (CyrDateNum == 1120609)
          || (CyrDateNum == 1120907)
          || (CyrDateNum == 1121207)
          || (CyrDateNum == 1130307)
          || (CyrDateNum == 1130607)
          || (CyrDateNum == 1130909)
          || (CyrDateNum == 1131209)
          || (CyrDateNum == 1140305)
          ;

          return result;
          }

          • Олег Бу
            14 февраля 2016, 16:09
            Cheshirscy, я по кубикам)
  • Cheshirscy
    14 февраля 2016, 15:44
    Не знаю на каком таймфрейме робот, но будем считать, что на часовиках. 


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

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


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

    Вот, вроде простой вопрос, а мне говорит о том, что такого робота рано включать в торги. Вопрос, говорит о том, что стратегия не проходила тест на подгонку параметров. В разных торговый программах это по разному называется, но суть такого теста в следующем: Берем 2 периода, первый — это период, на котором будем рассчитывать параметры (например 3 года), второй период — это период, в котором будем торговать по рассчитанным параметрам (например 3 месяца). И прогоняем с начала времен + большой период. для РТС будет выклядеть так:
    InSample: 2005.01 -2008.12  OutSample 2008.01.01 — 2008.03.31
    InSample: 2005.03 -2008.03  OutSample 2008.03.01 — 2008.06.30
    И.т.д
    Причем нас будет интересовать, только те цифры, что появятся в OutSample. Меняя эти периоды — сам поймешь, через какое время надо пересчитывать параметры. 


    3. Как понять, что скрипт перестал работать (после какой просадки нужно его останавливать).

    На тестах есть параметр — максимальная просадка. Как только в реале макс просадка стала больше тестовой — останавливай.

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

    4. На какие параметры нужно обращать внимание при тестировании будущих скриптов, кроме макс просадки и доходности?

    Это кому как нравится, для меня любимый параметр CAR/MD, т.е. среднегодовая доходность деленная на макс просадку
  • Cheshirscy
    14 февраля 2016, 15:57
     Ну и самое главное. ТСЛаб, это не программа для тестирования стратегий, это программа для торговли, а это, как говорят в Одессе, 2 большие разницы. Нужны 2 проги. Первая — это серьезная программа именно для тестирования стратегий (Wealth lab, AmiBroker и т.д.) вторая — именно торговый робот, который повторяет ОТТЕСТИРОВАННЫЙ алгоритм на реальных торгах. Сейчас это возможно и в квике и в транзаке и в тслабе. 
    • Дмитрий Черников
      14 февраля 2016, 16:19
      Cheshirscy, не понял а чем плох тслаб для тестирования? объясните на пальцах…
      • Cheshirscy
        14 февраля 2016, 16:29
        Дмитрий Черников, В нем есть is/oos анализ? Он умеет вытаскивать данные из внешних баз данных? В нем есть возможность добавить свои параметры в итоговый отчет по стратегии? В нем есть генетические алгоритмы оптимизации? Это просто вопросы, я его года 2 назад смотрел. Может сейчас там все это и есть…
        • Chepell
          14 февраля 2016, 21:17
          Cheshirscy, все верно говоришь! У самого так реализовано, рисеч в мультичартсе и переписывание для торговли под тслаб.
    • Ivor
      16 февраля 2016, 00:51
      Cheshirscy, +++
  • MyProfit
    14 февраля 2016, 16:00
    Оптимизируемых параметров 5


    В этом будут сбои, т.к. переоптимизация системы несет убытки, имхо. Надо пробовать работать без оптимизируемых параметров. 
    • Cheshirscy
      14 февраля 2016, 16:01
      MyProfit, Многовато, конечно, но надеюсь, если автор прогонит на  InSample OutSample — сам все поймет
  • Niktesla (бывш. Бабёр-Енот)
    14 февраля 2016, 19:13
    да я думаю, сойдет для сельской местности...
    1 контракт на 100к вы по крайней мере сразу не сольете...
    а со временем еще чё-нить придумаете.
  • KNK
    14 февраля 2016, 21:46
    Фактор восстановления маленький, как и процент выигрышных сделок. 5 оптимизируемых параметров это вообще перебор. Зачем 3 года тестов, запусти с этими параметрами на последнем, предпоследнем фьюче и выбери разные участки с трендом вверх вниз и флетом, затем участок с всеми тремя составляющими.
  • Deleted
    14 февраля 2016, 22:03
    Маловато одного алгоритма ддя торговли, тем более такого. Он сам по себе может и не плох, но судя по графику, «берет» только в определенную фазу рынка.

    Нужно торговать портфель алгоритмов, которые в идеале не скоррелированны. Какие это алгоритмы?

    Трендовые.
    Контртрендовые.
    Инвесторские.
    Консервативные.

    Диверсификация ключ к успешной долгосрочной торговле.
  • Deleted
    14 февраля 2016, 22:10
    Насчет трейла. Я в свое время провел массу тестов. В хороших трендовых алгоритмах трейл только ухудшает ситуацию. Попробуйте fixed в пунктах или в единицах волатильности, может будет лучше. Оптимизация трейла — это всегда путь в к подгонке кривой, потому что он зависит от максимумов и минимумов  «короткой» волатильности.
    • Chepell
      14 февраля 2016, 22:49
      Denis Gabaydulin, у меня трейлы работают только на IS ))
  • Deleted
    14 февраля 2016, 22:29
    Не так уж и много. Сотни. В tslab мощный API. Также у меня есть свой собственный framework поверх tslab.
    github.com/sherman/onTSLab ( публичная часть).

    Все reusable части я выношу в библиотеки.
    • Cheshirscy
      14 февраля 2016, 23:47
      Denis Gabaydulin, плюсую, у меня тоже сотни, ноя через транзак. Там реюзебл не вынесешь. Т.е 500 600 строк. И львиная доля того, что повтопяется от робота к роботу
    • Deleted
      15 февраля 2016, 21:41
      Andrey, можно использовать в разных алгоритмах. Там не только метожы, а целые классы или даже библиотеки. Я выше ссылку кидал.
  • SciFi
    15 февраля 2016, 17:18
    Занимаюсь алготрейдингом больше года. Мои советы:

    1. Не используй TSLab для реальной торговли — он глючный очень. Используй для бек-тестов. Для реальной торговли я пишу код сам с нуля практически, в котором все понимаю до запятых.

    2. Не торгуй сразу большим объемом. Первый месяц (как минимум) торгуй 1 лотом.

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

    4. Сначала торгуй 1 роботом на 1 инструменте 1 лотом. Сфокусируйся на 1 алгоритме, доведи его исполнение до совершенства. Когда выйдешь в плюс, начинай раскручивать маховик. 

    Пиши больше о своей торговле, дам больше советов. Но пока вот эти.
    • Ivor
      16 февраля 2016, 00:32
      SciFi, ну насчет глючности разные мнения есть. меня например не подводит. Для тестов, как раз таки ТСЛаб менее всего подходит, Амиброкер и Велс-Лаб дадут ему фору. Ну это все Имхо конечно. 
      А стоп по по уровням это как? Чем от трейлинга отличается? 
      • SciFi
        16 февраля 2016, 10:17
        Ivor, трейлинг стоп — в квике по крайней мере это такой стоп, который закрывает позицию, если цена откатывается от своего максимума (в случае лонга) на определенную величину, называемую отступом. А скользящий стоп, который я рекомендую, — это стоп, который закрывает позицию, если цена откатывается ниже предыдущего минимума (в случае растущего тренда). 
        • Ivor
          16 февраля 2016, 10:21
          SciFi, а можете поделиться кодом? 
          • SciFi
            16 февраля 2016, 10:27
            Ivor, 

            ' Если есть активная позиция, и есть стоп, сверяем стоп с теоретическим стопом и если они не равны, удаляем стоп. Потом он выставится в следующей функции.
            ' При этом должно пройти достаточно много времени с последнего сдвига стопа и предыдущий стоп не должен быть нулевой
            IF (TOTAL_NET <> 0) AND (STOP_ORDER_COUNT <> 0) AND (OPEN_ORDERS == 0) AND (NEW_STOP_ALLOWED == 1)
            IF (TOTAL_NET > 0)
            STOP_LOSS_ACTIVATION_PRICE = PREV_LOW_PRICE — ABS_STOP_LOSS
            ' Если в длинной позиции новый стоп выше предыдущего и позиция прибыльная, удаляем стоп
            IF (STOP_LOSS_ACTIVATION_PRICE > STOP_LOSS) AND (PREV_CLOSE_PRICE > LAST_TRADE_PRICE)
            KILL_ALL_STOP(1) ' Удаляем все активные стоп-заявки

            MSG = ROBOT_NAME & ": Стоп перемещен. " & GET_VALUE(TRANS_RESULT, «DESCRIPTION»)
            MESSAGE (MSG, 1) ' 1 — информация, 2 — внимание, 3 — ошибка

            END IF
            END IF

            IF (TOTAL_NET < 0)
            STOP_LOSS_ACTIVATION_PRICE = PREV_HIGH_PRICE + ABS_STOP_LOSS
            ' Если в короткой позиции новый стоп ниже предыдущего и позиция прибыльная, удаляем стоп
            IF (STOP_LOSS_ACTIVATION_PRICE < STOP_LOSS) AND (PREV_CLOSE_PRICE < LAST_TRADE_PRICE)
            KILL_ALL_STOP(1) ' Удаляем все активные стоп-заявки

            MSG = ROBOT_NAME & ": Стоп перемещен. " & GET_VALUE(TRANS_RESULT, «DESCRIPTION»)
            MESSAGE (MSG, 1) ' 1 — информация, 2 — внимание, 3 — ошибка
            END IF
            END IF
            END IF

            • Ivor
              16 февраля 2016, 10:49
              SciFi, спасибо! будем разбираться. 
  • Ivor
    16 февраля 2016, 00:28
    внимательно изучите запуск робота в реальную торговлю. там много тонких настроек. и он отличается в программном коде от исторического робота. в частности цикл перебора исторических баров надо убрать. 
  • Ivor
    16 февраля 2016, 00:36
    и кстати, просадка великовата, и профит фактор маловат. 
    Но, советую запустить робота малым лотом, чтоб прочувствовать реальную торговлю. Чтобы потом было минимум сюрпризов, когда напишете стратегию получше, которой можно доверить суммы побольше. Про лям пока забудьте)) 
  • Ivor
    16 февраля 2016, 00:39
     и еще. совет, который поможет если не заработать, то хотя бы не слить. Используйте форвард тест. т.е. грубо говоря, потестили стратегию до 1 июля 2015 года, нашли оптимальные параметры, и далее с этими параметрами запустите с этого числа по сегодняшний день и посмотрите что получиться. Многие утверждают, что это фигня, но с ним ка то спокойнее. 
      • Cheshirscy
        14 марта 2016, 22:09
        Andrey (npokka), Поздновато конечно уже отвечаю. Но тестирую на баксе рубле и евро рубле — тебе понравится :)
          • Cheshirscy
            14 марта 2016, 23:19
            Andrey (npokka), это я про черепах
  • Alrom
    16 февраля 2016, 22:00
    Мусор. Вот секрет с бабром-енотом — шарят.

Активные форумы
Что сейчас обсуждают

Старый дизайн
Старый
дизайн