Стратегия импульса, основанная на скользящих средних


Дата создания: 2024-01-23 10:38:18 Последнее изменение: 2024-01-23 10:38:18
Копировать: 0 Количество просмотров: 519
1
Подписаться
1617
Подписчики

Стратегия импульса, основанная на скользящих средних

Обзор

Эта стратегия является динамической стратегией, основанной на движущихся средних. Она генерирует торговый сигнал путем вычисления простых движущихся средних разных периодов и сравнения их скрещивания. В частности, она генерирует сигнал покупки, когда она пересекает долгосрочную движущуюся среднюю над короткосрочной движущейся средней, и сигнал продажи, когда она пересекает долгосрочную движущуюся среднюю ниже короткосрочной движущейся средней.

Стратегический принцип

Центральная логика этой стратегии основана на динамическом эффекте, то есть на постоянстве тенденций цен на акции. Движущаяся средняя эффективно отражает тенденции изменения цен на акции. Когда краткосрочная движущаяся средняя пересекает долгосрочную движущуюся среднюю, это означает, что цена на акции начинает входить в восходящую тенденцию; наоборот, когда краткосрочная движущаяся средняя пересекает долгосрочную движущуюся среднюю, это означает, что цена на акции начинает входить в нисходящую тенденцию.

В частности, в стратегии определены 13-дневная простая скользящая средняя и 34-дневная простая скользящая средняя. После вычисления этих двух скользящих средних за день по цене закрытия, сравнивается их величина. Если 13-я линия проходит 34-ю линию, то создается сигнал покупки, означающий, что цена акций входит в восходящую тенденцию, и следует создать многоочередную позицию; если 13-я линия проходит 34-ю линию, то создается сигнал продажи, означающий, что цена акций входит в нисходящую тенденцию, и следует ликвидировать.

Стратегические преимущества

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

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

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

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

Кроме того, при большом повороте курса стоп-лосс стратегии могут быть преодолены, что приводит к большим потерям. Это требует оптимизации стратегии стоп-лосса и соответствующего ослабления стоп-лосса.

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

Эта стратегия может быть оптимизирована в следующих аспектах:

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

  2. Добавление фильтров для других технических показателей, таких как MACD, KD и т. д., чтобы избежать ошибочного сигнала в шокирующем режиме

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

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

Подвести итог

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

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

//@version=3
// TODO: update strategy name
strategy("{STRATEGY NAME}", overlay=true)

// === TA LOGIC ===

//
//
// TODO: PUT YOUR TA LOGIC HERE
LONG_SIGNAL_BOOLEAN = crossover(sma(close, 13), sma(close, 34))
SHORT_SIGNAL_BOOLEAN = crossunder(sma(close, 12), sma(close, 21))

// === INPUT BACKTEST DATE RANGE ===
enableShorts = input(false, title="Enable short entries?")

FromMonth = input(defval = 5, title = "From Month", minval = 1, maxval = 12)
FromDay   = input(defval = 18, title = "From Day", minval = 1, maxval = 31)
FromYear  = input(defval = 2018, title = "From Year", minval = 2017)
ToMonth   = input(defval = 9, title = "To Month", minval = 1, maxval = 12)
ToDay     = input(defval = 1, title = "To Day", minval = 1, maxval = 31)
ToYear    = input(defval = 2018, title = "To Year", minval = 2017)

start     = timestamp(FromYear, FromMonth, FromDay, 00, 00)  // backtest start window
finish    = timestamp(ToYear, ToMonth, ToDay, 23, 59)        // backtest finish window
window()  => true // create function "within window of time"

// === STRATEGY BUY / SELL ENTRIES ===

// TODO: update the placeholder LONG_SIGNAL_BOOLEAN and SHORT_SIGNAL_BOOLEAN to signal
// long and short entries
buy() => window() and LONG_SIGNAL_BOOLEAN
sell() => window() and SHORT_SIGNAL_BOOLEAN

if buy()
    strategy.entry("Long", strategy.long, comment="Long")

if sell()
    if (enableShorts)
        strategy.entry("Short", strategy.short, comment="Short")
    else
        strategy.close("Long")

// === BACKTESTING: EXIT strategy ===
sl_inp = input(10, title='Stop Loss %', type=float)/100
tp_inp = input(30, title='Take Profit %', type=float)/100

stop_level = strategy.position_avg_price * (1 - sl_inp)
take_level = strategy.position_avg_price * (1 + tp_inp)

strategy.exit("Stop Loss/Profit", "Long", stop=stop_level, limit=take_level)