Strategi ini menggunakan pelbagai purata bergerak (VWMA), Indeks Arah Purata (ADX), dan Penunjuk Pergerakan Arah (DMI) untuk menangkap peluang panjang di pasaran Bitcoin. Dengan menggabungkan momentum harga, arah trend, dan jumlah dagangan, strategi ini bertujuan untuk mencari titik masuk dengan trend menaik yang kuat dan momentum yang mencukupi sambil mengawal risiko dengan ketat.
Strategi Bitcoin Long VWMA-ADX berkesan menangkap peluang menaik di pasaran Bitcoin dengan mempertimbangkan secara komprehensif trend harga, momentum, jumlah dagangan, dan penunjuk teknikal lain. Pada masa yang sama, langkah-langkah kawalan risiko yang ketat dan syarat keluar yang jelas memastikan bahawa risiko strategi dikendalikan dengan baik. Walau bagaimanapun, strategi ini juga mempunyai beberapa batasan, seperti ketidakupayaan yang mencukupi untuk menyesuaikan diri dengan persekitaran pasaran yang berubah dan keperluan untuk strategi stop-loss yang dioptimumkan. Pada masa akan datang, penambahbaikan boleh dibuat dari segi kebolehpercayaan isyarat, kawalan risiko, dan pengoptimuman parameter untuk meningkatkan lagi kekuatan dan keuntungan strategi Bitcoin. Secara keseluruhan, Strategi Bitcoin Long VWMA-ADX menyediakan pelabur dengan pendekatan perdagangan sistematik berdasarkan momentum dan trend, yang patut dieksplorasi dan disempurnakan.
/*backtest start: 2024-03-01 00:00:00 end: 2024-03-31 23:59:59 period: 1h basePeriod: 15m exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}] */ // This Pine Script™ code is subject to the terms of the Mozilla Public License 2.0 at https://mozilla.org/MPL/2.0/ // © Q_D_Nam_N_96 //@version=5 strategy("Long BTC Strategy", overlay=true, default_qty_type = strategy.percent_of_equity, default_qty_value = 100, initial_capital = 1000, currency = currency.USD) Volume_Quartile(vol) => qvol1 = ta.percentile_linear_interpolation(vol, 60,15) qvol2 = ta.percentile_linear_interpolation(vol, 60,95) vol > qvol1 and vol < qvol2 smma(src, length) => smma = 0.0 smma := na(smma[1]) ? ta.sma(src, length) : (smma[1] * (length - 1) + src) / length smma ma(source, length, type) => switch type "SMA" => ta.sma(source, length) "EMA" => ta.ema(source, length) "RMA" => ta.rma(source, length) "WMA" => ta.wma(source, length) "VWMA" => ta.vwma(source, length) "HMA" => ta.hma(source, length) "SMMA" => smma(source, length) DMI(len, lensig) => up = ta.change(high) down = -ta.change(low) plusDM = na(up) ? na : (up > down and up > 0 ? up : 0) minusDM = na(down) ? na : (down > up and down > 0 ? down : 0) trur = ta.rma(ta.tr, len) plus = fixnan(100 * ta.rma(plusDM, len) / trur)+11 minus = fixnan(100 * ta.rma(minusDM, len) / trur)-11 sum = plus + minus adx = 100 * ta.vwma(math.abs(plus - minus-11) / (sum == 0 ? 1 : sum), lensig) [adx, plus, minus] cond1 = Volume_Quartile(volume*hlcc4) ma1 = ma(close,9, "VWMA") // plot(ma1, color = color.blue) ma2 = ma(close,14, "VWMA") // plot(ma2, color = color.orange) n = switch timeframe.period "240" => 0.997 => 0.995 ma3 = (0.1*ma(ta.highest(close,89),89, "VWMA") + 0.9*ma(ta.lowest(close,89),89, "VWMA"))*n plot(ma3, color = color.white) [adx, plus, minus] = DMI(7, 10) cond2 = adx > 18 and plus - math.abs(minus) > 15 var int count = 0 if barstate.isconfirmed and strategy.position_size != 0 count += 1 else count := 0 p_roc = 0 if timeframe.period == '240' p_roc := 14 else p_roc := 10 longCondition = ta.crossover(ma1, ma2) and (close > open ? close > ma3 : open > ma3) and ((ma3 - ma3[1])*100/ma3[1] >= -0.2) and ((close-close[p_roc])*100/close[p_roc] > -2.0) float alpha = 0.0 float sl_src = high[1] if (longCondition and cond1 and cond2 and strategy.position_size == 0) strategy.entry("buy", strategy.long) if timeframe.period == '240' alpha := 0.96 strategy.exit("exit-buy","buy", stop = sl_src*alpha) // line.new(bar_index, sl_src*alpha, bar_index+5, sl_src*alpha, width = 2, color = color.white) else if timeframe.period == '30' alpha := 0.985 strategy.exit("exit-buy","buy", stop = sl_src*alpha) // line.new(bar_index, sl_src*alpha, bar_index+20, sl_src*alpha, width = 2, color = color.white) else if timeframe.period == '45' alpha := 0.985 strategy.exit("exit-buy","buy", stop = sl_src*alpha) // line.new(bar_index, sl_src*alpha, bar_index+20, sl_src*alpha, width = 2, color = color.white) else if timeframe.period == '60' alpha := 0.98 strategy.exit("exit-buy","buy", stop = sl_src*alpha) // line.new(bar_index, sl_src*alpha, bar_index+20, sl_src*alpha, width = 2, color = color.white) else if timeframe.period == '120' alpha := 0.97 strategy.exit("exit-buy","buy", stop = sl_src*alpha) // line.new(bar_index, sl_src*alpha, bar_index+20, sl_src*alpha, width = 2, color = color.white) else if timeframe.period == '180' alpha := 0.96 strategy.exit("exit-buy","buy", stop = sl_src*alpha) // line.new(bar_index, sl_src*alpha, bar_index+20, sl_src*alpha, width = 2, color = color.white) else if timeframe.period == 'D' alpha := 0.95 strategy.exit("exit-buy","buy", stop = sl_src*alpha) // line.new(bar_index, sl_src*alpha, bar_index+20, sl_src*alpha, width = 2, color = color.white) else alpha := 0.93 strategy.exit("exit-buy","buy", stop = sl_src*alpha) // line.new(bar_index, sl_src*alpha, bar_index+20, sl_src*alpha, width = 2, color = color.white) period = switch timeframe.period "240" => 90 "180" => 59 "120" => 35 "30" => 64 "45" => 40 "60" => 66 "D" => 22 => 64 if (count > period or close < ma3) strategy.close('buy', immediately = true)
qazwsz888Lebih baik tambah penangkal mudah alih.