Strategi Double Gap adalah strategi kuantitatif yang digunakan untuk perdagangan jangka pendek Bitcoin dan emas. Ia menggabungkan purata bergerak, Bollinger Bands dan ATR berhenti untuk mengenal pasti isyarat pecah dan menguruskan risiko.
Strategi Double Gap menggunakan EMA pantas dan EMA perlahan untuk menentukan arah trend. Isyarat beli dihasilkan apabila EMA pantas melintasi di atas EMA perlahan, dan isyarat jual dihasilkan apabila EMA pantas melintasi di bawah EMA perlahan.
Secara khusus, untuk menentukan isyarat beli, kedua-dua syarat berikut perlu dipenuhi: 1) EMA cepat melintasi di atas EMA perlahan; 2) Harga penutupan berhampiran atau di bawah Bollinger Bands atas atau tengah.
Di samping itu, strategi Double Gap menggunakan penunjuk ATR untuk mengira stop loss dinamik untuk mengawal risiko setiap perdagangan.
Strategi Double Gap boleh dioptimumkan dari aspek berikut:
Strategi Double Gap secara berkesan mengenal pasti peluang jangka pendek menggunakan kedua-dua trend berikut dan penapisan pecah. Dengan pengurusan stop loss dinamik, ia sesuai untuk perdagangan jangka pendek mata wang digital dan logam mulia yang tidak stabil. Penambahbaikan lebih lanjut dalam kestabilan dan keuntungan dapat dicapai melalui parameter dan pengoptimuman logik.
/*backtest start: 2023-01-16 00:00:00 end: 2024-01-22 00:00:00 period: 1d basePeriod: 1h exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}] */ // This source code is subject to the terms of the Mozilla Public License 2.0 at https://mozilla.org/MPL/2.0/ // © singhak8757 //@version=5 strategy("Bitcoin and Gold 5min Scalping Strategy2.0", overlay=true) // Input parameters fastLength = input(5, title="Fast EMA Length") slowLength = input(13, title="Slow EMA Length") bollingerLength = input(20, title="Bollinger Band Length") bollingerMultiplier = input(2, title="Bollinger Band Multiplier") stopLossMultiplier = input(1, title="Stop Loss Multiplier") // Calculate EMAs fastEMA = ta.ema(close, fastLength) slowEMA = ta.ema(close, slowLength) // Calculate Bollinger Bands basis = ta.sma(close, bollingerLength) upperBand = basis + bollingerMultiplier * ta.stdev(close, bollingerLength) lowerBand = basis - bollingerMultiplier * ta.stdev(close, bollingerLength) // Buy condition buyCondition = ta.crossover(fastEMA, slowEMA) and (close <= upperBand or close <= basis) // Sell condition sellCondition = ta.crossunder(fastEMA, slowEMA) and (close >= lowerBand or close >= basis) // Calculate stop loss level stopLossLevel = ta.lowest(low, 2)[1] - stopLossMultiplier * ta.atr(14) // Plot EMAs plot(fastEMA, color=color.rgb(0, 156, 21), title="Fast EMA") plot(slowEMA, color=color.rgb(255, 0, 0), title="Slow EMA") // Plot Bollinger Bands plot(upperBand, color=color.new(#000000, 0), title="Upper Bollinger Band") plot(lowerBand, color=color.new(#1b007e, 0), title="Lower Bollinger Band") // Plot Buy and Sell signals plotshape(series=buyCondition, title="Buy Signal", color=color.green, style=shape.labelup, location=location.belowbar) plotshape(series=sellCondition, title="Sell Signal", color=color.red, style=shape.labeldown, location=location.abovebar) // Plot Stop Loss level plot(stopLossLevel, color=color.orange, title="Stop Loss Level") // Strategy logic strategy.entry("Buy", strategy.long, when = buyCondition) strategy.exit("Stop Loss/Close", from_entry="Buy", loss=stopLossLevel) strategy.close("Sell", when = sellCondition)