
La stratégie vise à réaliser une gestion de stop-loss sur plusieurs périodes de temps. La stratégie utilise à la fois des stop-loss en pourcentage et des stop-loss dans les zones de prix critiques au-dessus des périodes de temps principales, pour une gestion de stop-loss plus précise et plus efficace.
La stratégie commence par l’introduction de l’indicateur de tendance des vagues, en fonction de l’indicateur de la fourchette, pour une entrée en jeu de plusieurs signaux.
Pour ce qui est de la gestion de l’arrêt, la stratégie utilise deux types d’arrêt:
Le prix de l’entrée est fixé en pourcentage, et le prix de l’entrée est fixé en pourcentage.
Les arrêts multi-temps: tracer des lignes moyennes sur les lignes journalières et les lignes de 4 heures, en prenant le prix de ces lignes moyennes comme prix d’arrêt.
Pour le stop-loss en pourcentage, la stratégie définit 4 pourcentages différents de prix de stop-loss. Lorsque le prix touche chaque prix de stop-loss, la position est levée en partie en fonction du pourcentage défini.
Pour les arrêts de plusieurs périodes de temps, la stratégie consiste à tracer une moyenne de 100 jours et une moyenne de 200 jours sur les lignes journalières et les lignes de 4 heures respectivement. Prenez le prix de ces lignes comme prix d’arrêt et faites un placement lorsque le prix atteint la position.
En outre, la stratégie définit un prix de stop-loss. Lorsque le prix est inférieur au prix de stop-loss, la position entière est levée.
L’ensemble de la stratégie a permis une gestion plus complète et plus fine de l’arrêt en combinant l’utilisation de l’arrêt pourcentage et de l’arrêt multi-temps.
Utilisez un pourcentage d’anesthésie, selon une proportion fixe d’anesthésie, pour éviter l’anesthésie prématurée ou insuffisante.
L’analyse des multi-temps permet de définir des prix d’arrêt plus précis et de mieux choisir les points d’arrêt.
Il existe plusieurs niveaux d’arrêt de la coqueluche, qui peuvent être distribués en lots, ce qui réduit le risque.
Il est possible de mettre en place un prix stop-loss pour contrôler efficacement le risque de baisse.
La combinaison de l’utilisation d’une suspension en pourcentage et d’une suspension en multi-temps permet une suspension plus complète et plus fine.
Le pourcentage d’arrêt dépend des paramètres, et un mauvais paramètre peut entraîner un arrêt prématuré ou tardif.
L’analyse multi-cadres dépend de l’indicateur de la ligne moyenne, qui présente un certain retard et peut être déviée.
Un mauvais réglage de la position d’arrêt peut entraîner un arrêt inutile.
Il est nécessaire d’optimiser les paramètres de manière appropriée pour obtenir la meilleure correspondance entre les stops de pourcentage et les stops de multi-cadres.
Il est possible de tester plus d’indicateurs de la moyenne et de choisir la meilleure moyenne comme prix de clôture.
Les méthodes de prévision de modèle peuvent être essayées, en prévoyant des zones critiques de prix comme prix d’arrêt.
Il est possible d’ajouter d’autres règles de freinage, telles que le ratio de freinage attendu, le freinage mobile, etc., pour rendre le freinage plus complet.
Les paramètres de l’optimisation du pourcentage d’arrêt peuvent être testés pour différentes périodes de détention.
Il est possible d’optimiser les paramètres d’arrêt par rétro-analyse, ce qui rend l’ensemble des risques plus avantageux que les gains.
Cette stratégie permet une gestion flexible et précise de l’arrêt par une combinaison d’arrêt de pourcentage et d’arrêt de plusieurs périodes. La stratégie présente des avantages tels que le choix d’un meilleur point d’arrêt et un arrêt plus complet. Il existe également des problèmes tels que la configuration des paramètres, la position d’arrêt.
/*backtest
start: 2023-10-22 00:00:00
end: 2023-10-29 00:00:00
period: 5m
basePeriod: 1m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/
// This source code is subject to the terms of the Mozilla Public License 2.0 at https://mozilla.org/MPL/2.0/
// © TrendCrypto2022
//@version=5
// strategy("Take profit Multi timeframe", overlay=true, margin_long=100, margin_short=100)
takepercent = input.bool(title="Take profit %", defval=true ,group="Set up take profit")
takemtf = input.bool(title="Take profit Multi timeframe", defval=false ,group="Set up take profit")
//Paste your strategy at here. This is example strategy. I use WaveTrend indicator
//WaveTrend indicator
n1 = input(10, "Channel Length")
n2 = input(21, "Average Length")
oblv1 = input(60, "Over Bought Lv 1")
oblv2 = input(53, "Over Bought Lv 2")
oslv1 = input(-60, "Over Sold Lv 1")
oslv2 = input(-53, "Over Sold Lv 2")
ap = hlc3
esa = ta.ema(ap, n1)
d = ta.ema(math.abs(ap - esa), n1)
ci = (ap - esa) / (0.015 * d)
tci = ta.ema(ci, n2)
wt1 = tci
wt2 = ta.sma(wt1,4)
//Strategy
buy = ta.crossover(wt1, wt2) and wt1 < -40
if (buy)
strategy.entry("Long", strategy.long)
//Resistant in time D and 4H
ema_len1 = input.int(title='Ema1', defval=100, group='Take profit Mtf')
ema_len2 = input.int(title='Ema2', defval=200, group='Take profit Mtf')
src = input.source(title='Source', defval=close, group='Take profit Mtf')
tf1 = input.timeframe(title='Time frame 1', defval='240', group='Take profit Mtf')
tf2 = input.timeframe(title='Time frame 2', defval='D', group='Take profit Mtf')
htf_ma1 = ta.ema(src, ema_len1)
htf_ma2 = ta.ema(src, ema_len2)
ema1 = request.security(syminfo.tickerid, tf1, htf_ma1)
ema2 = request.security(syminfo.tickerid, tf1, htf_ma2)
ema3 = request.security(syminfo.tickerid, tf2, htf_ma1)
ema4 = request.security(syminfo.tickerid, tf2, htf_ma2)
//Plot
plotema1 = plot(ema1, color=color.new(color.silver, 0), style=plot.style_line, linewidth=1, offset=0, title='Ema100 4h', display=display.none)
plotema2 = plot(ema2, color=color.new(color.silver, 0), style=plot.style_line, linewidth=1, offset=0, title='Ema200 4h', display=display.none)
plotema3 = plot(ema3, color=color.new(color.orange, 20), style=plot.style_line, linewidth=1, offset=0, title='Ema100 D', display=display.none)
plotema4 = plot(ema4, color=color.new(color.orange, 20), style=plot.style_line, linewidth=1, offset=0, title='Ema200 D', display=display.none)
//Label take profit multitime frame
var label labelema1 = na
label.delete(labelema1)
labelema1 := label.new(x=time + 120, y=ema1, text='\n*****Ema100 4H: ' + str.tostring(math.round(ema1,4)) + '', color=color.new(#000000, 100), textcolor = color.yellow, size=size.small, style=label.style_label_left, xloc=xloc.bar_time, yloc=yloc.price)
var label labelema2 = na
label.delete(labelema2)
labelema2 := label.new(x=time + 120, y=ema2, text='\n*****Ema200 4H: ' + str.tostring(math.round(ema2,4)) + '', color=color.new(#000000, 100), textcolor = color.yellow, size=size.small, style=label.style_label_left, xloc=xloc.bar_time, yloc=yloc.price)
var label labelema3 = na
label.delete(labelema3)
labelema3 := label.new(x=time + 120, y=ema3, text='\n*****Ema100 1D: ' + str.tostring(math.round(ema3,4)) + '', color=color.new(#000000, 100), textcolor = color.yellow, size=size.small, style=label.style_label_left, xloc=xloc.bar_time, yloc=yloc.price)
var label labelema4 = na
label.delete(labelema4)
labelema4 := label.new(x=time + 120, y=ema4, text='\n*****Ema200 1D: ' + str.tostring(math.round(ema4,4)) + '', color=color.new(#000000, 100), textcolor = color.yellow, size=size.small, style=label.style_label_left, xloc=xloc.bar_time, yloc=yloc.price)
//Set up take profit %
percent(pcnt) =>
strategy.position_size != 0 ? math.round(pcnt / 100 * strategy.position_avg_price / syminfo.mintick) : float(na)
TP1=input.float(3, title="TP1 %", step=0.1, group="Take profit %")
TP2=input.float(5, title="TP2 %", step=1, group="Take profit %")
TP3=input.float(6, title="TP3 %", step=1, group="Take profit %")
TP4=input.float(8, title="TP4 %", step=1, group="Take profit %")
SL=input.float(5, title="Stop Loss %", step=1, group="Take profit %")
qty1=input.float(5, title="% Close At TP1", step=1, group="Take profit %")
qty2=input.float(5, title="% Close At TP2", step=1, group="Take profit %")
qty3=input.float(5, title="% Close At TP3", step=1, group="Take profit %")
qty4=input.float(5, title="% Close At TP4", step=1, group="Take profit %")
lossPnt_L = percent(SL)
//Set up take profit multi timeframe
a = array.from((ema1), (ema2), (ema3), (ema4))
tpmtf1 = array.min(a)
tpmtf2 = array.min(a, 2)
tpmtf3 = array.min(a, 3)
tpmtf4 = array.min(a, 4)
//Set up exit
long_sl_level = strategy.position_avg_price - lossPnt_L*syminfo.mintick
if takepercent == true
strategy.exit("TP1%", "Long", qty_percent = qty1, profit = percent(TP1), loss = lossPnt_L)
strategy.exit("TP2%", "Long", qty_percent = qty2, profit = percent(TP2), loss = lossPnt_L)
strategy.exit("TP3%", "Long", qty_percent = qty3, profit = percent(TP3), loss = lossPnt_L)
strategy.exit("TP4%", "Long", qty_percent = qty4, profit = percent(TP3), loss = lossPnt_L)
strategy.close_all(when= ta.crossunder(wt1, wt2) and wt1 > 0, comment="Close All")
if takemtf == true and array.max(a, 1) > strategy.position_avg_price
strategy.exit("TP1Mtf", "Long", qty_percent = qty1, limit = tpmtf1, stop = long_sl_level)
strategy.exit("TP2Mtf", "Long", qty_percent = qty2, limit = tpmtf2, stop = long_sl_level)
strategy.exit("TP3Mtf", "Long", qty_percent = qty3, limit = tpmtf3, stop = long_sl_level)
strategy.close_all(when= ta.crossunder(wt1, wt2) and wt1 > 0, comment="Close All")
// Plot TP & SL
long_tp1_level = strategy.position_avg_price + percent(TP1)*syminfo.mintick
long_tp2_level = strategy.position_avg_price + percent(TP2)*syminfo.mintick
long_tp3_level = strategy.position_avg_price + percent(TP3)*syminfo.mintick
long_tp4_level = strategy.position_avg_price + percent(TP4)*syminfo.mintick
plot(strategy.position_size > 0 ? long_sl_level : na, color=color.red, style=plot.style_linebr, title="SL Long")
plot(strategy.position_size > 0 ? long_tp1_level : na, color=color.lime, style=plot.style_linebr, title="Long TP1%")
plot(strategy.position_size > 0 ? long_tp2_level : na, color=color.lime, style=plot.style_linebr, title="Long TP2%")
plot(strategy.position_size > 0 ? long_tp3_level : na, color=color.lime, style=plot.style_linebr, title="Long TP3%")
plot(strategy.position_size > 0 ? long_tp4_level : na, color=color.lime, style=plot.style_linebr, title="Long TP4%")
plot(strategy.position_size > 0 ? tpmtf1 : na, color=color.orange, style=plot.style_linebr, title="Long TP1Mtf", display = display.none)
plot(strategy.position_size > 0 ? tpmtf2 : na, color=color.orange, style=plot.style_linebr, title="Long TP2Mtf", display = display.none)
plot(strategy.position_size > 0 ? tpmtf3 : na, color=color.orange, style=plot.style_linebr, title="Long TP3Mtf", display = display.none)
//Label TP
if strategy.position_size > 0
var label labellongtp1 = na
label.delete(labellongtp1)
labellongtp1 := label.new(x=time + 120, y=long_tp1_level, text='\nTP1: ' + str.tostring(math.round(long_tp1_level,2)) + '', color=color.new(#000000, 100), textcolor = color.lime, size=size.small, style=label.style_label_left, xloc=xloc.bar_time, yloc=yloc.price)
var label labellongtp2 = na
label.delete(labellongtp2)
labellongtp2 := label.new(x=time + 120, y=long_tp2_level, text='\nTP2: ' + str.tostring(math.round(long_tp2_level,2)) + '', color=color.new(#000000, 100), textcolor = color.lime, size=size.small, style=label.style_label_left, xloc=xloc.bar_time, yloc=yloc.price)
var label labellongtp3 = na
label.delete(labellongtp3)
labellongtp3 := label.new(x=time + 120, y=long_tp3_level, text='\nTP3: ' + str.tostring(math.round(long_tp3_level,2)) + '', color=color.new(#000000, 100), textcolor = color.lime, size=size.small, style=label.style_label_left, xloc=xloc.bar_time, yloc=yloc.price)
var label labellongtp4 = na
label.delete(labellongtp4)
labellongtp4 := label.new(x=time + 120, y=long_tp4_level, text='\nTP4: ' + str.tostring(math.round(long_tp4_level,2)) + '', color=color.new(#000000, 100), textcolor = color.lime, size=size.small, style=label.style_label_left, xloc=xloc.bar_time, yloc=yloc.price)