Stratégie de stop loss basée sur les points de prise de profit et de stop loss

Auteur:ChaoZhang est là., Date: 2024-01-11 11:04:57 La date de sortie est fixée à:
Les étiquettes:

img

Résumé

L'idée de base de cette stratégie est d'utiliser le croisement de l'EMA et de l'WMA comme signaux d'entrée, et d'incorporer le profit et le stop loss basés sur le calcul des points pour le trading.

Principe de stratégie

Lorsque l'EMA traverse la WMA vers le haut, un signal long est généré. Lorsque l'EMA traverse la WMA vers le bas, un signal court est généré. Après avoir entré des positions, le prix d'entrée sera calculé en temps réel, et le stop loss et le take profit seront définis en fonction de cela. Par exemple, définissez un stop loss à 20 points et un take profit à 100 points, puis le prix spécifique du stop loss sera le prix d'entrée moins 20 points * valeur du contrat, et le prix du take profit sera le prix d'entrée plus 100 points * valeur du contrat. C'est ainsi que le risque et le profit sont contrôlés.

Dans le même temps, la stratégie combinera également les prix actuels du marché avec le stop loss historique pour ajuster la position de stop loss mobile et réaliser un stop loss de trailing.

Analyse des avantages

Comparé aux points fixes ou au pourcentage de stop loss, le plus grand avantage de cette stratégie est qu'elle peut contrôler les risques de manière très flexible et précise. En ajustant le nombre de points, l'amplitude du stop loss peut être directement affectée. Cela s'applique très bien à différentes variétés et les paramètres peuvent être ajustés en fonction de la fréquence et de l'amplitude des fluctuations du marché.

En outre, le trailing stop loss est également une fonction très pratique. Il peut suivre et ajuster la position stop loss en fonction des changements du marché en temps réel, tout en assurant le contrôle des risques et en maximisant les bénéfices possibles.

Analyse des risques

Les principaux risques de cette stratégie proviennent des indicateurs EMA et WMA eux-mêmes. Lorsqu'il y a des mouvements violents du marché, ils donnent souvent de mauvais signaux, conduisant facilement à un stop loss. Dans ce cas, il est recommandé d'assouplir de manière appropriée le nombre de points de stop loss ou d'envisager de remplacer d'autres combinaisons d'indicateurs.

Un autre point de risque est qu'il est difficile d'équilibrer le stop loss et le take profit. Poursuivre un profit plus élevé nécessite souvent de prendre des risques plus importants, ce qui peut facilement conduire à un stop loss lorsque le marché tourne. Par conséquent, la configuration du stop loss et du take profit nécessite un test et une évaluation minutieux.

Directions d'optimisation

Cette stratégie peut être optimisée dans les aspects suivants:

  1. Testez différentes combinaisons de paramètres de l'EMA et de l'WMA pour en trouver la meilleure;
  2. Essayez d'autres indicateurs comme le MACD, le KDJ, etc. pour les remplacer ou les combiner, et voyez si le taux de gain peut être amélioré;
  3. Évaluer la rémunération du risque de différentes configurations de points pour le stop loss et le take profit et trouver le réglage optimal;
  4. Étudier les caractéristiques des différentes variétés et ajuster les paramètres pour les adapter aux différents marchés;
  5. Incorporer des algorithmes d'apprentissage automatique pour réaliser une optimisation dynamique des paramètres.

Conclusion

L'idée de base de cette stratégie est simple et claire, en utilisant l'EMA et la WMA comme base, et en utilisant un mécanisme de stop loss et de prise de profit basé sur des points pour le contrôle des risques. L'avantage de la stratégie réside dans un contrôle des risques précis et flexible, qui peut être ajusté en conséquence pour différents marchés. Des optimisations de suivi peuvent être effectuées dans les signaux d'entrée, la sélection des paramètres, le mécanisme de stop loss, etc., pour que la stratégie s'adapte mieux aux environnements de marché complexes et en constante évolution.


/*backtest
start: 2024-01-03 00:00:00
end: 2024-01-10 00:00:00
period: 45m
basePeriod: 5m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

// inspiration script from: @ahmad_naquib
// inspiration script link: https://www.tradingview.com/script/tGTV8MkY-Two-Take-Profits-and-Two-Stop-Loss/
// inspiration strategy script name: Two Take Profits and Two Stop Loss


////////////
// Do not use this strategy, it's just an exmaple !! The goal from this script is to show you TP and SL based on PIPS
////////////


//@version=5
strategy('SL & TP based on Pips', "PIP SL & TP", overlay=true, initial_capital=1000)

// MA
ema_period = input(title='EMA period', defval=10)
wma_period = input(title='WMA period', defval=20)
ema = ta.ema(close, ema_period)
wma = ta.wma(close, wma_period)

// Entry Conditions
long = ta.crossover(ema, wma) and nz(strategy.position_size) == 0
short = ta.crossunder(ema, wma) and nz(strategy.position_size) == 0

// Pips Calculation
pip1 = input(20, title = "TP PIP", group = "PIP CALCULATION") * 10 * syminfo.mintick
pip2 = input(20, title = "SL PIP", group = "PIP CALCULATION") * 10 * syminfo.mintick

// Trading parameters 
var bool LS = na
var bool SS = na

var float EP = na // Entry Position
var float TVL = na
var float TVS = na
var float TSL = na
var float TSS = na

var float TP1 = na
//var float TP2 = na
var float SL1 = na
///var float SL2 = na

// SL & TP Values
// there's also SL2 and TP2 in case you want to add them to your script, 
//also you can add a break event in the strategy.entry section.

if short or long and strategy.position_size == 0
    EP := close
    SL1 := EP - pip2 * (short ? -1 : 1)
    //SL2 := EP - pip2 * (short ? -1 : 1)
    
    TP1 := EP + pip1 * (short ? -1 : 1)
    //TP2 := EP + pip1 * 2 * (short ? -1 : 1)


// current trade direction    
LS := long or strategy.position_size > 0
SS := short or strategy.position_size < 0

// adjust trade parameters and trailing stop calculations
TVL := math.max(TP1, open) - pip1[1]
TVS := math.min(TP1, open) + pip1[1]
TSL := open[1] > TSL[1] ? math.max(TVL, TSL[1]) : TVL
TSS := open[1] < TSS[1] ? math.min(TVS, TSS[1]) : TVS

//if LS and high > TP1
    //if open <= TP1
        //SL2 := math.min(EP, TSL)

//if SS and low < TP1
    //if open >= TP1
        //SL2 := math.max(EP, TSS)


// Closing conditions
// and those are a closing conditions in case you want to add them.

//close_long = LS and open < SL2
//close_short = SS and open > SL2

// Buy
if (long and not SS)
    strategy.entry('buy', strategy.long)
strategy.exit('exit1', from_entry='buy', stop=SL1, limit=TP1, qty_percent=100)
//strategy.exit('exit2', from_entry='buy', stop=SL2, limit=TP2)

// Sell
if (short and not LS)
    strategy.entry('sell', strategy.short)
strategy.exit('exit3', from_entry='sell', stop=SL1, limit=TP1, qty_percent=100)
//strategy.exit('exit4', from_entry='sell', stop=SL2, limit=TP2)

// Plots
// those are plots for the lines of The tp and sl. they are really useful, and in the next update I will use a filling option.

a = plot(strategy.position_size > 0 ? SL1 : na, color=color.new(#af0829, 30), linewidth = 2, style=plot.style_linebr)
b = plot(strategy.position_size < 0 ? SL1 : na, color=color.new(#af0829, 30), linewidth = 2, style=plot.style_linebr)

c = plot(strategy.position_size > 0 ? TP1 : na, color=color.new(#2e7e00, 30), linewidth = 2, style=plot.style_linebr)
d = plot(strategy.position_size < 0 ? TP1 : na, color=color.new(#2e7e00, 30), linewidth = 2, style=plot.style_linebr)

g = plot(strategy.position_size >= 0 ? na : EP, color=color.new(#ffffff, 50), style=plot.style_linebr)
h = plot(strategy.position_size <= 0 ? na : EP, color=color.new(#ffffff, 50), style=plot.style_linebr)


// those are plot for the TP2 and SL2, they are optional if you want to add them.

//e = plot(strategy.position_size > 0 ? TP2 : na, color=color.new(#00ced1, 0), style=plot.style_linebr)
//f = plot(strategy.position_size < 0 ? TP2 : na, color=color.new(#00ced1, 0), style=plot.style_linebr)


//those are the plot for the ema and wma strategy for short and long signal. they are not really a good strategy, I just used them as an example
//but you have the option to plot them or not.
// do not use this strategy, it's just an exmaple !! The goal from this script is to show you TP and SL based on PIPS

//plot(ema, title='ema', color=color.new(#fff176, 0))
//plot(wma, title='wma', color=color.new(#00ced1, 0))

Plus de