Стратегия следования за трендом на основе индикатора канала SSL


Дата создания: 2023-11-27 16:42:34 Последнее изменение: 2023-11-27 16:42:34
Копировать: 0 Количество просмотров: 1445
1
Подписаться
1617
Подписчики

Стратегия следования за трендом на основе индикатора канала SSL

Обзор

Стратегия является стратегией отслеживания тенденций, основанной на показателях SSL-каналов. Она сочетает в себе управление стоп-лосса и стоп-стоп для блокирования прибыли для достижения стабильного роста капитала.

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

Основная логика кода заключается в том, чтобы использовать золотой крест SSL на верхней и нижней трассах для определения направления тренда. В частности, когда верхняя трасса SSL прорывает нижнюю трассу SSL с нижней стороны, сделайте больше; когда нижняя трасса SSL прорывает верхнюю трассу SSL с верхней стороны, сделайте пустое.

После вхождения в позицию, стратегия использует ATR показатель умноженный на коэффициент, чтобы установить стоп-потерю и стоп-цену. Например, стоп-потеря - это цена минус ATR * 1.5, стоп-цену - это цена плюс ATR * 1. Это позволяет эффективно контролировать единичные потери и блокировать прибыль.

Когда SSL-путевка проваливается, выровняйте позиции. Таким образом, вы можете отслеживать переломные моменты в тренде и своевременно останавливать убытки.

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

  1. Высокая точность определения направления тенденции с использованием SSL-каналов
  2. Устойчивое и эффективное управление рисками
  3. Временная остановка, отслеживание переменных

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

  1. Тенденционные сделки могут привести к переделке
  2. Вероятность провала SSL-каналов
  3. Необходимо оптимизировать ATR

Соответствующие решения:

  1. Соответствующая корректировка цикла удержания позиции
  2. Подтверждение в сочетании с другими показателями
  3. Тестирование различных комбинаций коэффициентов ATR

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

  1. Оптимизация параметров ATR, чтобы найти оптимальную комбинацию параметров
  2. Добавление фильтров и подтверждающих сигналов для других показателей
  3. Периоды хранения позиций, скорректированные в зависимости от рынка
  4. Оптимизация стратегии остановки потерь

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

Стратегия имеет четкую общую концепцию, использует SSL-каналы для определения тенденций и устанавливает разумные стоп-лосы. Однако требуется дальнейшее тестирование и оптимизация, в сочетании с другими показателями, чтобы отфильтровать фальшивые сигналы и найти оптимальное сочетание параметров. В то же время, необходимо скорректировать параметры в соответствии с различными рынками, чтобы сделать стратегию более гибкой.

Исходный код стратегии
/*backtest
start: 2022-11-26 00:00:00
end: 2023-05-14 00:00:00
period: 1d
basePeriod: 1h
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=3
//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
//Designed per No Nonsense Forex VP rules
//For testing your individual indicators before the full system
//Originated from causecelebre
//Tried to put in as much VP rules as possible

///////////////////////////////////////////////////
//Rules Implemented:
///////////////////////////////////////////////////
// - SL 1.5 x ATR
// - TP 1 x ATR
//
// - Entry conditions
//// - Entry from 1 x confirmation
// - Exit conditions
//// - Exit on confirmation flip 

///////////////////////////////////////////////////
//Trades entries
///////////////////////////////////////////////////
// - First entry L1 or S1 with standard SL and TP

///////////////////////////////////////////////////
//Included Indicators and settings
///////////////////////////////////////////////////
// - Confirmtion = SSL 10

///////////////////////////////////////////////////
//Credits
// Strategy causecelebre https://www.tradingview.com/u/causecelebre/
// SSL Channel ErwinBeckers https://www.tradingview.com/u/ErwinBeckers/
//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
//Change log
//First release. Testing of indicators
//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////

strategy(title="NNFX Strategy Indicator | jh", overlay = true )

//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
//  **** Set the main stuff  ****
///////////////////////////////////////////////////

//Price
price = close

//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
// ATR stuff
///////////////////////////////////////////////////

slMultiplier = input(1.5, "SL")
tpMultiplier = input(1, "TP")

atrlength = input(title="ATR Length", defval=14, minval=1)
atrsmoothing = input(title="Smoothing", defval="SMA", options=["RMA", "SMA", "EMA", "WMA"])

ma_function(source, atrlength) => 
    if atrsmoothing == "RMA"
        rma(source, atrlength)
    else
        if atrsmoothing == "SMA"
            sma(source, atrlength)
        else
            if atrsmoothing == "EMA"
                ema(source, atrlength)
            else
                wma(source, atrlength)

//plot(ma_function(tr(true), atrlength), title = "ATR", color=#991515, transp=0)

atr = ma_function(tr(true), atrlength)

//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
//  **** Confirmation ****
///////////////////////////////////////////////////

ssllen=input(title="SSL Length Period", defval=10)
smaHigh=sma(high, ssllen)
smaLow=sma(low, ssllen)
Hlv = na
Hlv := close > smaHigh ? 1 : close < smaLow ? -1 : Hlv[1]
sslDown = Hlv < 0 ? smaHigh: smaLow
sslUp   = Hlv < 0 ? smaLow : smaHigh

plot(sslDown, "SSL Down", linewidth=1, color=red)
plot(sslUp, "SSL Up", linewidth=1, color=lime)

///////////////////////////////////////////////////
//Confirm Signals
///////////////////////////////////////////////////

c_Up = sslUp
c_Down = sslDown

//Signals based on crossover
c_Long = crossover(c_Up, c_Down)
c_Short = crossover(c_Down, c_Up)

//Signals based on signal position
trendLong = c_Up > c_Down ? 1 : 0
trendShort = c_Down > c_Up ? 1 : 0

confirmLong = c_Long
confirmShort = c_Short

plotshape(trendLong, color = green, style=shape.triangleup, location=location.bottom)
plotshape(trendShort, color = red, style=shape.triangledown, location=location.bottom)


//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
//Entries and Exits
//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////

if (year>2009)

    //Long entries with standard 1.5 ATR for SL, 1 ATR for TP
    long_sl = price - (atr * slMultiplier)
    long_tp = price + (atr * tpMultiplier)
    strategy.order("L1", strategy.long, when = confirmLong)
    strategy.close("L1", when = confirmShort)
    strategy.exit("L Limit Exit", "L1", stop = long_sl, limit = long_tp)

    
    //Short entries with standard 1.5 ATR for SL, 1 ATR for TP
    short_sl = price + (atr * slMultiplier)
    short_tp = price - (atr * tpMultiplier)
    strategy.order("S1", strategy.short, when = confirmShort)
    strategy.close("S1", when = confirmLong)
    strategy.exit("S Limit Exit", "S1", stop = short_sl, limit = short_tp)


//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
//End
//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////