
L’idée principale de la stratégie est de déterminer la direction de la plus-value en fonction de la tendance des prix sur la semaine, d’entrer dans la plus-value lorsque la forme de la ligne solaire apparaît dans le cas d’un bullish; de s’arrêter lorsque les prix montent jusqu’à un point d’arrêt prévu, et de s’arrêter s’ils descendent jusqu’à un point d’arrêt prévu.
La stratégie définit d’abord les conditions pour juger de la tendance hebdomadaire:
isUptrend = close > close[1]
isDowntrend = close < close[1]
Si le prix de clôture actuel est supérieur au prix de clôture de la veille, il est considéré comme une tendance à la hausse, et vice versa.
Ensuite, définissez le signal de trading intraday:
buyCondition = getPrevDayClose() > getPrevDayOpen() and getPrevDayOpen() > getPrevDayClose()[1] and isUptrend
Le prix de clôture de la journée précédente est supérieur au prix d’ouverture (le “ rayonnement solaire “), et le prix d’ouverture de la journée précédente est supérieur au prix de clôture de la journée précédente (le ” rayonnement de la faille “), et est dans une tendance haussière, ce qui satisfait aux conditions d’entrée à plusieurs têtes.
Après l’entrée en bourse, le stop loss est défini comme le prix de clôture de la journée précédente, moins 1,382 fois la longueur de la ligne réelle de la journée précédente:
stopLoss = getPrevDayClose() - 1.382 * (getPrevDayClose() - getPrevDayOpen())
Le point d’arrêt est le prix de clôture de la journée précédente plus deux fois la différence entre le point d’arrêt et le prix de clôture:
takeProfit = getPrevDayClose() + 2 * (getPrevDayClose() - stopLoss)
Pour ce faire, il est nécessaire de mettre en place un système de compensation des pertes.
Cette stratégie présente les avantages suivants:
Cette stratégie comporte aussi des risques:
Pour maîtriser ces risques, vous pouvez envisager d’ajouter les optimisations suivantes:
La stratégie peut également être optimisée dans les directions suivantes:
La stratégie est globalement pratique, l’idée centrale étant de faire ressortir les tendances tout en maîtrisant les risques. Elle peut être utilisée comme stratégie de base pour les transactions à courte portée sur une journée, mais peut également être optimisée de manière modulaire en fonction des différents marchés et variétés, permettant une diversification du portefeuille de transactions.
/*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)