La stratégie de canal de moyenne mobile triple pour extraire patiemment des informations précieuses des lignes de chandeliers

Auteur:ChaoZhang est là., Date: 2024-02-01 11:12:47 Je vous en prie.
Les étiquettes:

img

Résumé

La stratégie de canal de moyenne mobile triple utilise plusieurs indicateurs de moyenne mobile pour analyser en profondeur le graphique des bougies et découvrir les règles cachées derrière les fluctuations de prix, ce qui permet d'obtenir un trading d'arbitrage à faible risque.

Principaux

Cette stratégie empile plusieurs métriques de l'EMA au-dessus des bandes de Bollinger pour construire des canaux de prix et découvrir des modèles de volatilité des prix.

  1. L'indicateur BodyResistanceChannel est utilisé pour tracer les niveaux de résistance du corps de la bougie.
  2. L'indicateur Support/Resistance est utilisé pour tracer des niveaux de support et de résistance sur plusieurs jours.
  3. Le double système EMA aide à déterminer la direction de la tendance.
  4. L'indicateur Hull MA aplatit la courbe des prix.

Sur cette base, les opportunités d'inversion sont identifiées par la reconnaissance de modèles pour formuler des stratégies d'arbitrage.

Les avantages

Les avantages de cette stratégie sont les suivants:

  1. L'établissement de canaux de prix avec plusieurs EMAS permet de déterminer clairement l'évolution des prix.
  2. L'indicateur Hull MA permet d'équilibrer efficacement les écarts de prix.
  3. La combinaison de modèles d'inversion et d'indicateurs de canal permet une négociation à forte probabilité et à faible risque.
  4. La construction d'un système d'indicateurs multicouches assure des signaux de négociation stables et fiables.

Analyse des risques

Il existe également des risques potentiels liés à cette stratégie:

  1. La solution consiste à adopter un stop loss mobile pour réduire les pertes par transaction.
  2. Le risque de signaux erronés lorsque la reconnaissance des modèles d'inversion se trompe.
  3. Le risque de détérioration de la qualité du signal lorsque les paramètres de l'indicateur ne correspondent pas.

Directions d'optimisation

Les principales orientations d'optimisation sont les suivantes:

  1. Optimiser les combinaisons de paramètres de la période EMA pour mieux s'adapter aux conditions du marché.
  2. Ajustez les niveaux de stop loss pour maximiser le rendement par transaction tout en minimisant le risque de perte par transaction.
  3. Mettre en place un module dynamique de dimensionnement des positions basé sur la volatilité pour gérer efficacement les risques.
  4. Utiliser des technologies d'apprentissage en profondeur pour découvrir davantage de modèles de prix et améliorer la qualité du signal.

Conclusion

La stratégie de canal de moyenne mobile triple mine profondément la régularité du mouvement des prix avec stabilité et efficacité, digne d'une application à long terme et d'une optimisation continue.


/*backtest
start: 2023-01-25 00:00:00
end: 2024-01-31 00:00:00
period: 1d
basePeriod: 1h
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=3
//╭╮╱╱╭╮╭╮╱╱╭╮
//┃╰╮╭╯┃┃┃╱╱┃┃
//╰╮┃┃╭┻╯┣╮╭┫╰━┳╮╭┳━━╮
//╱┃╰╯┃╭╮┃┃┃┃╭╮┃┃┃┃━━┫
//╱╰╮╭┫╰╯┃╰╯┃╰╯┃╰╯┣━━┃
//╱╱╰╯╰━━┻━━┻━━┻━━┻━━╯
//╭━━━┳╮╱╱╱╱╱╱╱╭╮
//┃╭━╮┃┃╱╱╱╱╱╱╱┃┃
//┃┃╱╰┫╰━┳━━┳━╮╭━╮╭━━┫┃
//┃┃╱╭┫╭╮┃╭╮┃╭╮┫╭╮┫┃━┫┃
//┃╰━╯┃┃┃┃╭╮┃┃┃┃┃┃┃┃━┫╰╮
//╰━━━┻╯╰┻╯╰┻╯╰┻╯╰┻━━┻━╯
//━╯
// http://www.vdubus.co.uk/
strategy(title='Vdub FX SniperVX3 / Strategy  v3', shorttitle='Vdub_FX_SniperVX3_Strategy', overlay=true, pyramiding=0, initial_capital=1000, currency=currency.USD)

//Candle body resistance Channel-----------------------------//
len = 34
src = input(close, title="Candle body resistance Channel")
out = sma(src, len)
last8h = highest(close, 13)
lastl8 = lowest(close, 13)
bearish = cross(close,out) == 1 and falling(close, 1)
bullish = cross(close,out) == 1 and rising(close, 1)
channel2=input(false, title="Bar Channel On/Off")
ul2=plot(channel2?last8h:last8h==nz(last8h[1])?last8h:na, color=black, linewidth=1, style=linebr, title="Candle body resistance level top", offset=0)
ll2=plot(channel2?lastl8:lastl8==nz(lastl8[1])?lastl8:na, color=black, linewidth=1, style=linebr, title="Candle body resistance level bottom", offset=0)
//fill(ul2, ll2, color=black, transp=95, title="Candle body resistance Channel")

//-----------------Support and Resistance 
RST = input(title='Support / Resistance length:', defval=10) 
RSTT = valuewhen(high >= highest(high, RST), high, 0)
RSTB = valuewhen(low <= lowest(low, RST), low, 0)
RT2 = plot(RSTT, color=RSTT != RSTT[1] ? na : red, linewidth=1, offset=+0)
RB2 = plot(RSTB, color=RSTB != RSTB[1] ? na : green, linewidth=1, offset=0)

//--------------------Trend colour ema------------------------------------------------// 
src0 = close, len0 = input(13, minval=1, title="EMA 1")
ema0 = ema(src0, len0)
direction = rising(ema0, 2) ? +1 : falling(ema0, 2) ? -1 : 0
plot_color = direction > 0  ? lime: direction < 0 ? red : na
plot(ema0, title="EMA", style=line, linewidth=1, color = plot_color)

//-------------------- ema 2------------------------------------------------//
src02 = close, len02 = input(21, minval=1, title="EMA 2")
ema02 = ema(src02, len02)
direction2 = rising(ema02, 2) ? +1 : falling(ema02, 2) ? -1 : 0
plot_color2 = direction2 > 0  ? lime: direction2 < 0 ? red : na
plot(ema02, title="EMA Signal 2", style=line, linewidth=1, color = plot_color2)

//=============Hull MA//
show_hma = input(false, title="Display Hull MA Set:")
hma_src = input(close, title="Hull MA's Source:")
hma_base_length = input(8, minval=1, title="Hull MA's Base Length:")
hma_length_scalar = input(5, minval=0, title="Hull MA's Length Scalar:")
hullma(src, length)=>wma(2*wma(src, length/2)-wma(src, length), round(sqrt(length)))
plot(not show_hma ? na : hullma(hma_src, hma_base_length+hma_length_scalar*6), color=black, linewidth=2, title="Hull MA")

//============ signal Generator ==================================//
Piriod=input('720')
ch1 = request.security(syminfo.tickerid, Piriod, open)
ch2 = request.security(syminfo.tickerid, Piriod, close)
longCondition = crossover(request.security(syminfo.tickerid, Piriod, close),request.security(syminfo.tickerid, Piriod, open))
if (longCondition)
    strategy.entry("BUY", strategy.long)
shortCondition = crossunder(request.security(syminfo.tickerid, Piriod, close),request.security(syminfo.tickerid, Piriod, open))
if (shortCondition)
    strategy.entry("SELL", strategy.short)

///////////////////////////////////////////////////////////////////////////////////////////

Plus de