Chiến lược theo dõi xu hướng nhiều khung thời gian

Tác giả:ChaoZhang, Ngày: 2023-11-14 14:29:39
Tags:

img

Tổng quan

Chiến lược này kết hợp các đường trung bình động, MACD và RSI trên nhiều khung thời gian để xác định hướng xu hướng và giao dịch xu hướng chỉ số S&P500.

Chiến lược logic

  1. Đường trung bình di chuyển đơn giản 10 ngày đánh giá xu hướng giá. Giá vượt trên MA 10 ngày cho thấy tăng, và vượt dưới cho thấy giảm.

  2. MACD đánh giá sức mạnh động lực. Nó tính toán sự khác biệt giữa các đường trung bình chuyển động theo hàm số từ 12 đến 21 ngày, và giao thoa giữa đường MACD và đường tín hiệu tạo ra các tín hiệu giao dịch. Đường MACD vượt trên đường tín hiệu cho thấy tăng và vượt dưới cho thấy giảm.

  3. RSI 14 ngày và MA 50 ngày được tính toán. RSI vượt trên MA là tín hiệu tăng, và vượt dưới là tín hiệu giảm.

  4. Các khung thời gian 1 phút, 3 phút và 5 phút xác nhận sự nhất quán xu hướng.

  5. Khi giá vượt trên đường MA 10 ngày, RSI vượt trên đường MA của nó và đường MACD vượt trên đường tín hiệu, tín hiệu mua được tạo ra. Khi giá vượt dưới đường MA 10 ngày, RSI vượt dưới đường MA của nó và đường MACD vượt dưới đường tín hiệu, tín hiệu bán được tạo ra.

Ưu điểm

  1. Kết hợp các chỉ số cải thiện độ chính xác tín hiệu. MA 10 ngày đánh giá xu hướng chính, MACD xác định sức mạnh động lực và RSI xác nhận mức mua quá mức / bán quá mức.

  2. Xác nhận nhiều khung thời gian tránh tiếng ồn thị trường. Xác nhận kép trên khung thời gian 1 phút, 3 phút và 5 phút đảm bảo sự xuất hiện đồng thời của tín hiệu và lọc ra các tín hiệu sai.

  3. Mô hình biểu đồ hỗ trợ phán đoán trực quan cho độ tin cậy. Phân tích mô hình đồ họa tránh mức mua/bán quá mức và giảm rủi ro mất mát.

  4. Tần suất giao dịch trung bình phù hợp với giao dịch chỉ số. MA 10 ngày như là chỉ số chính ngăn ngừa giao dịch quá mức, tránh chi phí giao dịch bổ sung do giao dịch quá mức.

Rủi ro

  1. Không phát hiện sự đảo ngược đột ngột trong các sự kiện phi lý. Sự hỗn loạn thị trường như vậy làm gián đoạn mô hình và nên giảm kích thước vị trí để kiểm soát rủi ro.

  2. Cài đặt tham số cố định mà không tính đến các điều kiện thị trường thay đổi. Các tham số nên được điều chỉnh động cho các chế độ thị trường khác nhau trong giao dịch trực tiếp.

  3. Điểm đầu vào quá lý tưởng với khó khăn thực thi trong thực tế.

  4. Nhiều khung thời gian làm tăng sự chậm trễ tín hiệu. Kiểm soát rủi ro thích hợp là cần thiết để giảm thiểu tổn thất do sự chậm trễ trong các sự kiện đột ngột.

Tăng cường

  1. Kết hợp các cơ chế dừng lỗ như dừng lỗ sau và tỷ lệ dừng lỗ để kiểm soát lỗ giao dịch duy nhất.

  2. Tối ưu hóa các thiết lập tham số động để thích nghi với thị trường phát triển và cải thiện tính vững chắc của chiến lược.

  3. Xem xét các thay đổi chế độ thị trường từ các sự kiện quan trọng để tránh các cú sốc mô hình.

  4. Xét về chi phí giao dịch như trượt và điều chỉnh các điểm nhập / xuất để thực hiện tốt hơn.

  5. Kiểm tra các đầu vào giá khác nhau như nến như xác nhận tín hiệu để đa dạng hóa xác nhận nhiều khung thời gian.

  6. Sử dụng thuật toán học máy trên dữ liệu lớn để tự động hóa tối ưu hóa chiến lược.

Kết luận

Chiến lược này giao dịch xu hướng S&P500 hiệu quả thông qua xác định xu hướng với nhiều chỉ số và xác nhận tín hiệu trên các khung thời gian.


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

Thêm nữa