Tendance suivant la stratégie avec arrêt de perte de suivi

Auteur:ChaoZhang est là., Date: le 30 octobre 2023 à 15h21:54
Les étiquettes:

img

Résumé

Cette stratégie combine le suivi de la tendance avec le suivi du stop loss et prend une logique de profit pour suivre continuellement la tendance pour les profits. Elle utilise la moyenne mobile pour déterminer la direction de la tendance et génère des signaux de trading lorsque le prix franchit les lignes MA. Après avoir entré une position longue, la stratégie définit un stop loss basé sur la valeur ATR et l'ajuste avec la logique du stop loss pour suivre la tendance. Lorsque le prix augmente à un certain niveau, il faut un profit partiel pour verrouiller certains gains.

La logique de la stratégie

  1. Définissez l'horaire de démarrage et d'arrêt du backtest basé sur la saisie de l'utilisateur.

  2. Initialisez le prix d'arrêt long et court, et les pourcentages de trailing.

  3. Entrez long lorsque le prix dépasse la ligne MA.

  4. Calculer la distance d'arrêt de perte avec ATR et définir le prix d'arrêt.

  5. Alors que le prix continue à augmenter, la trail stop perd vers le haut pour bloquer plus de profits.

  6. Quand le prix atteint le seuil de profit, prenez un profit partiel.

  7. Entrez en short lorsque le prix dépasse la ligne MA.

  8. Calculer la distance d'arrêt de perte avec ATR et définir le prix d'arrêt.

  9. Alors que le prix continue de baisser, la trace stop perd à la baisse pour verrouiller plus de profits.

  10. Quand le prix atteint le seuil de profit, prenez un profit partiel.

Les avantages

  • Le suivi du stop loss peut suivre les tendances et générer plus de profits tout en protégeant les profits.

  • L'ATR stop loss dynamique réagit mieux aux fluctuations du marché que l'ATR stop loss fixe.

  • Les bénéfices partiels permettent d'obtenir des gains et réduisent les risques de retrait.

  • Une logique simple et claire, facile à comprendre et à mettre en œuvre.

Les risques

  • L'inversion soudaine de la tendance peut entraîner une grande perte avec une large distance de stop-loss.

  • Le stop loss basé sur l'ATR peut être trop sensible et être arrêté prématurément.

  • Un taux de prise partielle de bénéfices incorrect peut faire échouer les tendances ou accroître les pertes.

  • Beaucoup de paramètres doivent être optimisés, comme la période ATR, les pourcentages de retard, le ratio de prise de profit.

  • La stratégie repose uniquement sur MA et ATR, de mauvais signaux peuvent se produire.

Optimisation

  • Ajoutez d'autres indicateurs tels que MACD, KD pour filtrer les signaux de trading et éviter les mauvais signaux MA.

  • Considérez les ratios de profit dynamique basés sur la force de la tendance.

  • Testez différentes périodes ATR pour une stabilité optimale ou utilisez d'autres indicateurs pour le stop loss.

  • Introduire l'apprentissage automatique pour optimiser automatiquement les paramètres et les ajuster dynamiquement.

  • Utiliser des modèles d'apprentissage profond pour détecter les tendances et générer des signaux automatiquement.

Résumé

La stratégie intègre un stop loss de suivi, un stop loss ATR dynamique et un profit partiel pour suivre les tendances et contrôler les retraits. Mais elle présente certaines limitations telles que la simple détection de tendances et l'optimisation de paramètres difficiles. Cela donne de bonnes directions pour améliorer davantage la stratégie en utilisant plus de techniques et d'indicateurs pour améliorer la stabilité et la rentabilité.


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

// This source code is subject to the terms of the Mozilla Public License 2.0 at https://mozilla.org/MPL/2.0/
// © felipefs

//@version=4
strategy("Meu Script", overlay=true)
plot(ohlc4)

//Funçao de Datas
testStartYear = input(2018, "Backtest Start Year")
testStartMonth = input(6, "Backtest Start Month")
testStartDay = input(1, "Backtest Start Day")
testPeriodStart = timestamp(testStartYear,testStartMonth,testStartDay,0,0)

testStopYear = input(2019, "Backtest Stop Year")
testStopMonth = input(12, "Backtest Stop Month")
testStopDay = input(30, "Backtest Stop Day")
testPeriodStop = timestamp(testStopYear,testStopMonth,testStopDay,0,0)

testPeriod() => time >= testPeriodStart and time <= testPeriodStop ? true : false

//Funções de Trailing Stop
long_stop_price = 0.0
short_stop_price = 0.0
long_trail_perc = 0
short_trail_perc = 0

long_stop_price := if (strategy.position_size > 0)
    stopValue = close * (1 - long_trail_perc)
    max(stopValue, long_stop_price[1])
else
    0

short_stop_price := if (strategy.position_size < 0)
    stopValue = close * (1 + short_trail_perc)
    min(stopValue, short_stop_price[1])
else
    999999

//Função de Debug
debug(value) =>
    x = bar_index
    y = close
    label.new(x, y, tostring(value))
    
//Take Profit
profit = close * (1 + 0.12)
strategy.entry("Long", true)
strategy.exit("Take Profit 1 Long", from_entry="Long", limit=profit, qty_percent=50.0)
 
//ATR Stop
 
// xATRTrailingStopLong = 0.0
// xATR = atr(nATRPeriod)
// nLossLong = nATRMultipLong * xATR

// if (strategy.position_size > 0)
//     xATRTrailingStopLong := max(nz(xATRTrailingStopLong[1]), close - nLossLong)

Plus de