Это сложная количественная стратегия торговли, основанная на индикаторе MACD. Она сочетает в себе несколько индикаторов, таких как MACD и KDJ, чтобы генерировать торговые сигналы через комбинацию индикаторов.
Основной индикатор этой стратегии - MACD. MACD означает Moving Average Convergence Divergence, который является индикатором, следующим за трендом. Он состоит из быстрой скользящей средней (EMA) и медленной скользящей средней (EMA). Параметры по умолчанию составляют 12 для быстрой линии и 26 для медленной линии. Стратегия рассчитывает разницу между двумя линиями EMA, называемой DIF. Затем на DIF рассчитывается 9-дневная EMA, чтобы получить индикатор DEA. Когда DIF пересекает DEA, генерируется сигнал покупки. При пересечении ниже, генерируется сигнал продажи.
Стратегия также включает в себя индикатор KDJ. Индикатор KDJ включает в себя значение K, значение D и значение J. Среди них значение K относится к случайному значению, значение D - скользящей средней стоимости K, а значение J относится к детерминированному значению. Индикатор KDJ отражает уровни перекупленности и перепроданности на рынке. Когда значение J больше 100, оно представляет перекупленные условия. Когда меньше 10, оно представляет перепроданные условия. Стратегия объединяет индикатор KDJ, чтобы избежать генерирования неправильных сигналов в переломных точках рынка.
Стратегия сочетает в себе несколько индикаторов, таких как MACD и KDJ, которые могут эффективно фильтровать рыночный шум и определять направления тренда.
Кроме того, стратегия включает в себя выбор временного интервала, что обеспечивает большую гибкость в оценке эффективности стратегии.
Когда рынок колеблется в течение длительного периода, MACD будет иметь несколько ложных сигналов.
Неправильные настройки параметров KDJ также повлияют на результаты. Мы можем проверить несколько групп параметров и выбрать более стабильную комбинацию параметров.
Неправильный выбор временных рамок для обратного тестирования может переоценить или недооценить рентабельность стратегии.
Стратегия может быть оптимизирована в следующих аспектах:
Добавьте механизм остановки потери. Когда цена запускает линию остановки потери, она вынуждает выход из позиции для целей остановки потери.
Включить больше индикаторов фильтров, объединяя такие индикаторы, как RSI и полосы Боллинджера для улучшения точности сигнала.
Оптимизировать параметры индикатора. Изменить комбинацию параметров EMA и KDJ, чтобы найти оптимальные настройки.
Используйте методы машинного обучения для автоматической оптимизации. Используйте нейронные сети для обучения параметрам и оптимизации.
Это типичная количественная стратегия, которая в основном следует за тенденцией, дополненная контролем перекупленности и перепроданности. Она сочетает в себе преимущества нескольких индикаторов и эффективно балансирует стабильность и чувствительность. Благодаря постоянной оптимизации и корректировке применимость стратегии может быть еще больше расширена для получения долгосрочной устойчивой прибыли.
/*backtest start: 2022-12-06 00:00:00 end: 2023-12-12 00:00:00 period: 1d basePeriod: 1h exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}] */ //@version=4 strategy(title="New Renaissance", shorttitle="New Renaissance", overlay=true,initial_capital=10000) source = close fastlength=input(12, minval=1) slowlength=input(26,minval=1) signallength=input(9,minval=1) // === Defining the MACD oscillator fastMA=ema(source,fastlength) slowMA=ema(source,slowlength) MACD=fastMA-slowMA signal=sma(MACD,signallength) delta=MACD-signal // === Buy and Sell Signals === buy=crossover(MACD, signal) sell=crossunder(MACD, signal) // === INPUT BACKTEST RANGE === 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 = 2018, title = "From Year", type = input.integer, minval = 1970) thruMonth = input(defval = 12, title = "Thru Month", type = input.integer, minval = 1, maxval = 12) thruDay = input(defval = 31, title = "Thru Day", type = input.integer, minval = 1, maxval = 31) thruYear = input(defval = 2020, title = "Thru Year", type = input.integer, minval = 1970) // === INPUT SHOW PLOT === showDate = input(defval = true, title = "Show Date Range", type = input.bool) // === FUNCTION EXAMPLE === start = timestamp(fromYear, fromMonth, fromDay, 00, 00) // backtest start window finish = timestamp(thruYear, thruMonth, thruDay, 23, 59) // backtest finish window window() => true // create function "within window of time" // === EXECUTION === strategy.entry("L", strategy.long, when = window() and buy) // enter long when "within window of time" AND crossover strategy.close("L", when = window() and sell) // exit long when "within window of time" AND crossunder