
La stratégie de suivi de tendance est une stratégie de trading de suivi de la perte basée sur l’indicateur de tendance TrendAlert. Elle détermine la direction de la tendance grâce à l’indicateur de tendance TrendAlert, permettant l’entrée de suivi de tendance.
La stratégie est principalement composée des éléments suivants:
L’indicateur de TrendAlert détermine la direction de la tendance. Quand TrendAlert est supérieur à 0, c’est un signal positif, et quand il est inférieur à 0, c’est un signal négatif.
L’indicateur ATR calcule la portée des fluctuations récentes des prix. ATR est multiplié par ATR StopMultiplier atStopMultiplier en tant que stop fixe.
Le prix le plus bas est le prix le plus bas et le prix le plus élevé est le prix le plus élevé, combiné avec le stop loss ATR pour construire le stop loss de suivi. Le contrôle des paramètres de structure est activé ou non.
En fonction de la direction du signal de tendance, entrez dans une position de prise de plus ou de moins. Après l’entrée, définissez un Take Profit et un Stop Loss.
Position de placement après le déclenchement d’un stop loss ou d’un stop-loss.
Cette stratégie permet de détecter les fausses alertes en fonction des tendances, de suivre les risques de contrôle des pertes, d’obtenir des bénéfices pour assurer la rentabilité et d’améliorer globalement la stabilité du système de négociation.
Les principaux avantages de cette stratégie sont les suivants:
Le filtrage des tendances et le suivi des arrêts de perte sont doublement garantis, évitant ainsi la poursuite du bruit du marché et assurant la maîtrise des risques de transaction.
L’ATR est adapté aux paramètres de stop-loss pour éviter la sur-optimisation et s’applique à une variété d’environnements de marché.
L’objectif est de s’assurer que les bénéfices ne soient pas perdus.
La logique de la stratégie est claire et concise, les modifications sont faciles à comprendre et conviennent aux traders quantifiés.
Il est écrit dans le langage de script Pine et peut être utilisé directement sur la plateforme TradingView, sans avoir besoin de connaissances en programmation.
Cette stratégie comporte aussi des risques:
Des erreurs de jugement de tendance peuvent entraîner des entrées et des arrêts inutiles. Des signaux d’arrêt ou de filtrage des entrées peuvent être relâchés de manière appropriée.
En cas de forte volatilité, l’ATR peut sous-estimer l’ampleur réelle de la vague. Dans ce cas, il peut augmenter le multiplicateur de stop loss de l’ATR.
Le stop à la cible peut limiter l’espace de profit de la stratégie. Le paramètre limitMultiplier peut être ajusté en fonction du marché.
La logique exist du code est basée uniquement sur le prix et devrait être combinée avec la gestion du temps.
Cette stratégie peut être optimisée dans les domaines suivants:
Optimisez les paramètres ATR de longueur atRLength et de multiplicateur d’arrêt atRStopMultiplier, et ajustez la sensibilité de l’algorithme d’arrêt.
L’objectif est d’essayer différentes tendances et de trouver de meilleures opportunités d’entrée sur le marché.
Sélectionnez ou ajustez les paramètres d’arrêt cible en fonction des caractéristiques de la variété de transaction spécifique.
Il est également possible d’augmenter les mécanismes d’arrêt de la perte de temps pour éviter le risque d’une nuit en solitaire.
La combinaison de filtrage de faux-pas avec le volume des transactions améliore la stabilité de la stratégie.
Cette stratégie est une stratégie de suivi de tendance très pratique. Elle utilise des indicateurs pour déterminer la direction de la tendance, tout en s’adaptant aux arrêts pour assurer le contrôle des risques. La stratégie est logiquement claire, simple à utiliser et très adaptée aux débutants.
/*backtest
start: 2023-01-29 00:00:00
end: 2024-02-04 00:00:00
period: 1d
basePeriod: 1h
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/
// This Pine Script™ code is subject to the terms of the Mozilla Public License 2.0 at https://mozilla.org/MPL/2.0/
// © jaque_verdatre
//@version=5
strategy("TrendAlert Based", overlay = true)
// Get inputs
TrendAlert = input.source(close, "TrendAlert")
atrLength = input.int(title="ATR Length", defval=15, minval=1)
useStructure = input.bool(title="Use Structure?", defval=true)
lookback = input.int(title="How Far To Look Back For High/Lows", defval=8, minval=1)
atrStopMultiplier = input.float(title="ATR Multiplier", defval=0.2, minval=0.1)
LimitMultiplier = input.float(title = "Limit Multiplier", defval = 0.5, minval = 0.1)
PineConnectorID = input.int(title = "Pine Connector ID",defval = 0)
CurrencyToSend = input.string(title = "personilized currency", defval = "ETHUSD")
Risk = input.int(title = "risk in % to send", defval = 10, minval = 1)
// Calculate data
atr = ta.atr(atrLength)
lowestLow = ta.lowest(low, lookback)
highestHigh = ta.highest(high, lookback)
longStop = (useStructure ? lowestLow : close) - atr * atrStopMultiplier
shortStop = (useStructure ? highestHigh : close) + atr * atrStopMultiplier
// Draw data to chart
plot(atr, color=color.rgb(33, 149, 243), title="ATR", display = display.none)
plot(longStop, color=color.green, title="Long Trailing Stop")
plot(shortStop, color=color.red, title="Short Trailing Stop")
var float LimitL = na
var float LimitS = na
var float LPosPrice = na
var float SPosPrice = na
var float LPosLongStop = na
var float SPosShortStop = na
KnowLimit (PosPrice, PosStop) =>
(PosPrice-PosStop)*LimitMultiplier+PosPrice
NotInTrade = strategy.position_size == 0
InLongTrade = strategy.position_size > 0
InShortTrade = strategy.position_size < 0
longCondition = TrendAlert > 0 and NotInTrade
if (longCondition)
LPosPrice := close
LPosLongStop := longStop
LimitL := KnowLimit(LPosPrice, LPosLongStop)
strategy.entry("long", strategy.long)
LTPPip = LimitL-LPosPrice
LSLPip = LPosPrice-longStop
alert(str.tostring(PineConnectorID)+',buy,'+str.tostring(CurrencyToSend)+',risk='+str.tostring(Risk)+',sl='+str.tostring(LSLPip)+'tp='+str.tostring(LTPPip), alert.freq_once_per_bar_close)
strategy.exit("exit", "long", stop = longStop, limit = LimitL)
shortCondition = TrendAlert < 0 and NotInTrade
if (shortCondition)
SPosPrice := close
SPosShortStop := shortStop
LimitS := KnowLimit(SPosPrice, SPosShortStop)
strategy.entry("short", strategy.short)
STPPip = SPosPrice-LimitS
SSLPip = shortStop - SPosPrice
alert(str.tostring(PineConnectorID)+',sell,ETHUSD,risk=10,sl='+str.tostring(SSLPip)+'tp='+str.tostring(STPPip), alert.freq_once_per_bar_close)
strategy.exit("exit", "short", stop = shortStop, limit = LimitS)
plotshape(longCondition, color = color.green, style = shape.labelup, location = location.belowbar, size = size.normal, title = "Long Condition")
plotshape(shortCondition, color = color.red, style = shape.labeldown, location = location.abovebar, size = size.normal, title = "Short Condition")
if (InShortTrade)
LimitL := close
LPosLongStop := close
LPosPrice := close
PlotLongTakeProfit = plot(LimitL, color = InLongTrade ? color.rgb(0, 255, 64) : color.rgb(120, 123, 134, 100), title = "Long Take Profit")
PlotLongStopLoss = plot(LPosLongStop, color = InLongTrade ? color.rgb(255, 0, 0) : color.rgb(120, 123, 134, 100), title = "Long Stop Loss")
PlotLongPosPrice = plot(LPosPrice, color = InLongTrade ? color.gray : color.rgb(120, 123, 134, 100), title = "Long Position Price")
if (InLongTrade)
LimitS := close
SPosShortStop := close
SPosPrice := close
PlotShortTakeProfit = plot(LimitS, color = InShortTrade ? color.rgb(0, 255, 64) : color.rgb(120, 123, 134, 100), title = "Short Take Profit")
PlotShortStopLoss = plot(SPosShortStop, color = InShortTrade ? color.rgb(255, 0, 0) : color.rgb(120, 123, 134, 100), title = "Short Stop Loss")
PlotShortPosPrice = plot(SPosPrice, color = InShortTrade ? color.gray : color.rgb(120, 123, 134, 100), title = "Short Position Price")
fill(PlotLongPosPrice, PlotLongTakeProfit, color = InLongTrade ? color.rgb(0, 255, 0, 95) : color.rgb(0, 255, 0, 100))
fill(PlotShortPosPrice, PlotShortTakeProfit, color = InShortTrade ? color.rgb(0, 255, 0, 95) : color.rgb(0, 255, 0, 100))
fill(PlotLongPosPrice, PlotLongStopLoss, color = InLongTrade ? color.rgb(255, 0, 0, 95) : color.rgb(255, 0, 0, 100))
fill(PlotShortPosPrice, PlotShortStopLoss, color = InShortTrade ? color.rgb(255, 0, 0, 95) : color.rgb(255, 0, 0, 100))