Stratégie de négociation croisée des moyennes mobiles optimisée par Golden Cross

Auteur:ChaoZhang est là., Date: 2023-12-19 13:37:33
Les étiquettes:

img

Résumé

Cette stratégie optimise la stratégie de croisement de la moyenne mobile conventionnelle en définissant trois moyennes mobiles avec des périodes différentes, en construisant un modèle de croix dorée avec des moyennes mobiles de 9 périodes, 50 périodes et 100 périodes. Elle génère des signaux d'achat lorsque le MA à court terme franchit le niveau de la moyenne moyenne tandis que le MA à long terme est en hausse.

La logique de la stratégie

La stratégie utilise trois moyennes mobiles avec des périodes de 9, 50 et 100. La MA à 9 périodes est la MA à court terme, la MA à 50 périodes est la MA à moyen terme et la MA à 100 périodes est la MA à long terme. Les signaux de trading sont générés par le croisement entre la MA à court terme et la MA à moyen terme.

Analyse des avantages

Comparée à la stratégie de croisement des moyennes mobiles doubles classiques, cette stratégie ajoute la condition de juger des tendances à moyen et long terme avant de générer des signaux de trading, ce qui peut filtrer efficacement certains signaux invalides. Lorsque les tendances à long terme ne sont pas claires, la stratégie ne générera pas de signaux, évitant ainsi d'être piégée dans la consolidation.

Analyse des risques

Lors de la définition des paramètres de cette stratégie, la combinaison des périodes moyennes mobiles doit être ajustée. Différentes combinaisons de périodes auront un impact sur l'efficacité de la stratégie. Si les paramètres de la période ne sont pas correctement définis, il y a un risque de générer trop de faux signaux. En outre, les traders doivent être conscients des risques systémiques potentiels et arrêter les pertes en temps opportun pour atténuer les risques.

Directions d'optimisation

Envisager d'intégrer d'autres indicateurs pour aider à juger des tendances du marché, tels que le MACD, le BOLL, etc., et fixer des conditions d'entrée plus strictes, ou intégrer des indicateurs de volatilité pour construire des moyennes mobiles adaptatives afin que les paramètres puissent être ajustés automatiquement en fonction des conditions du marché afin d'optimiser davantage la stratégie.

Conclusion

Cette stratégie est basée sur le croisement de la moyenne mobile double conventionnelle et ajoute des conditions de filtrage et de jugement à long terme, ce qui peut filtrer efficacement les faux signaux et est adapté pour capturer les mouvements de tendance à court et à moyen terme.


/*backtest
start: 2022-12-12 00:00:00
end: 2023-12-18 00:00:00
period: 1d
basePeriod: 1h
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=4
strategy("Golden Cross, SMA 100, Moving Average Strategy (by Coinrule)", shorttitle="Golden_Cross_Strat_MA100_optimized", overlay=true, initial_capital = 1000,process_orders_on_close=true, default_qty_type = strategy.percent_of_equity, default_qty_value = 100)

// Input
switch1=input(true, title="Enable Bar Color?")
switch2=input(false, title="Show Fast Moving Average")
switch3=input(true, title="Show Slow Moving Average")

//Calculate Moving Averages
movingaverage_fast = sma(close, input(9))
movingaverage_slow = sma(close, input(100))
movingaverage_normal= sma(close, input(50))

//Backtest dates
fromMonth = input(defval = 1,    title = "From Month",      type = input.integer, minval = 1, maxval = 12)
fromDay   = input(defval = 1,    title = "From Day",        type = input.integer, minval = 1, maxval = 31)
fromYear  = input(defval = 2020, 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"


// Calculation
bullish_cross = crossover(movingaverage_fast, movingaverage_normal)
bearish_cross = crossunder(movingaverage_fast, movingaverage_normal)

//Entry and Exit
if bullish_cross and window() and movingaverage_slow > movingaverage_normal
    strategy.entry("long", strategy.long)

strategy.close("long", when = bearish_cross and window())

// Colors
bartrendcolor = close > movingaverage_fast and close > movingaverage_slow and change(movingaverage_slow) > 0 ? color.green : close < movingaverage_fast and close < movingaverage_slow and change(movingaverage_slow) < 0 ? color.red : color.blue
barcolor(switch1?bartrendcolor:na)

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

bgcolor(color = showDate and window() ? color.gray : na, transp = 90)

Plus de