Эта стратегия оптимизирует традиционную стратегию пересечения скользящей средней путем установки трех скользящих средних с различными периодами, создавая золотой кросс-паттерн с 9-периодными, 50-периодными и 100-периодными скользящими средними. Она генерирует сигналы покупки, когда краткосрочный MA пересекает среднесрочный MA, а долгосрочный MA находится в восходящем тренде.
Стратегия использует три скользящих средних с периодами 9, 50 и 100. 9-периодный MA - это краткосрочный MA, 50-периодный MA - это среднесрочный MA, а 100-периодный MA - это долгосрочный MA. Торговые сигналы генерируются скрещиванием между краткосрочным MA и среднесрочным MA. В частности, когда долгосрочный MA находится в восходящем тренде (выше среднесрочного MA), сигнал покупки запускается, когда краткосрочный MA пересекает среднесрочный MA. Сигнал продажи запускается, когда краткосрочный MA пересекает среднесрочный MA.
По сравнению с традиционной стратегией перекрестного движения двойной скользящей средней, эта стратегия добавляет условие оценки среднесрочных и долгосрочных тенденций перед генерацией торговых сигналов, которые могут эффективно отфильтровывать некоторые недействительные сигналы. Когда долгосрочные тенденции неясны, стратегия не будет генерировать сигналы, избегая попадания в ловушку консолидации. В то же время эта стратегия подходит для захвата тенденционных движений в краткосрочной и среднесрочной перспективе, уменьшая возможность агрессивного входа.
При установлении параметров для этой стратегии необходимо корректировать комбинацию скользящих средних периодов. Различные комбинации периодов будут влиять на эффективность стратегии. Если параметры периода не установлены должным образом, существует риск создания слишком большого количества ложных сигналов. Кроме того, трейдеры должны знать о потенциальных системных рисках и своевременно прекращать потери, чтобы смягчить риски.
Рассмотреть возможность включения других индикаторов для оценки рыночных тенденций, таких как MACD, BOLL и т.д., и установить более строгие условия входа, или включить индикаторы волатильности для построения адаптивных скользящих средних, чтобы параметры могли автоматически корректироваться на основе рыночных условий для дальнейшей оптимизации стратегии.
Эта стратегия, основанная на традиционном перекрестном двойном скользящем среднем, добавляет долгосрочное суждение MA и условия фильтрации, которые могут эффективно отфильтровывать ложные сигналы и подходят для улавливания краткосрочных и среднесрочных движений тренда. Это простая и практичная стратегия, следующая за трендом. Тем не менее, трейдерам все еще нужно обратить внимание на оптимизацию параметров и системные риски и сформулировать научные стратегии управления рисками.
/*backtest start: 2022-12-12 00:00:00 end: 2023-12-18 00:00:00 period: 1d basePeriod: 1h exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}] */ //@version=4 strategy("Golden Cross, SMA 100, Moving Average Strategy (by Coinrule)", shorttitle="Golden_Cross_Strat_MA100_optimized", overlay=true, initial_capital = 1000,process_orders_on_close=true, default_qty_type = strategy.percent_of_equity, default_qty_value = 100) // Input switch1=input(true, title="Enable Bar Color?") switch2=input(false, title="Show Fast Moving Average") switch3=input(true, title="Show Slow Moving Average") //Calculate Moving Averages movingaverage_fast = sma(close, input(9)) movingaverage_slow = sma(close, input(100)) movingaverage_normal= sma(close, input(50)) //Backtest dates fromMonth = input(defval = 1, title = "From Month", type = input.integer, minval = 1, maxval = 12) fromDay = input(defval = 1, title = "From Day", type = input.integer, minval = 1, maxval = 31) fromYear = input(defval = 2020, title = "From Year", type = input.integer, minval = 1970) thruMonth = input(defval = 1, title = "Thru Month", type = input.integer, minval = 1, maxval = 12) thruDay = input(defval = 1, title = "Thru Day", type = input.integer, minval = 1, maxval = 31) thruYear = input(defval = 2112, title = "Thru Year", type = input.integer, minval = 1970) showDate = input(defval = true, title = "Show Date Range", type = input.bool) start = timestamp(fromYear, fromMonth, fromDay, 00, 00) // backtest start window finish = timestamp(thruYear, thruMonth, thruDay, 23, 59) // backtest finish window window() => time >= start and time <= finish ? true : false // create function "within window of time" // Calculation bullish_cross = crossover(movingaverage_fast, movingaverage_normal) bearish_cross = crossunder(movingaverage_fast, movingaverage_normal) //Entry and Exit if bullish_cross and window() and movingaverage_slow > movingaverage_normal strategy.entry("long", strategy.long) strategy.close("long", when = bearish_cross and window()) // Colors bartrendcolor = close > movingaverage_fast and close > movingaverage_slow and change(movingaverage_slow) > 0 ? color.green : close < movingaverage_fast and close < movingaverage_slow and change(movingaverage_slow) < 0 ? color.red : color.blue barcolor(switch1?bartrendcolor:na) // Output plot(movingaverage_fast, color=color.orange, linewidth=2) plot(movingaverage_slow, color=color.purple, linewidth=3) plot(movingaverage_normal, color=color.blue, linewidth=2) bgcolor(color = showDate and window() ? color.gray : na, transp = 90)