Chiến lược giao dịch chênh lệch biến động trục thời gian kép


Ngày tạo: 2024-02-18 15:31:32 sửa đổi lần cuối: 2024-02-18 15:31:32
sao chép: 0 Số nhấp chuột: 608
1
tập trung vào
1617
Người theo dõi

Chiến lược giao dịch chênh lệch biến động trục thời gian kép

Tổng quan

Chiến lược giao dịch chênh lệch giá của tỷ lệ dao động hai trục thời gian bằng cách tính toán chênh lệch giá giữa hai chỉ số RSI của hai chu kỳ thời gian khác nhau để đánh giá tình trạng quá mua quá bán của thị trường, thực hiện giao dịch xu hướng có rủi ro thấp.

Nguyên tắc chiến lược

Các chỉ số cốt lõi của chiến lược này là shortTermXtrender và longTermXtrender. shortTermXtrender tính toán chênh lệch giá RSI trên đường thời gian ngắn, longTermXtrender tính toán chênh lệch giá RSI trên đường thời gian dài.

Dòng thời gian ngắn sử dụng 7 ngày EMA và 4 ngày LMA để tính RSI, sau đó làm chênh lệch giá với 50, tạo thành ShortTermXtrender. Dòng thời gian dài sử dụng 4 ngày EMA RSI và 50 làm chênh lệch giá, tạo thành LongTermXtrender.

Khi mặc 0 trên shortTermXtrender, làm nhiều; khi mặc 0 trên longTermXtrender, cũng làm nhiều. Nguyên tắc dừng lỗ sau khi làm nhiều là dừng lỗ khi mặc 0 dưới shortTermXtrender; khi mặc 0 dưới longTermXtrender, cũng dừng lỗ.

Bằng cách đó, thông qua việc đánh giá hai chiều thời gian, chúng ta có thể lọc ra nhiều đột phá giả hơn.

Phân tích lợi thế

Lợi thế lớn nhất của chiến lược này là tính chính xác của nó trong việc đánh giá xu hướng. Việc sử dụng kết hợp hai trục thời gian có thể lọc hiệu quả tiếng ồn và khóa hướng xu hướng mục tiêu. Điều này đảm bảo giao dịch theo dõi xu hướng có rủi ro thấp.

Ngoài ra, chiến lược cung cấp không gian để tối ưu hóa các tham số. Người dùng có thể tùy thuộc vào các giống và thời gian khác nhau, điều chỉnh chu kỳ SMA, tham số RSI, v.v., để tối ưu hóa hiệu quả của chiến lược.

Phân tích rủi ro

Rủi ro chính của chiến lược này là sai sót đánh giá dư thừa. Trong tình trạng chấn động, có thể tạo ra tín hiệu sai. Nếu vẫn mở vị trí, bạn sẽ có nguy cơ thua lỗ.

Ngoài ra, thiết lập tham số không đúng cũng có thể dẫn đến hiệu quả kém. Nếu tham số chu kỳ thời gian được thiết lập quá ngắn, khả năng phán đoán sai sẽ tăng lên; Nếu tham số chu kỳ thời gian được thiết lập quá dài, cơ hội xu hướng sẽ bị bỏ lỡ. Điều này đòi hỏi người dùng kiểm tra và tối ưu hóa tham số cho các thị trường khác nhau.

Hướng tối ưu hóa

Chiến lược này có thể được tối ưu hóa từ các khía cạnh sau:

  1. Tăng cơ chế dừng. Chiến lược hiện tại không có thiết lập dừng, có thể dừng kịp thời khi đạt được lợi nhuận mục tiêu.

  2. Tăng quản lý vị trí. Bạn có thể điều chỉnh vị trí theo kích thước tài chính, dao động và các chỉ số khác.

  3. Kiểm tra các thiết lập tham số của các giống khác nhau. Người dùng có thể thử nghiệm các tổ hợp tham số tối ưu bằng cách đo lại từ các chu kỳ thời gian khác nhau như ánh sáng mặt trời, 60 phút.

  4. Thêm phán đoán hỗ trợ học máy. Có thể huấn luyện mô hình để đánh giá loại hành vi, do đó có thể điều chỉnh các tham số chiến lược một cách động để tăng tỷ lệ chiến thắng.

Tóm tắt

Chiến lược giao dịch chênh lệch tỷ lệ dao động hai chiều thời gian bằng cách xây dựng chỉ số hai chiều thời gian để nắm bắt xu hướng hiệu quả. Có nhiều không gian tối ưu hóa chiến lược, người dùng có thể tối ưu hóa bằng cách điều chỉnh tham số, quản lý dừng, quản lý vị trí, v.v. để có hiệu quả chiến lược tốt hơn. Chiến lược này phù hợp với người dùng có kinh nghiệm giao dịch nhất định.

Mã nguồn chiến lược
/*backtest
start: 2024-01-18 00:00:00
end: 2024-02-17 00:00:00
period: 2h
basePeriod: 15m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=4
//study("MavXtrender")
strategy("MavXtrender")

ShortTermSMA = input(7)
ShortTermLMA = input(4)
ShortTermRSI = input(2)

LongTermMA  = input(4)
LongTermRSI  = input(2)

UseFactors = input(true)
TradeShortTerm = input(true)
TradeLongTerm = input(true)

count = TradeShortTerm == true ? 1 : 0
count := TradeLongTerm == true ? count + 1 : count
// set position size
Amount = strategy.equity / (close * count)

ShortTermLMA := UseFactors == true ? round(ShortTermSMA * ShortTermLMA) : ShortTermLMA
ShortTermRSI := UseFactors == true ? round(ShortTermSMA * ShortTermRSI) : ShortTermRSI
LongTermMA := UseFactors == true ? round(ShortTermSMA * LongTermMA) : LongTermMA
LongTermRSI := UseFactors == true ? round(ShortTermSMA * LongTermRSI) : LongTermRSI

shortTermXtrender = rsi(ema(close, ShortTermSMA) - ema(close, ShortTermLMA), ShortTermRSI ) - 50
longTermXtrender  = rsi( ema(close, LongTermMA), LongTermRSI ) - 50

// === INPUT BACKTEST RANGE ===
FromDay   = input(defval = 1, title = "From Day", minval = 1, maxval = 31)
FromMonth = input(defval = 1, title = "From Month", minval = 1, maxval = 12)
FromYear  = input(defval = 2018, title = "From Year", minval = 2012)
ToDay     = input(defval = 1, title = "To Day", minval = 1, maxval = 31)
ToMonth   = input(defval = 1, title = "To Month", minval = 1, maxval = 12)
ToYear    = input(defval = 2020, title = "To Year", minval = 2012)

// === FUNCTION EXAMPLE ===
start     = timestamp(FromYear, FromMonth, FromDay, 00, 00)  // backtest start window
finish    = timestamp(ToYear, ToMonth, ToDay, 23, 59)        // backtest finish window
window()  => true

strategy.entry("ShortTerm", strategy.long, qty = Amount, when = window() and crossover(shortTermXtrender,0) and TradeShortTerm)
strategy.entry("LongTerm", strategy.long, qty = Amount, when = window() and crossover(longTermXtrender,0) and TradeLongTerm)

strategy.close("ShortTerm", when = crossunder(shortTermXtrender,0) or time > finish)
strategy.close("LongTerm", when = crossunder(longTermXtrender,0) or time > finish)

shortXtrenderCol = shortTermXtrender > 0 ? shortTermXtrender > shortTermXtrender[1] ? color.lime : #228B22 : shortTermXtrender > shortTermXtrender[1] ? color.red : #8B0000
plot(shortTermXtrender, color=shortXtrenderCol, style=plot.style_columns, linewidth=1, title="B-Xtrender Osc. - Histogram", transp = 50)

longXtrenderCol = longTermXtrender> 0 ? longTermXtrender > longTermXtrender[1] ? color.lime : #228B22 : longTermXtrender > longTermXtrender[1] ? color.red : #8B0000
plot(longTermXtrender , color=longXtrenderCol, style=plot.style_histogram, linewidth=2, title="B-Xtrender Trend - Histogram", transp = 80)
plot(longTermXtrender , color=color.white,     style=plot.style_line,      linewidth=1, title="B-Xtrender Trend - Line",      transp = 80)