0
Подписаться
78
Подписчики

Реализация количественных торговых стратегий для анализа ценового импульса с использованием Python

Создано: 2019-08-09 15:49:06, Обновлено: 2024-12-19 21:03:15
comments   1
hits   3521

Реализация количественных торговых стратегий для анализа ценового импульса с использованием Python

Введение в стратегию торговли по импульсу цены

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

Анализ ценового импульса широко используется в традиционной ручной торговле, особенно при определении внутридневных односторонних трендов. Это банальная тема, что происходит с трендом? Лучший способ количественно оценить тренд — сравнить силу как длинных, так и коротких сторон. С точки зрения количественного сравнения анализ динамики цен является одним из лучших индикаторов.

В данной статье данная стратегия будет использована для разработки автоматизированной программы спотовой торговли цифровыми валютами на Huobi.com.

Формула расчета ценового импульса

AR = [Сумма всех (High-Open) за N дней / сумма всех (Open-Low) за N дней] * 100

Среди них:

  • N: Статистическое окно ежедневного периода времени, которое по умолчанию обычно составляет 30 дней, поскольку в месяце около 30 действительных торговых дней (цифровая валюта торгуется круглосуточно, поэтому это число может быть немного консервативным)

  • High: Самая высокая цена дня

  • Открытие: цена открытия дня

  • Низкая: Самая низкая цена дня

Как использовать ценовой импульс

Ценовой импульс отражает положение цены открытия между самой высокой ценой и самой низкой ценой за определенный период времени. Это положение является для нас основой для оценки перетягивания каната между двумя сторонами.

  • Мы предполагаем, что это значение составляет около 100. Если оно превышает 100, то начинает увеличиваться бычья сила, а если оно меньше 100, то начинает накапливаться медвежья сила.
  • Когда значение AR увеличивается, это означает, что рынок активен, популярность высока, и быки быстро продвигаются. Однако, если оно слишком высокое, это означает, что цена вошла в зону перекупленности, и вам следует выбрать правильное время для закрыть позицию. Не существует определенного стандарта для высоты значения AR. В общем, когда значение AR поднимается примерно до 120, цена, скорее всего, упадет.
  • Когда значение AR уменьшается, это означает, что рынок находится в состоянии рецессии, медведи в приподнятом настроении, а быкам нужно поработать усерднее. Если оно слишком низкое, это говорит о том, что цена, возможно, упала в зону перепроданности, и вы можно рассмотреть возможность ожидания возможности открыть длинную позицию. Как правило, когда значение AR падает ниже 50, цена перестает падать и вместо этого начинает расти.

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

Реализация количественных торговых стратегий для ценового импульса с использованием Python

Как обычно, мы открываем FMZ.COM, входим в учетную запись, нажимаем на центр управления и развертываем хост и робота.

Более подробную информацию о том, как развертывать хосты и роботов, можно найти в моей предыдущей статье: https://www.fmz.com/bbs-topic/4140

Читатели, желающие приобрести собственный хост для развертывания сервера облачных вычислений, могут обратиться к этой статье: https://www.fmz.com/bbs-topic/2848

Далее нажимаем на Библиотеку стратегий в левом столбце и нажимаем Новая стратегия.

В правом верхнем углу страницы написания стратегии не забудьте выбрать Python в качестве языка программирования, как показано на рисунке:

Реализация количественных торговых стратегий для анализа ценового импульса с использованием Python

Далее мы пишем код Python на странице редактирования кода. Следующий код имеет очень подробные построчные комментарии, и читатели могут постепенно понять и оценить его. Что еще более важно, хотя эта стратегия написана на основе спотовой торговли, Однако, масштабируемость следующего кода также учитывает торговлю фьючерсами. Заинтересованные читатели могут попробовать переписать следующий код для торговли фьючерсами. Логика самой стратегии универсальна. В количественной платформе Inventor мы подготовили для вас API-интерфейсы основных спотовых и фьючерсных бирж, поэтому работа по переписыванию будет очень простой и удобной.

Мы будем использовать спотовый биткоин Huobi в качестве цели торговли и начнем реализовывать эту стратегию:

import types # 导入Types模块库,这是为了应对代码中将要用到的各种数据类型
def main(): # 主函数,策略逻辑从这里开始
    IDLE = 0 # 用来标记持仓状态,可以理解为0即为空闲状态,也就是空仓状态
    LONG = 1 # 多头持仓
    SHORT = 2 # 空头持仓,注意,此策略应用于现货市场,所以不存在空头开仓或者持仓情况,这里这样写,是为了方便理解策略和以后的扩展(如扩展到期货市场)
    state = IDLE # 标记持仓状态的变量
    while True: # 进入循环
        r = exchange.GetRecords() #GetRecords是发明者量化平台的官方API,详细用法请参见:https://www.fmz.com/api
        if len(r) <= 1: # 判断K线是否大于一根,也就是当前是否为开盘状态,否则可能会进入死循环,这里也方便读者进行扩展,大一些的K线周期趋势状态更稳定。
           Log("bar的数量不足, 等待下一根bar...") # 输出日志
           continue # Python循环控制语句,继续下边的循环内容

        # 开始进行价格动量的量化分析
        ar = sum(r.High - r.Open) / sum(r.Open - r.Low) * 100 # 计算公式

        account = _C(exchange.GetAccount) # 获取账户信息,_C同样为发明者量化平台的官方API,用法请参见:https://www.fmz.com/api

        if ar < 95 and (state == IDLE or state == SHORT) :  # AR值小于超卖线且账户拥有资金,则全仓买入
           
           if account["Balance"] > 50:
                exchange.Buy(-1, account["Balance"] * 0.9) # 市价单全仓买入
                state = LONG # 改变持仓状态为LONG
                  
        elif ar > 80 and (state == IDLE or state == LONG):  # AR值大于超买线且账户有持仓,则全仓卖出
            
           if account["Stocks"] > 0.01:
                exchange.Sell(-1, account["Stocks"] * 0.9) # 市价单全仓卖出
                state = SHORT # 改变持仓状态为SHORT
                      
        LogStatus(_D(), exchange.GetAccount() , state) # 更新日志信息

Стратегия бэктестинга

После написания стратегии, первое, что нам нужно сделать, это провести бэктест, чтобы увидеть, как она работает на исторических данных. Однако, обратите внимание, что результаты бэктестинга не равны прогнозам на будущее. Бэктестинг можно использовать только как Ознакомьтесь с информацией, чтобы оценить эффективность нашей стратегии. Как только рынок изменится и стратегия начнет терпеть большие убытки, мы должны быстро определить проблему, а затем изменить стратегию, чтобы адаптировать ее к новой рыночной среде. Например, если стратегия терпит убытки более 10%, мы должны немедленно остановите стратегию и найдите проблему, начав с корректировки порогового значения.

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

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

Реализация количественных торговых стратегий для анализа ценового импульса с использованием Python

Посмотреть результаты бэктестинга

Реализация количественных торговых стратегий для анализа ценового импульса с использованием Python

Видно, что данная стратегия хорошо себя зарекомендовала в ходе бэктестинга в этом месяце.

Преимущества и недостатки стратегий ценового импульса

  • Преимущества

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

  • Недостатки

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

Пороговое значение стратегии также необходимо определить на основе характеристик целевой транзакции. Колебания цен на рынке цифровых валют относительно велики, а объем торгов огромен, особенно для основных валют, таких как биткоин, у которого нет ценового предела, поэтому порог выше, чем на традиционном фондовом рынке, а 80% перепроданности Обычно этой линии трудно коснуться. Поэтому сигналов на покупку меньше; в то время как линия перекупленности 170 часто находится ниже порога, поэтому сигналы на продажу срабатывают чаще. Это приведет к тому, что стратегия большую часть времени будет находиться в пустом положении, а коэффициент использования капитала станет очень низким. С января этого года биткоин переживает подъем: цена выросла с максимума в 3500 долларов до почти 13 000 долларов. Порог пересек отметку 170 очень рано и с тех пор остается высоким. Если бы мы продавали по традиционной линии перекупленности 170, мы бы вышли из рынка примерно на уровне 5000, и после этого не было бы сигнала на открытие позиции, поэтому мы получили лишь небольшую прибыль на большом бычьем рынке.

Таким образом, на этом рынке никогда не существовало какой-либо святой Граалевой торговой стратегии, стратегии, которая могла бы приносить деньги вечно без бэктестинга или отладки. Мы, количественные трейдеры, как и субъективные трейдеры, в конечном итоге достигаем того же пункта назначения. Нам нужно адаптироваться к изменениям рынка, адаптироваться к местным условиям и реагировать на постоянно меняющиеся обстоятельства. Когда стратегия неэффективна, нам нужно вносить своевременные коррективы.

Друзья, у которых есть вопросы, могут оставить сообщение на https://www.fmz.com/bbs. Будь то стратегии или технологии платформы, Inventor Quantitative Platform имеет профессиональный персонал, который ответит вам в любое время.