Não há estratégia de negociação de canal SSL sem sentido

Autora:ChaoZhang, Data: 2023-11-27 16:42:34
Tags:

img

Resumo

Trata-se de uma estratégia de tendência baseada no indicador SSL Channel, que incorpora stop loss e gestão de lucros para garantir lucros para um crescimento constante do capital.

Estratégia lógica

A lógica principal do código é usar a cruz dourada das bandas superior e inferior do SSL para determinar a direção da tendência. Especificamente, vá longo quando a banda superior do SSL atravessa acima da banda inferior do SSL de baixo, e vá curto quando a banda inferior do SSL atravessa abaixo da banda superior do SSL de cima.

Após entrar em uma posição, a estratégia usará o ATR multiplicado por um coeficiente para definir os preços de stop loss e take profit. Por exemplo, o preço de stop loss é o preço menos ATR * 1.5 e o preço de take profit é o preço mais ATR * 1. Isso pode controlar efetivamente a perda única e bloquear os lucros.

Quando o canal SSL atravessar, feche a posição. Isso pode rastrear pontos de inflexão na tendência para stop-losses oportunos.

Análise das vantagens

  1. O canal SSL é altamente preciso na determinação da direção da tendência
  2. As configurações de stop loss e take profit são razoáveis para controlar eficazmente o risco
  3. As perdas de paragem oportunas acompanham os pontos de inflexão da tendência

Análise de riscos

  1. A negociação de tendências pode facilmente conduzir ao excesso de negociação
  2. Há uma probabilidade de falha no julgamento do canal SSL
  3. Os coeficientes ATR devem ser otimizados

As soluções correspondentes:

  1. Ajustar adequadamente o período de detenção
  2. Incorporar outros indicadores de confirmação
  3. Ensaiar diferentes combinações de coeficientes ATR

Orientações de otimização

  1. Optimizar os parâmetros ATR para encontrar a combinação de parâmetros ideal
  2. Aumentar outros indicadores de filtragem e confirmação de sinais
  3. Ajustar os períodos de detenção em função dos diferentes mercados
  4. Otimizar as estratégias de stop loss e take profit

Resumo

A lógica geral desta estratégia é clara, usando o canal SSL para determinar a tendência e definir um stop loss e take profit razoáveis. Mas ainda é necessário mais testes e otimização, incorporando outros indicadores para filtrar sinais falsos e encontrar a melhor combinação de parâmetros. Ao mesmo tempo, os parâmetros devem ser ajustados de acordo com diferentes mercados para tornar a estratégia mais flexível.


/*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
//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////



    




Mais.