La stratégie de négociation d'une moyenne mobile adaptative est une méthode de négociation quantitative basée sur la moyenne mobile Hull (HMA). Cette stratégie génère des signaux d'achat et de vente en utilisant des croisements de prix avec la HMA, tout en mettant en œuvre des niveaux fixes d'arrêt-perte et de prise de profit pour gérer le risque et la récompense.
Le noyau de cette stratégie est l'utilisation de la moyenne mobile Hull (HMA) comme indicateur principal.
La stratégie suit les positions ouvertes pour s'assurer qu'aucune nouvelle position n'est ouverte pendant qu'une position existante est active.
La stratégie de négociation d'une moyenne mobile adaptative est une méthode de négociation quantitative simple mais efficace. En tirant parti des avantages de la moyenne mobile Hull, cette stratégie peut capturer les tendances du marché tout en protégeant le capital grâce à des mesures de gestion des risques fixes. Bien que la stratégie comporte certains risques potentiels, elle peut être améliorée et adaptée grâce à une optimisation continue.
/*backtest start: 2024-01-01 00:00:00 end: 2024-03-23 00:00:00 period: 1d basePeriod: 1d exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}] */ //@version=5 strategy("SHIESTD", overlay=true) // Function to calculate Hull Moving Average (HMA) hma(src, length) => wma1 = ta.wma(src, length) wma2 = ta.wma(src, length / 2) hma = ta.wma(2 * wma2 - wma1, math.round(math.sqrt(length))) hma // Parameters hma_length = 104 // Calculate Hull Moving Average hma_value = hma(close, hma_length) // Plot HMA plot(hma_value, title="104-period Hull Moving Average", color=color.blue, linewidth=2) // Define SL and TP values in dollars long_sl_amount = 1.25 long_tp_amount = 37.5 short_sl_amount = 1.25 short_tp_amount = 37.5 // Number of contracts contracts = 2 // Function to calculate SL and TP prices based on entry price and dollar amounts long_sl_price(entry_price) => entry_price - long_sl_amount long_tp_price(entry_price) => entry_price + long_tp_amount short_sl_price(entry_price) => entry_price + short_sl_amount short_tp_price(entry_price) => entry_price - short_tp_amount // Trading conditions price_intersects_hma = ta.crossover(close, hma_value) or ta.crossunder(close, hma_value) // Long and Short Conditions based on price intersecting HMA long_condition = ta.crossover(close, hma_value) short_condition = ta.crossunder(close, hma_value) // Track open positions var bool long_open = false var bool short_open = false // Handle Long Positions if (long_condition and not long_open) entry_price = close strategy.entry("Long", strategy.long, qty=contracts) strategy.exit("Exit Long", from_entry="Long", stop=long_sl_price(entry_price), limit=long_tp_price(entry_price)) long_open := true // Handle Short Positions if (short_condition and not short_open) entry_price = close strategy.entry("Short", strategy.short, qty=contracts) strategy.exit("Exit Short", from_entry="Short", stop=short_sl_price(entry_price), limit=short_tp_price(entry_price)) short_open := true // Reset flags when the position is closed if (strategy.opentrades == 0) long_open := false short_open := false