Количественная стратегия на основе пересечения двойной скользящей средней


Дата создания: 2024-03-08 14:18:21 Последнее изменение: 2024-03-08 14:18:21
Копировать: 1 Количество просмотров: 285
1
Подписаться
1166
Подписчики

Количественная стратегия на основе пересечения двойной скользящей средней

Обзор

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

Принципы стратегии

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

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

Кроме того, в стратегии также введены фильтры времени торгов. Пользователи могут самостоятельно устанавливать время начала и окончания торгов, чтобы избежать торгов в определенные периоды времени (например, праздники, неторговые периоды и т. д.).

Анализ преимуществ

  1. Простота использования: стратегия имеет четкую логику, используя только два EMA в качестве торговых сигналов, что позволяет легко понять и реализовать.

  2. Тренд-слежение: EMA может быстро реагировать на изменения цен, что позволяет стратегии вовремя улавливать формирование и окончание трендов, что позволяет получать доход от тренд-слежения.

  3. Управление рисками: введение фиксированного процентного стоп-лосса и стоп-лосса, основанного на цене закрытия предыдущей K-линии, позволяет эффективно контролировать потери и отзывы от одной сделки.

  4. Гибкость параметров: пользователь может настроить свой цикл EMA, процент стоп-ложа, использование стоп-ложа на предыдущей K-линии, временной промежуток торговли и т. д. в соответствии с его потребностями, чтобы оптимизировать эффективность стратегии.

Анализ рисков

  1. Риск оптимизации параметров: производительность стратегии зависит от выбора параметров, таких как циклы EMA, процент стоп-убытков и т. Д. Ненадлежащие параметры могут привести к плохой производительности стратегии. Поэтому необходимо оптимизировать и отсчитывать параметры на исторических данных, чтобы выбрать оптимальные параметры.

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

  3. Стоимостный риск: эта стратегия может привести к увеличению количества сделок, что увеличит стоимость сделок. Поэтому необходимо выбрать подходящий торговый стандарт и объем сделок и контролировать стоимость каждой сделки.

Направление оптимизации

  1. Введение большего количества технических индикаторов: на основе перекрестных сигналов EMA, ввод других технических индикаторов, таких как RSI, MACD и т. Д., формирует многофакторный торговый сигнал, повышает точность определения тенденции.

  2. Динамический стоп: в зависимости от рыночной волатильности, ATR и других показателей, динамически корректируйте стоп-позиции, чтобы максимально уменьшить потери прибыли от стоп-убытков при одновременном контроле риска.

  3. Управление позициями: в зависимости от силы рыночных тенденций, отклонения цены от средней линии и т. Д., Динамически корректируйте размер позиции, увеличивая позиции при сильных тенденциях и уменьшая позиции при ослаблении или неясности тенденций.

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

Заключение

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

Исходный код стратегии
/*backtest
start: 2023-03-02 00:00:00
end: 2024-03-07 00:00:00
period: 1d
basePeriod: 1h
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

// This source code is subject to the terms of the Mozilla Public License 2.0 at https://mozilla.org/MPL/2.0/
// © ZenAndTheArtOfTrading / www.PineScriptMastery.com
// @version=5
strategy("EMA strategy", 
     overlay=true, 
     initial_capital=50000,
     default_qty_type=strategy.percent_of_equity, 
     default_qty_value=100, // 100% of balance invested on each trade
     commission_type=strategy.commission.cash_per_contract, 
     commission_value=0.005) // Interactive Brokers rate

// Get user input
i_ma1           = input.int(title="MA 1 Length", defval=200, step=10, group="Strategy Parameters", tooltip="Long-term MA")
i_ma2           = input.int(title="MA 2 Length", defval=10, step=10, group="Strategy Parameters", tooltip="Short-term MA")
i_stopPercent   = input.float(title="Stop Loss Percent", defval=0.10, step=0.1, group="Strategy Parameters", tooltip="Failsafe Stop Loss Percent Decline")
i_lowerClose    = input.bool(title="Exit On Lower Close", defval=false, group="Strategy Parameters", tooltip="Wait for a lower-close before exiting above MA2")
i_startTime     = input(title="Start Filter", defval=timestamp("01 Jan 1995 13:30 +0000"), group="Time Filter", tooltip="Start date & time to begin searching for setups")
i_endTime       = input(title="End Filter", defval=timestamp("1 Jan 2099 19:30 +0000"), group="Time Filter", tooltip="End date & time to stop searching for setups")

// Get indicator values
ma1 = ta.ema(close, i_ma1)
ma2 = ta.ema(close, i_ma2)

// Check filter(s)
f_dateFilter = true

// Check buy/sell conditions
var float buyPrice = 0
buyCondition    = close > ma1 and strategy.position_size == 0 and f_dateFilter
sellCondition   = close < ma2 and strategy.position_size > 0 //and (not i_lowerClose or close < low[1])
stopDistance    = strategy.position_size > 0 ? ((buyPrice - close) / close) : na
stopPrice       = strategy.position_size > 0 ? buyPrice - (buyPrice * i_stopPercent) : na
stopCondition   = strategy.position_size > 0 and stopDistance > i_stopPercent

// Enter positions
if buyCondition
    strategy.entry(id="Long", direction=strategy.long)

if buyCondition[1]
    buyPrice := open

// Exit positions
if sellCondition or stopCondition
    strategy.close(id="Long", comment="Exit" + (stopCondition ? "SL=true" : ""))
    buyPrice := na

// Draw pretty colors
plot(buyPrice, color=color.lime, style=plot.style_linebr)
plot(stopPrice, color=color.red, style=plot.style_linebr, offset=-1)
plot(ma1, color=color.blue)
plot(ma2, color=color.orange)