Achat directionnel à faible volatilité avec prise de profit et stop loss

Auteur:ChaoZhang est là., Date: 2023-12-18 à 12h07
Les étiquettes:

img

Résumé

La stratégie s'appelle Low Volatility Directional Buy with Profit Taking and Stop Loss. Elle utilise le crossover moyen mobile comme signal d'achat et combine la prise de profit et le stop loss pour verrouiller le profit.

La logique de la stratégie

La stratégie utilise 3 moyennes mobiles avec des périodes différentes: 50-période, 100-période et 200-période.

Une augmentation rapide des MA à 50 périodes représente un renforcement de la dynamique à court terme; une augmentation des MA à 100 périodes indique également une force à moyen terme qui se joint à la stabilisation de la tendance à la hausse.

Après l'entrée, la stratégie utilise la prise de profit et l'arrêt de perte pour verrouiller les gains.

Analyse des avantages

Les avantages de cette stratégie:

  1. Capturez avec précision les opportunités de tendance provenant de ruptures à faible volatilité.
  2. Une logique simple et claire avec des moyennes mobiles faciles à calculer et à tester.
  3. Des réglages raisonnables de prise de profit et de stop loss assurent des gains stables.
  4. Des paramètres configurables flexibles facilitent les optimisations.

Analyse des risques

Il y a aussi des risques:

  1. Des signaux de fuite erronés peuvent causer des pertes.
  2. Difficile d'arrêter les pertes quand les marchés tournent.
  3. Les paramètres de prise de bénéfices et de stop loss incorrects affectent la rentabilité.

Les solutions:

  1. Ajouter d'autres indicateurs pour filtrer les signaux et assurer la validité de la rupture.
  2. Réduire la durée du stop-loss pour réduire les pertes liées aux inversions.
  3. Testez différents ratios de prise de profit et de stop loss pour trouver l'optimum.

Directions d'optimisation

Des améliorations peuvent être apportées dans les domaines suivants:

  1. Testez différentes périodes de moyenne mobile pour trouver la meilleure combinaison.
  2. Ajoutez le volume, etc., pour confirmer les écarts de tendance.
  3. Ajustez dynamiquement le pourcentage de prise de profit et de stop-loss.
  4. Incorporer l'apprentissage automatique, etc. pour prédire le taux de réussite de l'évasion.
  5. Ajuster les paramètres en fonction des différentes conditions du marché et des pièces.

En résumé, la stratégie a une logique générale claire, obtient un bénéfice à faible risque en configurant les périodes moyennes mobiles et le pourcentage de prise de profit / stop-loss. Elle peut être appliquée de manière flexible dans le trading quantitatif. Des optimisations supplémentaires peuvent être apportées dans des domaines tels que les signaux d'entrée et les méthodes de stop-loss, combinées à l'ajustement des paramètres pour obtenir les meilleurs résultats.


/*backtest
start: 2023-12-10 00:00:00
end: 2023-12-17 00:00:00
period: 1m
basePeriod: 1m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=4
strategy(shorttitle='Low volatility Buy w/ TP & SL (by Coinrule)',title='Low volatility Buy w/ TP & SL', overlay=true, initial_capital = 1000, process_orders_on_close=true, default_qty_type = strategy.percent_of_equity, default_qty_value = 100)

//Backtest dates
fromMonth = input(defval = 1,    title = "From Month",      type = input.integer, minval = 1, maxval = 12)
fromDay   = input(defval = 10,    title = "From Day",        type = input.integer, minval = 1, maxval = 31)
fromYear  = input(defval = 2019, title = "From Year",       type = input.integer, minval = 1970)
thruMonth = input(defval = 1,    title = "Thru Month",      type = input.integer, minval = 1, maxval = 12)
thruDay   = input(defval = 1,    title = "Thru Day",        type = input.integer, minval = 1, maxval = 31)
thruYear  = input(defval = 2112, title = "Thru Year",       type = input.integer, minval = 1970)

showDate  = input(defval = true, title = "Show Date Range", type = input.bool)

start     = timestamp(fromYear, fromMonth, fromDay, 00, 00)        // backtest start window
finish    = timestamp(thruYear, thruMonth, thruDay, 23, 59)        // backtest finish window
window()  => time >= start and time <= finish ? true : false       // create function "within window of time"

//MA inputs and calculations
movingaverage_fast = sma(close, input(50))
movingaverage_slow = sma(close, input(200))
movingaverage_normal= sma(close, input(100))



//Entry 
strategy.entry(id="long", long = true, when = movingaverage_slow > movingaverage_normal and movingaverage_fast > movingaverage_normal)

//Exit
longStopPrice  = strategy.position_avg_price * (1 - 0.04)
longTakeProfit = strategy.position_avg_price * (1 + 0.08)

strategy.close("long", when = close < longStopPrice or close > longTakeProfit and window())

//PLOT

plot(movingaverage_fast, color=color.orange, linewidth=2)
plot(movingaverage_slow, color=color.purple, linewidth=3)
plot(movingaverage_normal, color=color.blue, linewidth=2)


Plus de