
Chiến lược này là một hệ thống giao dịch theo dõi xu hướng dựa trên dải hỗ trợ thị trường bò. Nó chủ yếu sử dụng tín hiệu giao thoa của đường trung bình di chuyển đơn giản 20 tuần (SMA) và đường trung bình di chuyển chỉ số 21 tuần (EMA) để xác định hướng xu hướng thị trường và đưa ra quyết định giao dịch. Chiến lược này phát đi nhiều tín hiệu khi hai đường thẳng giao thoa lên, bằng phẳng khi giao thoa xuống, thu lợi nhuận bằng cách nắm bắt cơ hội xu hướng trung bình và dài hạn.
Lý luận cốt lõi của chiến lược này là để đánh giá xu hướng thị trường bằng cách theo dõi mối quan hệ vị trí tương đối giữa hai đường trung bình là 20 tuần SMA và 21 tuần EMA. Khi đường trung bình ngắn hạn (20 tuần SMA) từ bên dưới phá vỡ đường trung bình dài hạn (21 tuần EMA), cho thấy thị trường có thể tạo ra xu hướng tăng, hệ thống sẽ mở nhiều vị trí tại thời điểm này; Khi đường trung bình ngắn hạn từ phía trên phá vỡ đường trung bình dài hạn, cho thấy xu hướng tăng có thể kết thúc, hệ thống sẽ thoát ra.
Chiến lược giao dịch đường đai hỗ trợ thị trường bò là một hệ thống theo dõi xu hướng dựa trên lý thuyết phân tích kỹ thuật cổ điển. Bằng cách chéo đường trung bình ở cấp độ vòng quay, nó nắm bắt cơ hội xu hướng trung và dài hạn, có tính logic rõ ràng, có thể kiểm soát rủi ro. Tuy nhiên, chiến lược này không hoạt động tốt trong thị trường xung đột và có một số sự chậm trễ. Bằng cách thêm các chỉ số hỗ trợ, tối ưu hóa cơ chế ngăn chặn tổn thất và quản lý tài chính tốt hơn, chiến lược có nhiều không gian tối ưu hóa.
/*backtest
start: 2019-12-23 08:00:00
end: 2024-12-25 08:00:00
period: 1d
basePeriod: 1d
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/
// This source code is subject to the terms of the Mozilla Public License 2.0
// © zkdev
//@version=6
strategy(title='Demo GPT - Bull Market Support Band',
overlay=true,
default_qty_type=strategy.percent_of_equity,
default_qty_value=100,
commission_type=strategy.commission.percent,
commission_value=0.1,
slippage=3)
// -------------------------------------------------------------------------
// Compile-time timestamp constants for default date range
// (2018-01-01 00:00:00 UTC -> 1514764800000
// 2069-12-31 23:59:59 UTC -> 3155759999000)
// -------------------------------------------------------------------------
const int defaultFromDate = 1514764800000
const int defaultToDate = 3155759999000
// -------------------------------------------------------------------------
// Inputs: date range
// -------------------------------------------------------------------------
fromDate = input(title='Start Date', defval=defaultFromDate)
toDate = input(title='End Date', defval=defaultToDate)
// -------------------------------------------------------------------------
// Indicator settings & calculations
// -------------------------------------------------------------------------
smaLength = 20
emaLength = 21
source = close
sma = ta.sma(source, smaLength)
ema = ta.ema(source, emaLength)
// -------------------------------------------------------------------------
// Fetch weekly SMA & EMA
// -------------------------------------------------------------------------
outSma = request.security(syminfo.tickerid, 'W', sma, gaps=barmerge.gaps_on, lookahead=barmerge.lookahead_off)
outEma = request.security(syminfo.tickerid, 'W', ema, gaps=barmerge.gaps_on, lookahead=barmerge.lookahead_off)
// -------------------------------------------------------------------------
// Plot visuals (20w SMA, 21w EMA, fill in between)
// -------------------------------------------------------------------------
smaPlot = plot(outSma, color=color.new(color.red, 0), title='20w SMA')
emaPlot = plot(outEma, color=color.new(color.green, 0), title='21w EMA')
fill(smaPlot, emaPlot, color=color.new(color.orange, 75), fillgaps=true)
// -------------------------------------------------------------------------
// We evaluate crossover/crossunder on *every bar* and store the result
// -------------------------------------------------------------------------
crossUp = ta.crossover(outSma, outEma)
crossDown = ta.crossunder(outSma, outEma)
// -------------------------------------------------------------------------
// Trade logic: only operate within chosen date range
// Buy when outSma crosses above outEma; Sell (close) when outSma crosses below outEma
// -------------------------------------------------------------------------
inDateRange = true
if inDateRange
// If we have a crossUp event on this bar, buy (go Long)
if crossUp
strategy.entry('Long', strategy.long)
// If we have a crossDown event on this bar, sell (close Long)
if crossDown
strategy.close('Long')