Эта стратегия сочетает в себе технические показатели STC, Moving Average MA и Average True Range ATR для оценки тенденций и реализации относительно стабильной торговли с отслеживанием тренда.
STC-индикатор оценивает обратный тренд. Он использует быструю линию минус медленную линию, затем обрабатывает вторичное сглаживание, образуя последовательные сигналы тренда. Сигнал покупки приходит, когда индикатор пересекает ось 0, а сигнал продажи ниже оси 0.
Движущаяся средняя MA определяет направление тренда. Когда цена акции пересекает предел MA, она сигнализирует об восходящем тренде, давая сигнал для хранения длинной позиции. Когда цена пересекает предел MA, она сигнализирует о нисходящем тренде, давая сигнал для хранения короткой позиции.
Показатель ATR устанавливает стоп-лосс и прибыль. ATR может динамически регулировать стоп-лосс и прибыль на основе волатильности рынка. А ATR действует как сигнал для самого торгового направления, повышаясь в восходящем тренде и падая в нисходящем.
Стратегия принимает сигналы STC в качестве основного времени для входа, использует MA в качестве вспомогательного суждения о тренде и ATR для остановки потерь и получения прибыли.
Стратегия сочетает в себе несколько индикаторов для оценки тенденций и точек переворота, повышая точность торговых сигналов.
STC может улавливать сигналы обратного движения и избегать попадания в ловушку трендов. MA фильтрует неопределенные сигналы обратного движения, чтобы обеспечить следование основной тенденции.
АТР устанавливает динамический стоп-лосс и прибыль на основе волатильности рынка, избегая больших потерь.
Сочетание нескольких индикаторов формирует сильную способность отслеживать тенденции.
STC имеет временную задержку, которая может не совпадать с оптимальным сроком для изменения цены.
MA имеет тенденцию отставать во время резких колебаний цен, что может генерировать неправильные сигналы.
ATR стоп-лосс может быть достигнут в течение нескольких секунд.
Больше показателей означает больше шансов на достижение стоп-лосса.
Настраивайте параметры STC, чтобы найти более быстрые комбинации для обратного движения.
Оптимизировать параметр периода MA для лучшего отслеживания тренда.
Испытание воздействия различных кратных ATR.
Попробуйте заменить STC на другие показатели для лучшего совпадения.
Внедрить алгоритмы машинного обучения для автоматической оптимизации с несколькими параметрами.
Рассмотрим тенденции больших циклов и различим различные этапы.
Стратегия STC MA ATR сочетает в себе 3 индикатора для захвата точек обратного движения тренда для стабильной торговли отслеживанием тренда. Комбинированные индикаторы фильтруют ложные сигналы и контролируют риски с помощью стоп-лосса / take profit. Она обладает сильной надежностью и стабильностью. Дальнейшие улучшения могут быть достигнуты за счет оптимизации параметров и внедрения алгоритма.
/*backtest start: 2023-09-16 00:00:00 end: 2023-10-16 00:00:00 period: 4h basePeriod: 15m exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}] */ // This source code is subject to the terms of the Mozilla Public License 2.0 at https://mozilla.org/MPL/2.0/ // © Romedius //@version=5 strategy("My Strategy", overlay=true, margin_long=100, margin_short=100) // STC EEEEEE=input(12,"Length",group="STC") BBBB=input(26,"FastLength",group="STC") BBBBB=input(50,"SlowLength",group="STC") AAAA(BBB, BBBB, BBBBB) => fastMA = ta.ema(BBB, BBBB) slowMA = ta.ema(BBB, BBBBB) AAAA = fastMA - slowMA AAAA AAAAA(EEEEEE, BBBB, BBBBB) => //AAA=input(0.5) var AAA = 0.5 var CCCCC = 0.0 var DDD = 0.0 var DDDDDD = 0.0 var EEEEE = 0.0 BBBBBB = AAAA(close,BBBB,BBBBB) CCC = ta.lowest(BBBBBB, EEEEEE) CCCC = ta.highest(BBBBBB, EEEEEE) - CCC CCCCC := (CCCC > 0 ? ((BBBBBB - CCC) / CCCC) * 100 : nz(CCCCC[1])) DDD := (na(DDD[1]) ? CCCCC : DDD[1] + (AAA * (CCCCC - DDD[1]))) DDDD = ta.lowest(DDD, EEEEEE) DDDDD = ta.highest(DDD, EEEEEE) - DDDD DDDDDD := (DDDDD > 0 ? ((DDD - DDDD) / DDDDD) * 100 : nz(DDDDDD[1])) EEEEE := (na(EEEEE[1]) ? DDDDDD : EEEEE[1] + (AAA * (DDDDDD - EEEEE[1]))) EEEEE mAAAAA = AAAAA(EEEEEE,BBBB,BBBBB) stc = mAAAAA > mAAAAA[1] ? true : false stc_sig = stc == true and stc[1] == false ? 1 : stc == false and stc[1] == true ? -1 : 0 stc_long = stc_sig == 1 stc_short = stc_sig == -1 // STC end // ATR stops nATRPeriod = input(5,group="ATR Stops") nATRMultip = input(3.5,group="ATR Stops") xATR = ta.atr(nATRPeriod) nLoss = nATRMultip * xATR xATRTrailingStop = 0.0 xATRTrailingStop := close > nz(xATRTrailingStop[1], 0) and close[1] > nz(xATRTrailingStop[1], 0) ? math.max(nz(xATRTrailingStop[1]), close - nLoss) : close < nz(xATRTrailingStop[1], 0) and close[1] < nz(xATRTrailingStop[1], 0) ? math.min(nz(xATRTrailingStop[1]), close + nLoss) : close > nz(xATRTrailingStop[1], 0) ? close - nLoss : close + nLoss pos = 0 pos := close[1] < nz(xATRTrailingStop[1], 0) and close > nz(xATRTrailingStop[1], 0) ? 1 : close[1] > nz(xATRTrailingStop[1], 0) and close < nz(xATRTrailingStop[1], 0) ? -1 : nz(pos[1], 0) atr_sig = pos == -1 ? false : true // ATR stops end // ma ma_len = input(200, title="MA Length", group="Moving Average") ma = ta.sma(close, 200) ma_sig = close < ma ? false : true // ma end // strategy entries tp_mult = input(2, title="Take Profit ATR Multiplier", group="Strategy") sl_mult = input(1, title="Stop Loss ATR Multiplier", group="Strategy") early_stop = input(true, title="Close position when ATR changes color") atr_stop = if close < xATRTrailingStop close - (close - xATRTrailingStop) * sl_mult else close + (xATRTrailingStop - close) * sl_mult longCondition = atr_sig == true and stc_sig == 1 and ma_sig == true shortCondition = atr_sig == false and stc_sig == -1 and ma_sig == false if (longCondition) strategy.entry("Long", strategy.long) strategy.exit("Exit Long", "Long", limit=close + xATR * tp_mult, stop=atr_stop) else if atr_sig == false and early_stop strategy.close("Long") if (shortCondition) strategy.entry("Short", strategy.short) strategy.exit("Exit Short", "Short", limit=close - xATR * tp_mult, stop=atr_stop) else if atr_sig == true and early_stop strategy.close("Short") // plot stuff atr_color = pos == -1 ? color.red: pos == 1 ? color.green : color.blue plot(atr_stop, title="ATR Stop", color=atr_color) ma_color = ma_sig ? color.green : color.red plot(ma, title="Moving Average", color=ma_color) stc_color = stc_long ? color.green : color.red plotshape(stc_long, style=shape.triangleup, color=stc_color, title="STC Long Signal", size=size.tiny) plotshape(stc_short, style=shape.triangledown, color=stc_color, title="STC Short Signal", size=size.tiny) // plot stuff end