Tendance à suivre la stratégie avec Stop Loss et Take Profit

Auteur:ChaoZhang est là., Date: 2024-02-21 14:55:41
Les étiquettes:

img

Résumé

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 logique de la stratégie

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.

Analyse des avantages

Les avantages de cette stratégie sont les suivants:

  1. Le trading suivant les tendances évite les risques de contre-trend
  2. Le signal d'entrée combine une bougie haussière et un écart pour éviter une entrée longue prématurée.
  3. La position de stop-loss est raisonnable pour contrôler une seule perte
  4. La fourchette des bénéfices est large avec un potentiel de profit élevé

Analyse des risques

Il y a aussi des risques:

  1. Incapable de déterminer les points d'inversion de tendance, peut manquer des opportunités de virage
  2. Le stop-loss est trop proche avec une plus grande probabilité d'être piégé
  3. Aucune prise en compte du contrôle des coûts, les bénéfices peuvent diminuer à haute fréquence de négociation

Pour contrôler ces risques, certaines optimisations peuvent être envisagées:

  1. Mettre des remorques près de la perte de stop pour suivre la perte de stop
  2. Ajouter un module de contrôle des coûts pour limiter la fréquence des commandes
  3. Ajouter le jugement de soutien/résistance

Directions d'optimisation

La stratégie peut également être optimisée de la manière suivante:

  1. Déterminez la tendance en fonction de plusieurs facteurs tels que la direction du MA, le changement de volume, etc.
  2. Optimisez les signaux d'entrée avec plus de modèles de chandeliers
  3. Tracez dynamiquement le stop-loss et le profit selon la fluctuation des prix
  4. Ajouter un module quantitatif à la dimension de position de commande
  5. Combinaisons de plusieurs délais pour filtrer en fonction des tendances à un niveau supérieur

Résumé

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)


Plus de