Stratégie de négociation en grille basée sur le système des moyennes mobiles

Auteur:ChaoZhang est là., Date: 2024-01-03 17h18 et 22h
Les étiquettes:

img

Résumé

Cette stratégie utilise la théorie des moyennes mobiles pour construire un système de négociation de grille en jugeant la tendance du marché à travers plusieurs ensembles de moyennes mobiles JMA avec différents paramètres.

La logique de la stratégie

  1. Utilisez une combinaison de moyennes mobiles JMA de 1 à 20 périodes pour déterminer la tendance du marché.

  2. Ouvrir les transactions sur la grille à des points de renversement de tendance, lorsque la courte MA traverse en dessous ou au-dessus de la longue MA.

  3. Une option pour filtrer en fonction de la couleur du chandelier - acheter uniquement sur les bougies rouges et vendre sur les bougies vertes, sinon ignorer la couleur et négocier uniquement à l'inversion de tendance.

  4. Les sorties sont soit des sorties de stop loss de suivi, soit des sorties basées sur le temps lorsque la durée de la stratégie prend fin.

Analyse des avantages

  1. L'utilisation du système MA pour déterminer les tendances permet d'identifier efficacement les renversements de tendance à long terme.

  2. Le trading par réseau peut capturer des bénéfices sur des marchés à plage sans tendance claire, avec un stop loss pour contrôler les risques.

  3. Paramètres JMA personnalisables, peuvent être optimisés pour différentes périodes, grande flexibilité.

  4. Le filtre à bougies évite d'être induit en erreur par de fausses éruptions.

Analyse des risques

  1. Les marchés à taux élevé sans tendance claire présentent des risques d'arrêt plus élevés.

  2. Les erreurs de jugement du système d'AM peuvent entraîner des signaux de négociation incorrects.

  3. Le filtre à bougies risque de manquer certaines opportunités commerciales.

  4. Si l'espacement de la grille est trop large, les bénéfices sont insuffisants; trop étroit peut entraîner trop de positions et des coûts élevés.

Directions d'optimisation

  1. Tester plus de combinaisons de paramètres pour trouver des combinaisons optimales de JMA MA pour différents produits.

  2. Incorporer d'autres filtres comme les bandes BOLL, KD, etc. pour améliorer la qualité du signal.

  3. Optimiser les configurations de grille comme l'espacement de grille, les lots d'entrée, etc.

  4. Considérez d'autres méthodes de stop loss comme les stop basés sur les écarts, les trailing stops, etc.

Conclusion

Cette stratégie juge les retours en arrière en utilisant la théorie de la JMA et ouvre des transactions de grille à des points tournants pour capturer les bénéfices des changements de tendance à long terme.


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

//Noro
//2019

//@version=3
strategy(title = "Noro's Fishnet Strategy", shorttitle = "Fishnet str", overlay = true, default_qty_type = strategy.percent_of_equity, default_qty_value = 100, pyramiding = 0)

//Settings
needlong = input(true, defval = true, title = "Long")
needshort = input(true, defval = true, title = "Short")
capital = input(100, defval = 100, minval = 1, maxval = 10000, title = "Lot")
usecf = input(false, defval = false, title = "Use Color-filter")
fromyear = input(1900, defval = 1900, minval = 1900, maxval = 2100, title = "From Year")
toyear = input(2100, defval = 2100, minval = 1900, maxval = 2100, title = "To Year")
frommonth = input(01, defval = 01, minval = 01, maxval = 12, title = "From Month")
tomonth = input(12, defval = 12, minval = 01, maxval = 12, title = "To Month")
fromday = input(01, defval = 01, minval = 01, maxval = 31, title = "From day")
today = input(31, defval = 31, minval = 01, maxval = 31, title = "To day")

//JMA
jmax(src, len) =>
    beta = 0.45*(len-1)/(0.45*(len-1)+2)
    alpha = pow(beta, 3)
    L0=0.0, L1=0.0, L2=0.0, L3=0.0, L4=0.0
    L0 := (1-alpha)*src + alpha*nz(L0[1])
    L1 := (src - L0[0])*(1-beta) + beta*nz(L1[1])
    L2 := L0[0] + L1[0]
    L3 := (L2[0] - nz(L4[1]))*((1-alpha)*(1-alpha)) + (alpha*alpha)*nz(L3[1])
    L4 := nz(L4[1]) + L3[0]
	L4

ma01 = jmax(close, 10)
ma02 = jmax(close, 20)
ma03 = jmax(close, 30)
ma04 = jmax(close, 40)
ma05 = jmax(close, 50)
ma06 = jmax(close, 60)
ma07 = jmax(close, 70)
ma08 = jmax(close, 80)
ma09 = jmax(close, 90)
ma10 = jmax(close, 100)
ma11 = jmax(close, 110)
ma12 = jmax(close, 120)
ma13 = jmax(close, 130)
ma14 = jmax(close, 140)
ma15 = jmax(close, 150)
ma16 = jmax(close, 160)
ma17 = jmax(close, 170)
ma18 = jmax(close, 180)
ma19 = jmax(close, 190)
ma20 = jmax(close, 200)

trend = 0
trend := ma01 > ma20 ? 1 : ma01 < ma20 ? -1 : trend[1]
col = trend == 1 ? #00FF7F : #DC143C

plot(ma01, transp = 0, color = col)
plot(ma02, transp = 0, color = col)
plot(ma03, transp = 0, color = col)
plot(ma04, transp = 0, color = col)
plot(ma05, transp = 0, color = col)
plot(ma06, transp = 0, color = col)
plot(ma07, transp = 0, color = col)
plot(ma08, transp = 0, color = col)
plot(ma09, transp = 0, color = col)
plot(ma10, transp = 0, color = col)
plot(ma11, transp = 0, color = col)
plot(ma12, transp = 0, color = col)
plot(ma13, transp = 0, color = col)
plot(ma14, transp = 0, color = col)
plot(ma15, transp = 0, color = col)
plot(ma16, transp = 0, color = col)
plot(ma17, transp = 0, color = col)
plot(ma18, transp = 0, color = col)
plot(ma19, transp = 0, color = col)
plot(ma20, transp = 0, color = col)

//Trading
lot = 0.0
lot := strategy.equity / close * capital / 100

if trend == 1 and (close < open or usecf == false)
    strategy.entry("Long", strategy.long, needlong ? lot : na)

if trend == -1 and (close > open or usecf == false)
    strategy.entry("Short", strategy.short, needshort ? lot : na)
    

Plus de