Комбинированная стратегия торговли по тренду STC MA ATR


Дата создания: 2023-10-17 14:34:10 Последнее изменение: 2023-10-17 14:34:10
Копировать: 0 Количество просмотров: 845
1
Подписаться
1617
Подписчики

Комбинированная стратегия торговли по тренду STC MA ATR

Обзор

Стратегия использует технические показатели акций STC, MA и ATR в сочетании с различными техническими показателями для определения тенденции, что позволяет достичь относительно стабильной торговли.

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

  1. STC-индикатор определяет обратный тренд. Он использует быструю линию, чтобы замедлить линию, а затем производит вторую гладкую обработку, чтобы сформировать согласованный сигнал тренда. Когда индикатор проходит по 0-ой оси, это сигнал покупки, а когда он проходит по 0-ой оси, это сигнал продажи.

  2. Подвижная средняя МА определяет направление тренда. Когда цена акции выходит за пределы МА, она рассматривается как сигнал, что она все еще находится на подъеме.

  3. ATR устанавливает стоп-стоп. ATR может динамически регулироваться в зависимости от рыночных колебаний. И использует ATR в качестве сигнала направления торговли.

  4. Стратегия выбирает момент, когда STC выбирает обратную сторону в качестве основного пункта покупки и продажи, а MA - в качестве вспомогательного определения тренда, с использованием ATR для остановки убытков. Когда STC выпускает сигнал покупки, если MA также находится в тенденции к росту, ATR находится на подъеме, то открывается дополнительная позиция; Если STC выпускает сигнал продажи, если MA находится в тенденции к снижению, ATR находится на снижении, то открывается пустая позиция.

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

  1. Эта стратегия использует различные индикаторы для определения тенденций и переменных, что повышает точность торговых сигналов.

  2. STC-индикатор улавливает обратные сигналы, чтобы избежать попадания на рынок. MA-индикатор фильтрует нестабильные обратные сигналы, чтобы обеспечить следование за основными тенденциями.

  3. Показатель ATR может устанавливать стоп-лосс в зависимости от рыночных колебаний, чтобы избежать больших потерь. И использует ATR в качестве вспомогательного сигнала для определения тенденции.

  4. Многоиндикаторная комбинация позволяет создать более сильную способность отслеживать тенденции, а историческая обратная связь имеет лучшую стабильную прибыльность.

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

  1. STC имеет временную задержку и может пропустить оптимальный момент для переворота цены.

  2. При резком изменении цены, индикатор MA может отстать от своего местоположения, что может привести к ошибочному сигналу.

  3. ATR-стоп может быть выведен на секунду, а ATR-множитель должен быть соответствующим образом ослаблен или временно закрыт в большом тренде.

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

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

  1. Настройка параметров STC для поиска комбинации параметров, которые быстрее реагируют на обратный ход

  2. Оптимизация циклических параметров MA для лучшего отслеживания тенденций

  3. Влияние на стратегию параметров, используемых при тестировании различных ATR

  4. Попробуйте заменить STC другими показателями, чтобы найти более подходящий показатель

  5. Добавление алгоритмов машинного обучения для автоматической оптимизации нескольких параметров

  6. Повышение оценки тенденций Большого цикла, разграничение различных этапов Большого цикла

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

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

Исходный код стратегии
/*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