L'idée principale de cette stratégie est de déterminer la direction du long et du court en fonction de la tendance hebdomadaire des prix. Dans une tendance haussière, il va long lorsqu'il y a un modèle de bougie haussier. Il tire profit lorsque le prix monte au niveau prédéfini de prise de profit et arrête la perte lorsqu'il tombe au niveau prédéfini de stop loss.
La stratégie définit tout d'abord les conditions pour juger de l'évolution hebdomadaire:
isUptrend = close > close[1]
isDowntrend = close < close[1]
Si la clôture actuelle est supérieure à la clôture précédente, elle est jugée comme tendance haussière.
Ensuite, le signal de négociation intrajournalier est défini:
buyCondition = getPrevDayClose() > getPrevDayOpen() and getPrevDayOpen() > getPrevDayClose()[1] and isUptrend
C'est-à-dire que la clôture précédente est supérieure à la clôture précédente (bougie haussière) et que la clôture précédente est supérieure à la clôture avant la journée précédente (gap up), et qu'elle est en tendance haussière.
Après l'entrée de la position, le stop loss est réglé sur la clôture précédente moins 1,382 fois le corps réel de la journée précédente:
stopLoss = getPrevDayClose() - 1.382 * (getPrevDayClose() - getPrevDayOpen())
Le bénéfice de prise est fixé à la clôture précédente plus 2 fois la différence entre la clôture précédente et le stop loss:
takeProfit = getPrevDayClose() + 2 * (getPrevDayClose() - stopLoss)
Cela réalise la stratégie de stop loss et de prise de profit.
Les avantages de cette stratégie sont les suivants:
Il y a aussi des risques:
Pour contrôler ces risques, certaines optimisations peuvent être envisagées:
La stratégie peut également être optimisée de la manière suivante:
Dans l'ensemble, il s'agit d'une stratégie assez pratique, mettant en évidence le trading selon les tendances tout en contrôlant les risques. Il peut servir de stratégie de trading intraday de base et peut être optimisé de manière modulaire pour différents marchés et produits afin de créer des portefeuilles de trading diversifiés.
/*backtest start: 2024-01-01 00:00:00 end: 2024-01-24 23:59:59 period: 1h basePeriod: 15m exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}] */ //@version=5 strategy("Trend Following Strategy with Stop Loss and Take Profit", overlay=true) // Function to get previous day's close and open getPrevDayClose() => request.security(syminfo.tickerid, "D", close[1]) getPrevDayOpen() => request.security(syminfo.tickerid, "D", open[1]) // Determine weekly trend isUptrend = close > close[1] isDowntrend = close < close[1] // Determine daily conditions for buy buyCondition = getPrevDayClose() > getPrevDayOpen() and getPrevDayOpen() > getPrevDayClose()[1] and isUptrend // Calculate stop loss and take profit stopLoss = getPrevDayClose() - 1.382 * (getPrevDayClose() - getPrevDayOpen()) takeProfit = getPrevDayClose() + 2 * (getPrevDayClose() - stopLoss) // Strategy logic if (isUptrend) strategy.entry("Buy", strategy.long, when = buyCondition) strategy.exit("Take Profit/Stop Loss", from_entry="Buy", loss=stopLoss, profit=takeProfit) if (isDowntrend) strategy.entry("Sell", strategy.short) // Plotting the trend on the chart plotshape(series=isUptrend, title="Uptrend", color=color.green, style=shape.triangleup, location=location.abovebar) plotshape(series=isDowntrend, title="Downtrend", color=color.red, style=shape.triangledown, location=location.belowbar) // Plotting stop loss and take profit levels on the chart plot(stopLoss, color=color.red, title="Stop Loss", linewidth=2, style=plot.style_cross) plot(takeProfit, color=color.green, title="Take Profit", linewidth=2, style=plot.style_cross)