Chiến lược giao dịch chênh lệch biến động hai khung thời gian

Tác giả:ChaoZhang, Ngày: 2024-02-18 15:31:32
Tags:

img

Tổng quan

Chiến lược giao dịch chênh lệch biến động hai khung thời gian đánh giá tình trạng mua quá mức / bán quá mức của thị trường bằng cách tính chênh lệch giữa các chỉ số RSI của hai chu kỳ thời gian khác nhau để thực hiện giao dịch xu hướng 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 chênh lệch RSI trên khung thời gian ngắn và longTermXtrender tính chênh lệch RSI trên khung thời gian dài.

Khung thời gian ngắn sử dụng chênh lệch giá giữa EMA 7 ngày và LMA 4 ngày để tính RSI, và sau đó chênh lệch giá với 50 tạo thành shortTermXtrender. Khung thời gian dài sử dụng chênh lệch giá giữa RSI của EMA 4 ngày và 50 để tạo thành longTermXtrender.

Khi shortTermXtrender vượt trên 0, đi dài; khi longTermXtrender vượt trên 0, cũng đi dài. Nguyên tắc dừng lỗ sau khi đi dài là dừng lỗ khi shortTermXtrender vượt dưới 0, khi longTermXtrender vượt dưới 0, dừng lỗ.

Bằng cách này, bằng cách đánh giá trên hai khung thời gian, nhiều sự đột phá giả có thể được lọc ra.

Phân tích lợi thế

Lợi thế lớn nhất của chiến lược này là sự đánh giá xu hướng chính xác. Sự kết hợp của hai khung thời gian có thể lọc hiệu quả tiếng ồn và khóa theo hướng xu hướng mục tiêu. Điều này cung cấp một sự đảm bảo cho 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 tham số. Người dùng có thể điều chỉnh các tham số như chu kỳ SMA và tham số RSI theo các loại khác nhau và chu kỳ thời gian để tối ưu hóa kết quả 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à đánh giá sai về dài và ngắn. Trong thị trường dao động, rất dễ tạo ra tín hiệu sai. Nếu vị trí vẫn mở vào thời điểm này, sẽ có nguy cơ mất mát.

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

Hướng dẫn tối ưu hóa

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

  1. Tăng cơ chế lấy lợi nhuận. Hiện tại không có thiết lập lấy lợi nhuận trong chiến lược. Lợi nhuận có thể được lấy trong thời gian sau khi đạt được lợi nhuận mục tiêu.

  2. Tăng quản lý vị trí. Các vị trí có thể được điều chỉnh năng động dựa trên quy mô vốn, biến động và các chỉ số khác.

  3. Các thiết lập tham số thử nghiệm cho các loại khác nhau. Người dùng có thể kiểm tra sự kết hợp tham số tối ưu bằng cách kiểm tra lại các khung thời gian khác nhau như hàng ngày và 60 phút.

  4. Tăng khả năng phán đoán được hỗ trợ bởi máy học. Các mô hình có thể được đào tạo để xác định điều kiện thị trường và điều chỉnh các tham số chiến lược một cách năng động để cải thiện tỷ lệ thắng.

Tóm lại

Chiến lược giao dịch biến động chênh lệch thời gian kép đạt được việc nắm bắt xu hướng hiệu quả bằng cách xây dựng các chỉ số khung thời gian kép. Chiến lược có không gian tối ưu hóa lớn. Người dùng có thể tối ưu hóa thông qua điều chỉnh tham số, quản lý lợi nhuận, quản lý vị trí, v.v. để có được kết 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ó một số kinh nghiệm giao dịch.


/*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)


Thêm nữa