Эта стратегия использует быстрые и медленные скользящие средние для построения двойной рельсовой системы, в сочетании с индексом тренда ADX для оценки тренда и направленным индексом DMI для определения направления тренда, для отслеживания тренда после его установления и выхода вовремя, когда тренд переворачивается, избегая погони за вершинами и продажей дна.
Быстрые и медленные средние движущиеся составляют двойную систему каналов. Когда быстрый MA пересекает медленный MA, это является золотым крестом входного сигнала надолго. Когда быстрый MA пересекает ниже медленного MA, это является смертным крестом выходного сигнала.
ADX оценивает существование и силу тренда. Когда ADX выше ключевого уровня, он указывает на то, что тренд существует и силен. Торговые сигналы генерируются только тогда, когда тренд силен.
DI+ DMI определяет направление тренда. Когда DI+ положительный, он указывает на тенденцию к росту. Когда DI+ отрицательный, он указывает на тенденцию к снижению. Торговые сигналы генерируются только тогда, когда направление тренда совпадает.
Проверка временных интервалов позволяет проверить эффективность стратегии в течение различных периодов времени для проверки.
Система с двумя рельсами фильтрует прорывы, чтобы избежать ложных сигналов.
ADX избегает чрезмерной торговли во время консолидации, требуя тенденции.
DMI обеспечивает соответствие торговли направлению тренда, предотвращая контратендерные сделки.
Проверка временного интервала проверяет параметры и оптимизирует настройки.
Каналами могут образовываться ловушки, которые требуют остановок, чтобы избежать ударов.
Задержка ADX может привести к потере ранних возможностей, требующих более низкого ключевого уровня.
ДМИ также может пропустить ранние тенденции, требуя более короткие периоды.
Параметры могут нуждаться в корректировке в разных временных интервалах.
Испытать комбинации параметров для поиска оптимальных настроек.
Добавьте фильтры, такие как полосы Боллинджера для качества сигнала.
Включить стоп-лосс для ограничения потерь.
Автооптимизируйте параметры с помощью машинного обучения.
Включите больше факторов, таких как настроения и новости.
Эта стратегия сочетает в себе сильные стороны скользящих средних, индексов тренда и направленных индексов для выявления и отслеживания тенденций. При проверке действительности параметров необходима постоянная оптимизация для адаптации к большему количеству рыночных условий путем настройки параметров, добавления остановок, синтеза большего количества факторов и т. д., чтобы улучшить надежность и рентабельность. В целом, она обеспечивает надежную тенденцию, следующую методологии количественной торговли.
/*backtest start: 2023-10-01 00:00:00 end: 2023-10-31 23:59:59 period: 1d basePeriod: 1h exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}] */ //@version=4 // author: codachang0726 strategy(title = "(S)MA+ADX+DI+time", shorttitle = "(S)MA+ADX+DI+time", overlay = true) // === INPUT MA LENGTHS === fastMA = input(defval = 7, title = "FastMA", minval = 1, step = 1) slowMA = input(defval = 14, title = "SlowMA", minval = 1, step = 1) // === INPUT BACKTEST RANGE === fromMonth = input(defval = 9, title = "From Month", minval = 1, maxval = 12) fromDay = input(defval = 1, title = "From Day", minval = 1, maxval = 31) fromYear = input(defval = 2020, title = "From Year", minval = 1970) thruMonth = input(defval = 1, title = "Thru Month", minval = 1, maxval = 12) thruDay = input(defval = 1, title = "Thru Day", minval = 1, maxval = 31) thruYear = input(defval = 2022, title = "Thru Year", 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" // === MA LOGIC === crossOv = sma(close, fastMA) > sma(close, slowMA) // true when fastMA over slowMA crossUn = sma(close, fastMA) < sma(close, slowMA) // true when fastMA under slowMA // DI+ADX adxlen = input(14, title="ADX Smoothing") dilen = input(14, title="DI Period") keyLevel = input(20, title="Keylevel for ADX") [diplus, diminus, adx] = dmi(dilen, adxlen) di = (diplus - diminus) buy = di > 0 and crossOv and adx > keyLevel sell = di < 0 and crossUn and adx > keyLevel buy_time = buy and not buy[1] sell_time = sell and not sell[1] // === EXECUTION === strategy.entry("L", strategy.long, when = window() and buy_time) // enter long when "within window of time" AND crossover strategy.close("L", when = window() and sell_time) // exit long when "within window of time" AND crossunder // === PLOTTING === bgcolor(color = showDate and window() ? color.gray : na, transp = 90) // plot "within window of time" plot(sma(close, fastMA), title = 'FastMA', color = color.yellow, linewidth = 2, style = plot.style_line) // plot FastMA plot(sma(close, slowMA), title = 'SlowMA', color = color.aqua, linewidth = 2, style = plot.style_line) // plot SlowMA