Strategi saluran purata bergerak berganda menggunakan beberapa penunjuk purata bergerak untuk menganalisis carta lilin dengan mendalam dan menggali peraturan tersembunyi di sebalik turun naik harga, dengan itu mencapai perdagangan arbitraj berisiko rendah.
Strategi ini menumpuk pelbagai metrik EMA di atas Bollinger Bands untuk membina saluran harga dan menemui corak dalam turun naik harga.
Atas asas ini, peluang pembalikan dikenal pasti melalui pengenalan corak untuk merumuskan strategi arbitrase.
Kelebihan strategi ini termasuk:
Risiko berpotensi strategi ini juga wujud:
Arah pengoptimuman utama termasuk:
Strategi saluran purata bergerak berganda menggali secara mendalam keteraturan pergerakan harga dengan kestabilan dan kecekapan, layak untuk aplikasi jangka panjang dan pengoptimuman berterusan.
/*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) ///////////////////////////////////////////////////////////////////////////////////////////