Количественная стратегия торговли с анализом динамики цен в Python

Автор:Лидия., Создано: 2023-01-11 11:35:36, Обновлено: 2023-09-20 11:20:06

img

Количественная стратегия торговли с анализом динамики цен в Python

Введение в стратегию торговли динамикой цен

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

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

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

Формула расчета динамики цен

AR = [Сумма всех (высоко-открытых) за N дней / Сумма всех (низко-открытых) за N дней] * 100

Среди них:

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

  • Высокая: самая высокая цена за один день

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

  • Низкая: самая низкая цена за один день

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

Движение цены отражает положение открывающей цены между самой высокой и самой низкой ценой за определенный период времени.

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

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

Внедрение количественной стратегии торговли для динамики цен в Python

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

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

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

Далее мы нажимаем на библиотеку стратегии в левом столбце и нажимаем на добавление стратегии.

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

img

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

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

import types # Import the Types module library, which is designed to handle the various data types that will be used in the code.
def main(): # The main function, where the strategy logic begins.
    IDLE = 0 # It is used to mark the position status, which can be understood as 0, that is, idle status, i.e. short position status.
    LONG = 1 # Long positions
    SHORT = 2 # Short position. Note that this strategy is applied to the spot market, so there is no short opening or position. This is written here to facilitate understanding of the strategy and future expansion (such as extending to the futures market).
    state = IDLE # Variables that mark the status of a position
    while True: # Enter the loop
        r = exchange.GetRecords() # GetRecords is the official API of the FMZ Quant Platform, for detailed usage please refer to: https://www.fmz.com/api.
        if len(r) <= 1: # Judge whether the K-line is larger than one, that is, whether it is currently in the open state, or it may enter an endless loop. Here, it is also convenient for readers to expand, and the trend state of a larger K-line period is more stable.
           Log("The number of bars is not enough, wait for the next bar...") # Output logs
           continue # Python loop control statement, continuing with the next part of the loop.

        # Begin quantitative analysis of price momentum
        ar = sum(r.High - r.Open) / sum(r.Open - r.Low) * 100 # Calculation formula

        account = _C(exchange.GetAccount) # Get account information, _C is also the official API of the FMZ Quant platform, for usage, please refer to: https://www.fmz.com/api.

        if ar < 95 and (state == IDLE or state == SHORT) :  # If the AR value is less than the oversold line and the account has funds, then buy all positions.
           
           if account["Balance"] > 50:
                exchange.Buy(-1, account["Balance"] * 0.9) # Buy all positions of the market order
                state = LONG # Change the position status to LONG
                  
        elif ar > 80 and (state == IDLE or state == LONG):  # If the AR value is greater than the overbought line and the account has a position, sell the whole position.
            
           if account["Stocks"] > 0.01:
                exchange.Sell(-1, account["Stocks"] * 0.9) # Sell all positions market order
                state = SHORT # Change the position status to SHORT
                      
        LogStatus(_D(), exchange.GetAccount() , state) # Update log information

Обратное тестирование стратегии

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

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

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

img

Результаты обратных испытаний:

img

Мы можем видеть, что стратегия хорошо работала в обратном тесте этого месяца.

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

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

  • Недостатки Используйте значение импульса цены самостоятельно, чтобы судить о том, слишком ли высока или низка цена, чтобы судить о длинном / коротком, скорее всего, выйдет рано в волне основных тенденций, или на дно рыбалки рано в волне основного снижения рынка.

Ограничения на цены на криптовалютах, в частности на основных валютах, таких как биткоин, не ограничиваются, поэтому пороговое значение выше, чем на традиционном фондовом рынке. Линия 80 перепроданных обычно трудно дотронуться, и есть несколько сигналов покупки; В то время как линия 170 перекупленных часто ниже порога, сигнал продажи часто запускается. Это приведет к тому, что стратегия будет находиться в короткой позиции большую часть времени, и использование фонда станет очень низким. Например, с января этого года цена биткоина выросла с 3500 до почти 13000 в волне бычьего рынка.

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

Если у вас есть какие-либо вопросы, вы можете оставить сообщение наhttps://www.fmz.com/bbs, будь то стратегия или технологии платформы, на платформе FMZ Quant есть профессионалы, готовые ответить на ваши вопросы.


Связанные

Больше