
Cette stratégie utilise la théorie de l’équilibre pour construire un système de négociation en grille, pour déterminer la tendance du marché à travers une combinaison équilibrée de JMA de différents paramètres, et pour lancer une négociation en grille au point de basculement de la tendance, dans le but de tirer profit de la conversion de la tendance de la longue ligne du marché.
Pour déterminer la tendance du marché, utilisez une combinaison de valeurs JMA de 1 à 20 moyennes périodiques différentes. Lorsque la moyenne à court terme est supérieure à la moyenne à long terme, elle est considérée comme une tendance à la hausse et, au contraire, une tendance à la baisse.
Il est possible d’ouvrir une grille de négociation à un point de basculement de la tendance, c’est-à-dire lorsque la courte moyenne traverse la longue moyenne de haut en bas ou la longue moyenne de bas en haut. Il est possible d’établir progressivement des ordres blancs dans une tendance à la hausse et des ordres multiples dans une tendance à la baisse.
Il est possible de choisir de filtrer la ligne K en fonction de la couleur de l’entité, si elle est activée, acheter uniquement sur la ligne K rouge et vendre sur la ligne K verte, sinon ne pas tenir compte de la couleur de la ligne K et ne négocier que lors d’un renversement de tendance.
La méthode de stop loss consiste à suivre le stop loss ou l’expiration du stop loss. Le stop loss d’expiration signifie que toutes les positions sont liquidées à la fin du cycle de fonctionnement de la stratégie.
L’utilisation d’un système de ligne moyenne pour déterminer la tendance permet de déterminer efficacement le point de basculement de la ligne longue sur le marché.
Les transactions sur grille permettent de tirer profit des chocs de marché en l’absence de tendances claires. Des arrêts de perte peuvent également être configurés pour contrôler les risques.
Les paramètres de la ligne moyenne JMA sont personnalisables, optimisés pour différents cycles et offrent une grande flexibilité.
Il est possible de choisir de filtrer ou non les entités en fonction de la couleur de la ligne K, afin d’éviter d’être induit en erreur par une fausse percée.
Le risque de stop loss est plus élevé dans les marchés très volatiles et sans tendance évidente.
Une erreur de jugement du système de ligne moyenne peut conduire à une erreur de signal de transaction.
Si vous utilisez le filtre K, vous risquez de manquer des opportunités de trading.
Si l’espacement de la grille est trop grand, vous ne pouvez pas obtenir suffisamment de bénéfices; si elle est trop petite, vous avez trop de positions et vous êtes sous pression.
Les paramètres de plus de combinaisons peuvent être testés pour trouver des combinaisons JMA plus adaptées aux différentes variétés.
Le filtre peut être combiné avec d’autres indicateurs, tels que le canal BOLL, le KD, etc., pour améliorer la qualité du signal.
Les paramètres permettant d’optimiser la configuration des transactions de la grille, tels que l’espacement de la grille, le nombre de magasins construits, etc.
D’autres types d’arrêt de perte peuvent être envisagés, tels que l’arrêt de saut, l’arrêt de suivi, etc.
Cette stratégie est basée sur la théorie de la ligne moyenne de la JMA pour déterminer le renversement de tendance et ouvrir la grille de négociation au point de renversement. Les bénéfices de la conversion de la tendance de la ligne longue du marché peuvent être obtenus.
/*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)