Нет-нет-нет-нет-нет-нет SSL-стратегия торгового канала

Автор:Чао Чжан, Дата: 2023-11-27 16:42:34
Тэги:

img

Обзор

Это стратегия, основанная на индикаторе SSL Channel. Она включает в себя стоп-лосс и управление прибылью, чтобы закрепить прибыль для стабильного роста капитала.

Логика стратегии

Основная логика кода состоит в том, чтобы использовать золотой крест верхней и нижней полос 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
//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////



    




Больше