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


Дата создания: 2023-11-27 16:21:45 Последнее изменение: 2023-11-27 16:21:45
Копировать: 0 Количество просмотров: 553
1
Подписаться
1617
Подписчики

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

Обзор

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

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

В основе этой стратегии лежит вычисление быстрых 30-дневных средних линий и медленных 33-дневных средних линий. Быстрые линии реагируют на ценовые изменения быстрее, а медленные линии имеют лучший эффективный эффект.

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

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

Эта стратегия имеет следующие преимущества:

  1. Использование простых скользящих средних, которые легко понять и реализовать
  2. Сочетание быстрых и медленных линий позволяет быстро реагировать на ценовые изменения и оказывает влияние на рынок.
  3. Сигналы “золотой” и “мертвый” - простые, понятные и простые в использовании.
  4. Популярный метод, который позволяет эффективно отслеживать тенденции.
  5. Быстрая остановка при появлении обратного сигнала, контролируемый риск

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

Однако эта стратегия также несет в себе некоторые риски:

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

Эти риски можно контролировать и уменьшать методами оптимизации параметров, установки стоп-лосс и торговли только при четком тренде.

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

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

  1. Оптимизация среднелинейных циклов и перекрестных типов, чтобы найти оптимальную комбинацию параметров
  2. Добавление фильтров для других технических показателей, таких как торговый объем, MACD и т. Д., Чтобы уменьшить ложные сигналы
  3. Добавление адаптивных стоп-механизмов, а не просто обратного стоп-сигнала
  4. Комбинация параметров дизайна и правила остановки для различных товаров
  5. Динамическая настройка параметров методов, таких как машинное обучение

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

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

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

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

//@version=3
//future strategy
//strategy(title = "es1!_1minute_hull", default_qty_type = strategy.fixed, initial_capital=250000,  overlay = true, commission_type=strategy.commission.cash_per_contract,commission_value=2, calc_on_order_fills=false, calc_on_every_tick=false,pyramiding=0)
//strategy.risk.max_position_size(2)
//stock strategy
strategy(title = "stub", default_qty_type = strategy.percent_of_equity, default_qty_value = 100, initial_capital=1000000, overlay = false)//, calc_on_order_fills=true, calc_on_every_tick=true)
//forex strategy
//strategy(title = "stub", default_qty_type = strategy.percent_of_equity, default_qty_value = 100,  overlay = true,initial_capital=250000, default_qty_type = strategy.percent_of_equity)
//crypto strategy
//strategy(title = "stub", default_qty_type = strategy.percent_of_equity, default_qty_value = 100,  overlay = true, commission_type=strategy.commission.percent,commission_value=.005,default_qty_value=10000)
//strategy.risk.allow_entry_in(strategy.direction.long) // There will be no short entries, only exits from long.




testStartYear = 2010
testStartMonth = 1
testStartDay = 1
testPeriodStart = timestamp(testStartYear,testStartMonth,testStartDay,0,0)


testEndYear = 2039
testEndMonth = 1
testEndDay = 1
testPeriodEnd = timestamp(testEndYear,testEndMonth,testEndDay,0,0)


testPeriod() =>
    //true
    time >= testPeriodStart and time <= testPeriodEnd ? true : false

fast_length = 30
slow_length = 33

ema1 = 0.0
ema2 = 0.0

volumeSum1 = sum(volume, fast_length)
volumeSum2 = sum(volume, slow_length)

//ema1 := (((volumeSum1 - volume) * nz(ema1[1]) + volume * close) / volumeSum1)
ema1 :=  ema(close,fast_length)
//ema2 := (((volumeSum2 - volume) * nz(ema2[1]) + volume * close) / volumeSum2)
ema2 :=  ema(close,slow_length)



plot(ema1,color=#00ff00, linewidth=3)
plot(ema2, color=#ffff00, linewidth=3)

go_long = crossover(ema1,ema2)
go_short = crossunder(ema1,ema2)

if testPeriod()
    strategy.entry("long_ride", strategy.long, when=go_long)
    strategy.entry("short_ride", strategy.short,when=go_short)
    
        
    strategy.close("long_ride",when=go_short)
    strategy.close("short_ride",when=go_long)