Auteur:ChaoZhang est là., Date: 23 janvier 2024
Les étiquettes:

img

Résumé

Cette stratégie est une stratégie de trading automatisée basée sur le double croisement de la moyenne mobile de l'indicateur technique MACD.

La logique de la stratégie

La stratégie utilise cette logique pour aller long sur les croix dorées et position proche sur les croix de mort; ou aller court sur les croix de mort et position proche sur les croix d'or pour suivre automatiquement la tendance.

Les avantages de la stratégie

  • Utilise le double croisement de la moyenne mobile pour déterminer avec précision la direction de la tendance et capturer l'inversion de tendance
  • L'indicateur technique MACD réduit les faux signaux et améliore la qualité des signaux
  • Flexibilité pour aller long ou court ou uniquement long/courte
  • Paramètres réglables adaptés à différents environnements de marché

Risques liés à la stratégie

  • Le double croisement des moyennes mobiles a un effet de retard, peut manquer des bénéfices partiels au début des retours.
  • Indicateur MACD sujet à de faux signaux lors d'une consolidation du marché
  • Les paramètres doivent être ajustés correctement pour éviter une sensibilité excessive ou inerte

Réduction des risques:

  • Combiner avec d'autres indicateurs pour filtrer les signaux
  • Régler les paramètres à une fréquence de négociation inférieure
  • N'adoptez la stratégie que lorsque la tendance est évidente

Les domaines d'amélioration

La stratégie peut être améliorée par les aspects suivants:

  1. Incorporer d'autres indicateurs tels que KDJ, Bollinger Bands, etc. pour confirmer les signaux et filtrer les faux signaux

  2. Améliorer le mécanisme d'entrée, par exemple ajouter un filtre de rupture pour éviter les entrées prématurées ou tardives

  3. Ajouter un stop loss pour contrôler les pertes de transaction unique

  4. Élargir à d'autres produits comme le forex, crypto-monnaies etc

Résumé


/*backtest
start: 2023-01-16 00:00:00
end: 2024-01-22 00:00:00
period: 1d
basePeriod: 1h
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/
// © DeMindSET

//@version=4
strategy("MACD Trend Follow Strategy", overlay=false)
// Getting inputs
LSB = input(title="Long/Short", defval="Long only", options=["Long only", "Short only" , "Both"]) 
fast_length = input(title="Fast Length", type=input.integer, defval=12)
slow_length = input(title="Slow Length", type=input.integer, defval=26)
src = input(title="Source", type=input.source, defval=close)
signal_length = input(title="Signal Smoothing", type=input.integer, minval = 1, maxval = 50, defval = 9)
sma_source = input(title="Simple MA(Oscillator)", type=input.bool, defval=false)
sma_signal = input(title="Simple MA(Signal Line)", type=input.bool, defval=false)

// Plot colors
col_grow_above = #26A69A
col_grow_below = #FFCDD2
col_fall_above = #B2DFDB
col_fall_below = #EF5350
col_macd = #0094ff
col_signal = #ff6a00

// Calculating
fast_ma = sma_source ? sma(src, fast_length) : ema(src, fast_length)
slow_ma = sma_source ? sma(src, slow_length) : ema(src, slow_length)
macd = fast_ma - slow_ma
signal = sma_signal ? sma(macd, signal_length) : ema(macd, signal_length)
hist = macd - signal

plot(hist, title="Histogram", style=plot.style_columns, color=(hist>=0 ? (hist[1] < hist ? col_grow_above : col_fall_above) : (hist[1] < hist ? col_grow_below : col_fall_below) ), transp=0 )
plot(macd, title="MACD", color=col_macd, transp=0)
plot(signal, title="Signal", color=col_signal, transp=0)
//
Bull= macd > signal
Bear= macd < signal
ConBull=macd>0
ConBear=macd<0
//
Green= Bull and ConBull
Red= Bear and ConBear
Yellow= Bull and ConBear
Blue= Bear and ConBull
//
bcolor = Green ? color.green : Red ? color.red : Yellow ? color.yellow : Blue ? color.blue : na
barcolor(color=bcolor)
// === INPUT BACKTEST RANGE ===
FromYear  = input(defval = 2019, title = "From Year", minval = 1920)
FromMonth = input(defval = 1, title = "From Month", minval = 1, maxval = 12)
FromDay   = input(defval = 1, title = "From Day", minval = 1, maxval = 31)
ToYear    = input(defval = 9999, title = "To Year", minval = 2009)
ToMonth   = input(defval = 12, title = "To Month", minval = 1, maxval = 12)
ToDay     = input(defval = 31, title = "To Day", minval = 1, maxval = 31)

// === FUNCTION EXAMPLE ===
start     = timestamp(FromYear, FromMonth, FromDay, 00, 00)  // backtest start window
finish    = timestamp(ToYear, ToMonth, ToDay, 23, 59)        // backtest finish window
window()  => true // create function "within window of time"

if LSB == "Long only" and Green
    strategy.entry("L",true)
if LSB == "Long only" and Red
    strategy.close("L",qty_percent=100,comment="TP Long")
if LSB == "Both" and Green
    strategy.entry("L",true)
if LSB == "Both" and Red
    strategy.entry("S",false)
if LSB == "Short only" and Red
    strategy.entry("S",false)
if LSB == "Short only" and Green
    strategy.close("S",qty_percent=100,comment="TP Short")


Plus de