Die dreifache gleitende Durchschnittskanalstrategie nutzt mehrere gleitende Durchschnittsindikatoren, um das Kerzendiagramm tief zu analysieren und versteckte Regeln hinter Preisschwankungen aufzudecken, wodurch ein risikoarmer Arbitragehandel erzielt wird.
Diese Strategie stapelt mehrere EMA-Metriken auf Bollinger Bands, um Preiskanäle aufzubauen und Muster in der Preisvolatilität zu entdecken.
Auf dieser Grundlage werden durch Mustererkennung Umkehrmöglichkeiten ermittelt, um Arbitragestrategien zu formulieren.
Zu den Vorteilen dieser Strategie gehören:
Potenzielle Risiken dieser Strategie bestehen auch:
Zu den wichtigsten Optimierungsrichtungen gehören:
Die dreifache gleitende Durchschnittskanalstrategie untergräbt die Regelmäßigkeit der Kursbewegung mit Stabilität und Effizienz, die langfristiger Anwendung und kontinuierlicher Optimierung würdig ist.
/*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) ///////////////////////////////////////////////////////////////////////////////////////////