Chiến lược này sử dụng nhiều đường trung bình động (VWMA), chỉ số hướng trung bình (ADX) và chỉ số chuyển động theo hướng (DMI) để nắm bắt các cơ hội dài trên thị trường Bitcoin. Bằng cách kết hợp đà tăng giá, hướng xu hướng và khối lượng giao dịch, chiến lược nhằm mục đích tìm các điểm nhập với xu hướng tăng mạnh và đà tăng đủ trong khi kiểm soát rủi ro nghiêm ngặt.
Chiến lược dài Bitcoin của VWMA-ADX có hiệu quả nắm bắt các cơ hội tăng trên thị trường Bitcoin bằng cách xem xét toàn diện xu hướng giá, động lực, khối lượng giao dịch và các chỉ số kỹ thuật khác. Đồng thời, các biện pháp kiểm soát rủi ro nghiêm ngặt và các điều kiện thoát rõ ràng đảm bảo rằng rủi ro của chiến lược được kiểm soát tốt. Tuy nhiên, chiến lược cũng có một số hạn chế, chẳng hạn như không đủ thích nghi với môi trường thị trường thay đổi và sự cần thiết phải tối ưu hóa các chiến lược dừng lỗ. Trong tương lai, có thể cải thiện về độ tin cậy tín hiệu, kiểm soát rủi ro và tối ưu hóa tham số để tăng cường độ bền và lợi nhuận của chiến lược. Nhìn chung, Chiến lược dài VWMA-ADX cung cấp cho các nhà đầu tư một cách tiếp cận giao dịch có hệ thống dựa trên động lực và xu hướng Bitcoin, đáng để tiếp tục khám phá và tinh chỉnh.
/*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)
qazwsz888Có lẽ bạn nên thêm một cái kẹp di động.