Pas de stratégie de trading de canal SSL débile

Auteur:ChaoZhang est là., Date: 2023-11-27 16:42:34 Je suis désolé
Les étiquettes:

img

Résumé

Il s'agit d'une stratégie de suivi des tendances basée sur l'indicateur SSL Channel.

La logique de la stratégie

La logique principale du code est d'utiliser la croix d'or des bandes supérieures et inférieures SSL pour déterminer la direction de la tendance.

Après avoir entré une position, la stratégie utilisera l'ATR multiplié par un coefficient pour définir les prix de stop loss et de prise de profit. Par exemple, le prix de stop loss est le prix moins ATR * 1.5 et le prix de prise de profit est le prix plus ATR * 1. Cela peut contrôler efficacement la perte unique et verrouiller les bénéfices.

Lorsque le canal SSL traverse, fermez la position. Cela peut suivre les points d'inflexion de la tendance pour des pertes d'arrêt opportunes.

Analyse des avantages

  1. Le canal SSL est très précis pour déterminer la direction de la tendance
  2. Les paramètres de stop loss et de prise de profit sont raisonnables pour contrôler efficacement le risque
  3. Les pertes d'arrêt en temps opportun suivent les points d'inflexion de la tendance

Analyse des risques

  1. Le trading de tendance peut facilement conduire à une survente
  2. Il y a une probabilité d'échec dans le jugement du canal SSL
  3. Les coefficients ATR doivent être optimisés

Les solutions correspondantes:

  1. Ajuster de manière appropriée la période de détention
  2. Incorporer d'autres indicateurs pour confirmation
  3. Tester différentes combinaisons de coefficients ATR

Directions d'optimisation

  1. Optimiser les paramètres ATR pour trouver la combinaison optimale de paramètres
  2. Augmenter les autres indicateurs de filtrage et de confirmation des signaux
  3. Ajuster les périodes de détention en fonction des différents marchés
  4. Optimiser les stratégies de stop loss et de profit

Résumé

La logique générale de cette stratégie est claire, en utilisant le canal SSL pour déterminer la tendance, et en définissant un stop loss et un profit raisonnables. Mais des tests et une optimisation supplémentaires sont encore nécessaires, en incorporant d'autres indicateurs pour filtrer les faux signaux et trouver la meilleure combinaison de paramètres. Dans le même temps, les paramètres doivent être ajustés en fonction des différents marchés pour rendre la stratégie plus flexible. Dans l'ensemble, cette stratégie fournit un cadre fiable pour atteindre un revenu stable.


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



    




Plus de