
Cette stratégie utilise les indicateurs de fléchissement pour définir automatiquement les prix stop-loss et stop-stop, permettant de négocier des prix stop-loss mobiles. Elle permet d’obtenir plus de profit dans des conditions de tendance, tout en réduisant les pertes dans des conditions de choc.
Cette stratégie est principalement basée sur les indicateurs de courbe pour fixer les prix. Les indicateurs de courbe peuvent refléter le soutien et la résistance potentiels du marché. La stratégie utilise les différents niveaux de l’indicateur de courbe comme prix d’arrêt et de rupture.
Plus précisément, la stratégie suit les hauts et les bas et calcule une fourchette de 10 tranches de prix. Elle choisit ensuite une tranche de prix comme stratégie d’entrée en fonction de la configuration.
Une fois la commande passée, la stratégie continue à suivre le prix de la tranche la plus récente. Lorsqu’une tranche plus faible se produit, la stratégie annule la commande initiale, ré-commande et met en œuvre un stop-loss mobile.
Le plus grand avantage de cette stratégie est qu’elle permet d’ajuster de manière dynamique les prix de stop loss et de stop loss, et est spécialement conçue pour les conditions de tendance. Elle présente les caractéristiques suivantes:
Il est possible d’obtenir plus d’argent dans les tendances. Le paramètre de blocage basé sur le prix d’entrée moyen permet de participer au maximum aux tendances et de générer des gains plus élevés.
Il permet de réduire les pertes en cas de choc. Il permet de réduire les pertes en cas de choc, en évitant d’être bloqué en cas de choc lorsque le prix revient à un niveau inférieur.
Prise en charge de la prise de position. La configuration de la prise de position augmente la position lorsque le prix baisse à un certain niveau, ce qui réduit le coût moyen de la position.
Les opérations sont simples: il suffit de configurer la distance et le rapport de freinage, et la transaction est entièrement automatisée, sans intervention manuelle.
Cette stratégie comporte également des risques, principalement liés aux points suivants:
Il est susceptible d’être stoppé à plusieurs reprises lors d’un cycle de choc. En cas de courbe horizontale ou de choc, le prix peut déclencher plusieurs arrêts de perte, augmentant la fréquence des transactions et les frais de traitement.
Il n’y a pas de stop-loss. La stratégie n’a pas de stop-loss pour la poursuite d’une plus grande fortune. Si la situation change radicalement, il peut y avoir des pertes importantes.
Il n’y a pas de limite quant au nombre et au montant des mises en réserve.
La réponse:
La stratégie a également beaucoup de marge d’optimisation, principalement dans les domaines suivants:
La confirmation de l’admission peut être effectuée en utilisant d’autres combinaisons d’indicateurs. La confirmation d’indicateurs tels que l’EMA, le MACD peut être ajoutée aux conditions d’admission, afin d’éviter d’être bloquée dans une situation de choc.
L’adhésion à un mécanisme d’arrêt des pertes. La configuration d’un arrêt fixe ou d’un arrêt de suivi permet d’éviter des pertes massives dans des situations extrêmes.
Optimisation de la logique de mise en place. La fourchette de prix et le nombre de mises en place peuvent être optimisés en fonction de la situation du marché.
Combinaison d’algorithmes d’apprentissage automatique. Par exemple, l’utilisation d’algorithmes tels que LSTM pour prédire les mouvements possibles des prix et la résistance des supports. Aide à déterminer une meilleure logique d’entrée et de sortie.
Cette stratégie est globalement adaptée pour suivre les tendances. Elle permet d’obtenir des bénéfices supplémentaires en ajustant dynamiquement le prix d’arrêt et de perte. Il existe également un certain risque, qui nécessite une optimisation et une amélioration combinées à d’autres mécanismes pour l’adapter à un environnement de marché plus complexe.
/*backtest
start: 2024-01-06 00:00:00
end: 2024-02-05 00:00:00
period: 1h
basePeriod: 15m
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/
// © CryptoRox
//@version=4
//Paste the line below in your alerts to run the built-in commands.
//{{strategy.order.alert_message}}
strategy(title="Fibs limit only", shorttitle="Strategy", overlay=true, precision=8, pyramiding=1000, commission_type=strategy.commission.percent, commission_value=0.04)
//Settings
testing = input(false, "Live")
//Use epochconverter or something similar to get the current timestamp.
starttime = input(1600976975, "Start Timestamp") * 1000
//Wait XX seconds from that timestamp before the strategy starts looking for an entry.
seconds = input(60, "Start Delay") * 1000
testPeriod = true
leverage = input(1, "Leverage")
tp = input(1.0, "Take Profit %") / leverage
dca = input(-1.0, "DCA when < %") / leverage *-1
fibEntry = input("1", "Entry Level", options=["1", "2", "3", "4", "5", "6", "7", "8", "9", "10"])
//Strategy Calls
equity = strategy.equity
avg = strategy.position_avg_price
symbol = syminfo.tickerid
openTrades = strategy.opentrades
closedTrades = strategy.closedtrades
size = strategy.position_size
//Fibs
lentt = input(60, "Pivot Length")
h = highest(lentt)
h1 = dev(h, lentt) ? na : h
hpivot = fixnan(h1)
l = lowest(lentt)
l1 = dev(l, lentt) ? na : l
lpivot = fixnan(l1)
z = 400
p_offset= 2
transp = 60
a=(lowest(z)+highest(z))/2
b=lowest(z)
c=highest(z)
fib0 = (((hpivot - lpivot)) + lpivot)
fib1 = (((hpivot - lpivot)*.21) + lpivot)
fib2 = (((hpivot - lpivot)*.3) + lpivot)
fib3 = (((hpivot - lpivot)*.5) + lpivot)
fib4 = (((hpivot - lpivot)*.62) + lpivot)
fib5 = (((hpivot - lpivot)*.7) + lpivot)
fib6 = (((hpivot - lpivot)* 1.00) + lpivot)
fib7 = (((hpivot - lpivot)* 1.27) + lpivot)
fib8 = (((hpivot - lpivot)* 2) + lpivot)
fib9 = (((hpivot - lpivot)* -.27) + lpivot)
fib10 = (((hpivot - lpivot)* -1) + lpivot)
notna = nz(fib10[60])
entry = 0.0
if fibEntry == "1"
entry := fib10
if fibEntry == "2"
entry := fib9
if fibEntry == "3"
entry := fib0
if fibEntry == "4"
entry := fib1
if fibEntry == "5"
entry := fib2
if fibEntry == "6"
entry := fib3
if fibEntry == "7"
entry := fib4
if fibEntry == "8"
entry := fib5
if fibEntry == "9"
entry := fib6
if fibEntry == "10"
entry := fib7
profit = avg+avg*(tp/100)
pause = 0
pause := nz(pause[1])
paused = time < pause
fill = 0.0
fill := nz(fill[1])
count = 0.0
count := nz(fill[1])
filled = count > 0 ? entry > fill-fill/100*dca : 0
signal = testPeriod and notna and not paused and not filled ? 1 : 0
neworder = crossover(signal, signal[1])
moveorder = entry != entry[1] and signal and not neworder ? true : false
cancelorder = crossunder(signal, signal[1]) and not paused
filledorder = crossunder(low[1], entry[1]) and signal[1]
last_profit = 0.0
last_profit := nz(last_profit[1])
if neworder and signal
strategy.order("New", 1, 0.0001, alert_message='New Order|e=binancefuturestestnet s=btcusdt b=long q=0.0011 fp=' + tostring(entry))
if moveorder
strategy.order("Move", 1, 0.0001, alert_message='Move Order|e=binancefuturestestnet s=btcusdt b=long c=order|e=binancefuturestestnet s=btcusdt b=long q=0.0011 fp=' + tostring(entry))
if filledorder and size < 1
fill := entry
count := count+1
pause := time + 60000
p = close+close*(tp/100)
strategy.entry("Filled", 1, 1, alert_message='Long Filled|e=binancefuturestestnet s=btcusdt b=short c=order|delay=1|e=binancefuturestestnet s=btcusdt b=long c=position q=100% ro=1 fp=' + tostring(p))
if filledorder and size >= 1
fill := entry
count := count+1
pause := time + 60000
strategy.entry("Filled", 1, 1, alert_message='Long Filled|e=binancefuturestestnet s=btcusdt b=short c=order|delay=1|e=binancefuturestestnet s=btcusdt b=long c=position q=100% ro=1 fp=' + tostring(profit))
if cancelorder and not filledorder
pause := time + 60000
strategy.order("Cancel", 1, 0.0001, alert_message='Cancel Order|e=binancefuturestestnet s=btcusdt b=long c=order')
if filledorder
last_profit := profit
closeit = crossover(high, profit) and size >= 1
if closeit
strategy.entry("Close ALL", 0, 0, alert_message='Profit')
count := 0
fill := 0.0
last_profit := 0.0
//Plots
bottom = signal ? color.green : filled ? color.red : color.white
plot(entry, "Entry", bottom)