3Qu
3Qu личный блог
27 августа 2021, 22:25

Проектирование ТС. 2 Тестер стратегий.

Люди достаточно часто пишут — я бы конечно моделировал, но где взять тестер стратегии? Не на чем тестировать.
Ну, это самое простое, что может быть, я тестер пишу каждый раз заново — лень искать, быстрее написать заново. Да, и функциональность, возможно, нужна какая-то другая.
Смотрим код тестера стратегии и его вызов:
def TradeSystem(ibegin):
    ln = len(sdata)
    i = ibegin
    indata =[]
    dealdata =[]
    while i < ln:
        ls = DealIn(i)
        if ls != 0:
            j = DealControl(i, ls)
            i = j
        i += 1 
    return dealdata, indata
    
DealsData, InData = TradeSystem(100)  #вызов тестера стратегий
Рабочий код, между прочим.)
ibegin — это номер свечи на истории с которой начнет работу тестер.
sdata — история в формате [datetime, o, h, l, c, v]
indata — все параметры открытия сделок для последующего анализа.
dealdata — все необходимые для последующего анализа данные о всех сделках на истории
Дальше идет цикл while() последовательно перебирающий свечи на истории, которые анализируются функцией DealIn(i) (собственно, это и есть ваша стратегия, определяющая момент открытия сделки Лонг или шорт — ls). DealIn() при обнаружении сделки также передает данные для анализа в indata
Далее, если ls = 1 (Long) или -1 (Short), мы попадаем в функцию сопровождения  сделки — DealControl(), которая в соответствии с вашей стратегией закрывает сделку в нужный момент и передает на выход номер свечи закрытия сделки j и данные в dealdata.
indata и dealdata находятся в пределах видимости наших функций DealIn(),  DealControl() и явно передавать их в эти функции нет необходимости.
Ну, и дальше цикл перебора свечей while() начинает считать уже со следующей свечи после закрытия сделки.
Тестер готов. За вами осталась только сама стратегия.
Ну, а анализ данных после тестирования — это можно кто во что горазд. На то он и Python, чтобы анализировать данные.
32 Комментария
  • Replikant_mih
    27 августа 2021, 22:33
    Ловушка. Насколько просто запилить простейший тестер, настолько же сложно реализовать полноценный бэктестер и всю остальную инфраструктуру. А простым наиграешься очень быстро — захочется больше возможностей, а там зыбучие пески. А простейший да, на питоне — изи вообще.
  • Foudroyant
    27 августа 2021, 22:44
    KУKЛа, жив и здоров. Просто поменял ник.

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

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