Les ressources ont été chargées... Je charge...

La valeur de l'émission de l'émission de l'émission de l'émission de l'émission de l'émission de l'émission de l'émission

Auteur:ChaoZhang est là., Date: 2024-11-29 14:56:43
Les étiquettes:SMAATRTPSLHTF

img

Résumé

Cette stratégie combine le suivi classique de la tendance de la moyenne mobile double avec la gestion dynamique des risques basée sur ATR. Elle offre deux modes de trading: un mode de base utilisant des croisements simples de la moyenne mobile pour le suivi de la tendance, et un mode avancé incorporant un filtrage de tendance à plus long terme et des mécanismes de stop-loss dynamiques basés sur ATR. Les traders peuvent basculer entre les modes via un menu déroulant simple, répondant à la fois aux besoins des débutants et aux besoins des traders expérimentés en matière de gestion des risques.

Principes de stratégie

La stratégie 1 (mode de base) utilise un système de moyenne mobile double de 21 et 49 jours, générant des signaux longs lorsque le MA rapide dépasse le MA lent. Les objectifs de profit peuvent être définis en pourcentage ou en points, avec un arrêt de trailing optionnel pour verrouiller les bénéfices.

Les avantages de la stratégie

  1. Stratégie hautement adaptable qui peut s'adapter à l'expérience des opérateurs et aux conditions du marché
  2. L'analyse multi-temps en mode avancé améliore la qualité du signal
  3. Les arrêts dynamiques basés sur ATR s'adaptent à la volatilité variable du marché
  4. Les soldes de prise de bénéfices partiels protègent les bénéfices avec une poursuite de la tendance
  5. Configuration flexible des paramètres pour les différentes caractéristiques du marché

Risques stratégiques

  1. Le système de double MA peut générer de fréquents faux signaux sur des marchés variés
  2. Le filtrage des tendances peut entraîner un retard du signal, ce qui fait manquer certaines opportunités de négociation.
  3. Les arrêts ATR peuvent ne pas s'adapter assez rapidement aux pics de volatilité
  4. La prise partielle de bénéfices pourrait réduire trop tôt la taille de la position en cas de forte tendance

Directions d'optimisation de la stratégie

  1. Ajouter des indicateurs de volume et de volatilité pour filtrer les faux signaux
  2. Envisager de mettre en œuvre une adaptation dynamique des paramètres en fonction des conditions du marché
  3. Optimiser la période de calcul de l'ATR pour équilibrer la sensibilité et la stabilité
  4. Ajout de module de reconnaissance de l'état du marché pour la sélection automatique du mode de stratégie
  5. Introduire plus d'options de stop-loss comme les stops de trailing et les sorties basées sur le temps

Résumé

Il s'agit d'un système de trading bien conçu et complet. La combinaison de deux moyennes mobiles suivant la tendance et de la gestion des risques basée sur l'ATR garantit à la fois la fiabilité et un contrôle efficace des risques. La conception en double mode répond aux besoins de différents niveaux de traders, tandis que les paramètres riches offrent de nombreuses opportunités d'optimisation. Les traders sont invités à commencer par des paramètres conservateurs dans le trading en direct et à optimiser progressivement pour de meilleurs résultats.


/*backtest
start: 2019-12-23 08:00:00
end: 2024-11-27 08:00:00
period: 1d
basePeriod: 1d
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

// This Pine Script™ code is subject to the terms of the Mozilla Public License 2.0 at https://mozilla.org/MPL/2.0/
// © shaashish1

//@version=5
strategy("Dual Strategy Selector V2 - Cryptogyani", overlay=true, pyramiding=0, 
         default_qty_type=strategy.percent_of_equity, default_qty_value=100, initial_capital=100000)

//#region STRATEGY SELECTION
strategyOptions = input.string(title="Select Strategy", defval="Strategy 1", options=["Strategy 1", "Strategy 2"], group="Strategy Selection")
//#endregion STRATEGY SELECTION

// ####################### STRATEGY 1: Original Logic ########################
//#region STRATEGY 1 INPUTS
s1_fastMALen = input.int(defval=21, title="Fast SMA Length (S1)", minval=1, group="Strategy 1 Settings", inline="S1 MA")
s1_slowMALen = input.int(defval=49, title="Slow SMA Length (S1)", minval=1, group="Strategy 1 Settings", inline="S1 MA")
s1_takeProfitMode = input.string(defval="Percentage", title="Take Profit Mode (S1)", options=["Percentage", "Pips"], group="Strategy 1 Settings")
s1_takeProfitPerc = input.float(defval=7.0, title="Take Profit % (S1)", minval=0.05, step=0.05, group="Strategy 1 Settings") / 100
s1_takeProfitPips = input.float(defval=50, title="Take Profit Pips (S1)", minval=1, step=1, group="Strategy 1 Settings")
s1_trailingTakeProfitEnabled = input.bool(defval=false, title="Enable Trailing (S1)", group="Strategy 1 Settings")
//#endregion STRATEGY 1 INPUTS

// ####################### STRATEGY 2: Enhanced with Recommendations ########################
//#region STRATEGY 2 INPUTS
s2_fastMALen = input.int(defval=20, title="Fast SMA Length (S2)", minval=1, group="Strategy 2 Settings", inline="S2 MA")
s2_slowMALen = input.int(defval=50, title="Slow SMA Length (S2)", minval=1, group="Strategy 2 Settings", inline="S2 MA")
s2_atrLength = input.int(defval=14, title="ATR Length (S2)", group="Strategy 2 Settings", inline="ATR")
s2_atrMultiplier = input.float(defval=1.5, title="ATR Multiplier for Stop-Loss (S2)", group="Strategy 2 Settings", inline="ATR")
s2_partialTakeProfitPerc = input.float(defval=50.0, title="Partial Take Profit % (S2)", minval=10, maxval=100, step=10, group="Strategy 2 Settings")
s2_timeframeTrend = input.timeframe(defval="1D", title="Higher Timeframe for Trend Filter (S2)", group="Strategy 2 Settings")
//#endregion STRATEGY 2 INPUTS

// ####################### GLOBAL VARIABLES ########################
var float takeProfitPrice = na
var float stopLossPrice = na
var float trailingStopPrice = na
var float fastMA = na
var float slowMA = na
var float higherTimeframeTrendMA = na
var bool validOpenLongPosition = false

// Precalculate higher timeframe values (global scope for Strategy 2)
higherTimeframeTrendMA := request.security(syminfo.tickerid, s2_timeframeTrend, ta.sma(close, s2_slowMALen))

// ####################### LOGIC ########################
if (strategyOptions == "Strategy 1")
    // Strategy 1 Logic (Original Logic Preserved)
    fastMA := ta.sma(close, s1_fastMALen)
    slowMA := ta.sma(close, s1_slowMALen)
    openLongPosition = ta.crossover(fastMA, slowMA)
    validOpenLongPosition := openLongPosition and strategy.opentrades.size(strategy.opentrades - 1) == 0
    
    // Take Profit Price
    takeProfitPrice := if (s1_takeProfitMode == "Percentage")
        close * (1 + s1_takeProfitPerc)
    else
        close + (s1_takeProfitPips * syminfo.mintick)

    // Trailing Stop Price (if enabled)
    if (strategy.position_size > 0 and s1_trailingTakeProfitEnabled)
        trailingStopPrice := high - (s1_takeProfitPips * syminfo.mintick)
    else
        trailingStopPrice := na

else if (strategyOptions == "Strategy 2")
    // Strategy 2 Logic with Recommendations
    fastMA := ta.sma(close, s2_fastMALen)
    slowMA := ta.sma(close, s2_slowMALen)
    openLongPosition = ta.crossover(fastMA, slowMA) and close > higherTimeframeTrendMA
    validOpenLongPosition := openLongPosition and strategy.opentrades.size(strategy.opentrades - 1) == 0

    // ATR-Based Stop-Loss
    atr = ta.atr(s2_atrLength)
    stopLossPrice := close - (atr * s2_atrMultiplier)

    // Partial Take Profit Logic
    takeProfitPrice := close * (1 + (s2_partialTakeProfitPerc / 100))
//#endregion STRATEGY LOGIC

// ####################### PLOTTING ########################
plot(series=fastMA, title="Fast SMA", color=color.yellow, linewidth=1)
plot(series=slowMA, title="Slow SMA", color=color.orange, linewidth=1)
plot(series=takeProfitPrice, title="Take Profit Price", color=color.teal, linewidth=1, style=plot.style_linebr)

// Trailing Stop and ATR Stop-Loss Plots (Global Scope)
plot(series=(strategyOptions == "Strategy 1" and s1_trailingTakeProfitEnabled) ? trailingStopPrice : na, title="Trailing Stop", color=color.red, linewidth=1, style=plot.style_linebr)
plot(series=(strategyOptions == "Strategy 2") ? stopLossPrice : na, title="ATR Stop-Loss", color=color.red, linewidth=1, style=plot.style_linebr)
//#endregion PLOTTING

// ####################### POSITION ORDERS ########################
//#region POSITION ORDERS
if (validOpenLongPosition)
    strategy.entry(id="Long Entry", direction=strategy.long)

if (strategyOptions == "Strategy 1")
    if (strategy.position_size > 0)
        if (s1_trailingTakeProfitEnabled)
            strategy.exit(id="Trailing Take Profit", from_entry="Long Entry", stop=trailingStopPrice)
        else
            strategy.exit(id="Take Profit", from_entry="Long Entry", limit=takeProfitPrice)

else if (strategyOptions == "Strategy 2")
    if (strategy.position_size > 0)
        strategy.exit(id="Partial Take Profit", from_entry="Long Entry", qty_percent=s2_partialTakeProfitPerc, limit=takeProfitPrice)
        strategy.exit(id="Stop Loss", from_entry="Long Entry", stop=stopLossPrice)
//#endregion POSITION ORDERS


Relationnée

Plus de