Chiến lược theo dõi xu hướng đa khung thời gian


Ngày tạo: 2023-11-14 14:29:39 sửa đổi lần cuối: 2023-11-14 14:29:39
sao chép: 1 Số nhấp chuột: 667
1
tập trung vào
1617
Người theo dõi

Chiến lược theo dõi xu hướng đa khung thời gian

Tổng quan

Chiến lược này sử dụng nhiều chỉ số như đường trung bình, MACD và RSI để xác định hướng xu hướng trong nhiều khung thời gian để thực hiện giao dịch theo xu hướng trên chỉ số SPX500.

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

  1. Sử dụng đường trung bình di chuyển đơn giản 10 ngày để xác định xu hướng của giá. Khi giá vượt qua đường 10 ngày, hãy nhìn lên và đi xuống.

  2. Ứng dụng động lực phán đoán MACD hai chiều dương và âm. Tính toán chênh lệch của đường trung bình di chuyển của chỉ số vào ngày 12 và 21, sau đó xác định tín hiệu mua bán qua đường chậm nhanh của đường trung bình.

  3. RSI 14 ngày và đường trung bình 50 ngày được tính, trên đường trung bình RSI là tín hiệu lạc quan và dưới là tín hiệu giảm.

  4. Xác định sự nhất quán của xu hướng bằng cách sử dụng khung thời gian 1, 3 và 5 phút.

  5. Tín hiệu mua được tạo ra khi giá vượt qua đường 10 ngày, đường trung bình trên RSI, đường dài trên MACD; tín hiệu bán được tạo ra khi giá vượt qua đường 10 ngày, đường trung bình dưới RSI, đường dài dưới MACD.

Lợi thế chiến lược

  1. Giao thức đa chỉ số nhận dạng xu hướng, cải thiện độ chính xác của tín hiệu. Đường trung bình 10 ngày đánh giá hướng xu hướng chính, MACD đánh giá động lực mạnh yếu, RSI xác nhận quá mua quá bán. Giao thức chỉ số có thể xác minh lẫn nhau, giảm giao dịch sai.

  2. Xác định nhiều khung thời gian, tránh bị lừa bởi tiếng ồn thị trường. Xác thực đôi khung thời gian 1 phút, 3 phút, 5 phút, đảm bảo tín hiệu đồng bộ, lọc tín hiệu giả.

  3. Kết hợp hình dạng phán đoán đồ họa, trực quan đáng tin cậy. Hình ảnh hỗ trợ phán đoán đặc điểm hình dạng giá, tránh khu vực cực điểm mua bán, giảm nguy cơ mất mát.

  4. Tần suất giao dịch vừa phải, phù hợp với đặc điểm giao dịch chỉ số. Sử dụng đường trung bình 10 ngày làm chỉ số phán đoán chính, tần suất giao dịch sẽ không quá cao, tránh chi phí giao dịch quá nhiều khi giao dịch lặp lại.

Rủi ro chiến lược

  1. Không thể xác định được sự cố đột ngột gây ra sự cố. Sự kiện phi lý sẽ làm gián đoạn phán đoán mô hình, trong thời điểm này, bạn nên giảm rủi ro tránh vị trí.

  2. Cài đặt tham số cố định, không tính đến sự thay đổi của môi trường thị trường. Trong cuộc chiến thực tế, các tham số nên được điều chỉnh theo động lực của môi trường thành phố lớn, để chiến lược thích ứng với nhiều tình huống.

  3. Điểm mua và bán quá lý tưởng, thực hiện thực tế rất khó. Các yếu tố như chi phí điểm trượt nên điều chỉnh điểm mua và bán để tín hiệu có thể thực hiện được hơn.

  4. Nhiều khung thời gian làm tăng sự chậm trễ trong ra quyết định.

Hướng tối ưu hóa chiến lược

  1. Thêm các cơ chế dừng lỗ, chẳng hạn như dừng di chuyển, dừng phần trăm, để kiểm soát tổn thất đơn lẻ

  2. Tối ưu hóa các thiết lập tham số để biến động tham số phù hợp với môi trường thị trường và tăng cường tính ổn định của chiến lược.

  3. Kết hợp với việc kiểm soát các sự kiện nóng trên thị trường, tránh các sự kiện lớn gây ra tác động đến chiến lược.

  4. Cân nhắc chi phí giao dịch thực tế như điểm trượt, điều chỉnh điểm mua và bán để tín hiệu có thể thực hiện được.

  5. Kiểm tra các phương pháp lấy giá khác nhau, chẳng hạn như đường K, như là nguồn xác nhận tín hiệu, có nhiều phương tiện xác minh khung thời gian.

  6. Thêm thuật toán học máy, sử dụng mô hình đào tạo dữ liệu lớn, tự động tối ưu hóa các tham số chiến lược.

Tóm tắt

Chiến lược này thực hiện theo dõi xu hướng giao dịch trên chỉ số SPX500 bằng cách xác định xu hướng nhiều chỉ số, xác nhận tín hiệu nhiều khung thời gian. Ưu điểm của chiến lược là độ chính xác tín hiệu cao, khả năng chống nhiễu tiếng ồn mạnh, nhưng cần chú ý đến kiểm soát rủi ro, duy trì tối ưu hóa động lực của các tham số chiến lược. Là một thử nghiệm hiệu quả để tối ưu hóa chiến lược trung bình di chuyển đơn giản, chiến lược này cung cấp khởi đầu và bài học hữu ích để tối ưu hóa chiến lược giao dịch định lượng.

Mã nguồn chiến lược
/*backtest
start: 2022-11-07 00:00:00
end: 2023-11-13 00:00:00
period: 1d
basePeriod: 1h
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

// This source code is subject to the terms of the Mozilla Public License 2.0 at https://mozilla.org/MPL/2.0/
// USE HEIEN ASHI, 1 min, SPX 500 USD OANDA
// © connor2279
//@version=5
strategy(title="SPX Strategy", shorttitle="SPXS", overlay=true)

//SMA
len1 = 10
src1 = input(close, title="SMA Source #1")
out1 = ta.sma(src1, len1)
plot(out1, title="SMA #1", color=close >= out1 ? color.lime : color.red, linewidth=2)

data_over = ta.crossover(close, out1)
dataO = close >= out1
data_under = ta.crossunder(close, out1)
dataU = close < out1

bgcolor(color=ta.crossover(close, out1) ? color.new(color.lime, 90) : na)
bgcolor(color=ta.crossunder(close, out1) ? color.new(color.red, 90) : na)     

//Norm MacD
sma = 12
lma = 21
tsp = 10
np = 50
    
sh = ta.ema(close,sma)  

lon= ta.ema(close,lma) 

ratio = math.min(sh,lon)/math.max(sh,lon)

Mac = ratio - 1
if(sh>lon)
    Mac := 2-ratio - 1
else
    Mac := ratio - 1

MacNorm = ((Mac-ta.lowest(Mac, np)) /(ta.highest(Mac, np)-ta.lowest(Mac, np)+.000001)*2)- 1

MacNorm2 = MacNorm

if(np<2)
    MacNorm2 := Mac
else
    MacNorm2 := MacNorm
    
Trigger = ta.wma(MacNorm2, tsp)

trigger_above = Trigger >= MacNorm
trigger_under = Trigger < MacNorm
plotshape(ta.crossover(Trigger, MacNorm2), style=shape.triangledown, color=color.red)
plotshape(ta.crossunder(Trigger, MacNorm2), style=shape.triangledown, color=color.lime)

//RSI / SMA RSI
swr=input(true,title="RSI")
src = close
len = 14
srs = 50
up = ta.rma(math.max(ta.change(src), 0), len)
down = ta.rma(-math.min(ta.change(src), 0), len)
rsi = down == 0 ? 100 : up == 0 ? 0 : 100 - (100 / (1 + up / down))
mr = ta.sma(rsi,srs)
rsi_above = rsi >= mr
rsi_under = rsi < mr

//All
buySignal = rsi_above and trigger_under and dataO
shortSignal = rsi_under and trigger_above and dataU
bgcolor(color=buySignal ? color.new(color.lime,97) : na)     
bgcolor(color=shortSignal ? color.new(color.red, 97) : na)     
     
sellSignal = ta.cross(close, out1) or ta.cross(Trigger, MacNorm2) or ta.cross(rsi, mr)
if (buySignal)
    strategy.entry("LONG", strategy.long, 1)

if (shortSignal)
    strategy.entry("SHORT", strategy.short, 1)

// Submit exit orders
strategy.close("LONG", when=sellSignal)
strategy.close("SHORT", when=sellSignal)