Chiến lược SAR Parabolic và CCI với EMA Exit cho giao dịch vàng

Tác giả:ChaoZhang, Ngày: 2023-12-07 17:04:54
Tags:

img

Tổng quan

Đây là một chiến lược giao dịch vàng trên khung thời gian M5 dựa trên sự kết hợp của các chỉ số kỹ thuật Parabolic SAR, CCI và EMA.

Chiến lược logic

  1. Parabolic SAR được sử dụng để xác định hướng xu hướng và điểm đảo ngược tiềm năng của vàng. Khi các chấm SAR bắt đầu giảm dưới giá, nó chỉ ra xu hướng tăng; khi các chấm SAR bắt đầu tăng trên giá, nó chỉ ra xu hướng giảm.

  2. CCI chỉ ra các điều kiện mua quá mức / bán quá mức của thị trường. CCI trên 100 cho thấy xu hướng tăng mạnh trong khi CCI dưới -100 cho thấy xu hướng giảm mạnh.

  3. EMA crossover báo hiệu các điểm chuyển đổi ngắn hạn của giá. xu hướng tăng được đề xuất khi đường nhanh đang tăng và xu hướng giảm được đề xuất khi nó đang giảm.

  4. Quy tắc tham gia: Đi dài khi SAR vượt qua EMA 5 phút theo hướng tăng và CCI lớn hơn 100; Đi ngắn khi SAR vượt qua EMA 5 phút theo hướng giảm và CCI nhỏ hơn -100.

  5. Quy tắc thoát: Lấy lợi nhuận tại giá nhập + 7 dấu chấm, Đặt dừng lỗ tại đường EMA 1 phút.

Ưu điểm

  1. Sử dụng 3 chỉ số để xác định xu hướng và mức hỗ trợ / kháng cự chính, cải thiện lợi nhuận.

  2. CCI lọc hiệu quả các sự phá vỡ sai. SAR đảo ngược kết hợp với hướng xu hướng tránh các mục nhập không cần thiết trong quá trình hợp nhất.

  3. EMA crossover với SAR cung cấp các mục nhập có rủi ro thấp trong thời gian rút ngắn.

  4. Các thông số tối ưu phù hợp với hàng hóa dễ bay hơi như vàng và tài khoản nhỏ.

Rủi ro

  1. Chủ yếu dựa trên các chỉ số kỹ thuật có thể thất bại trong các sự kiện thiên nga đen.

  2. Hàng hóa dễ bay hơi, EMA dừng lỗ dễ bị ảnh hưởng bởi các đỉnh dẫn đến tổn thất lớn.

  3. Các tín hiệu sai tiềm năng từ CCI và SAR dẫn đến tổn thất không cần thiết.

  4. Các lỗi hệ thống trong các động thái biến động có thể ngăn chặn việc thực hiện dừng lỗ hiệu quả.

Cơ hội gia tăng

  1. Kiểm tra các kết hợp tham số khác nhau để tối ưu hóa CCI cho các đặc điểm của vàng.

  2. Tích hợp nhiều chỉ số hơn như mô hình nến, Bollinger Bands để cải thiện độ bền.

  3. Sử dụng máy học để tối ưu hóa động các thông số SAR thích nghi với thị trường thay đổi.

  4. Kiểm tra các cơ chế dừng mất mát khác nhau, ví dụ như dừng lại để giảm khả năng bị trúng.

  5. Tối ưu hóa các mô hình kích thước vị trí, ví dụ: định dạng vị trí phân số, động để kiểm soát số tiền lỗ giao dịch duy nhất.

Kết luận

Nhìn chung, một chiến lược giao dịch vàng ổn định kết hợp nhiều chỉ số để xác định xu hướng, mức hỗ trợ / kháng cự chính và khu vực mua quá mức / bán quá mức cho các mục có rủi ro thấp trong thời gian khôi phục. Các tham số tối ưu hóa cho phép giao dịch tài khoản nhỏ tận dụng sự biến động cao của vàng. Có rủi ro có thể được giải quyết thông qua quản lý rủi ro thích hợp. Có tiềm năng đáng kể để cải thiện thêm sự ổn định và lợi nhuận thông qua nâng cao.


/*backtest
start: 2022-11-30 00:00:00
end: 2023-12-06 00:00:00
period: 1d
basePeriod: 1h
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=4
strategy("Parabolic SAR and CCI Strategy with EMA Exit", overlay=true)

// Parameters
length = input(50, title="EMA Length")
length_21 = input(21, title="EMA Length 21")
acc = input(0.02, title="Acceleration Factor")
max_acc = input(0.2, title="Max Acceleration Factor")
takeProfitPoints = input(7, title="Take Profit Points")

// Variables
var float ep = 0.0
var float sar = 0.0
var float af = acc

// Calculating 5-minute EMA based on 1-minute data
var float sum_close = na
var float ema_5min = na
if (bar_index % 5 == 0)
    sum_close := 0.0
    for i = 0 to 4
        sum_close := sum_close + close[i]
    ema_5min := ema(sum_close / 5, length_21)

// Calculating 1-minute EMA
ema1 = ema(close, length)
cci = cci(close, 45)

// Custom Parabolic SAR Calculation
trendUp = close > ema1
trendDown = close < ema1

var float prev_sar = na
prev_sar := na(sar[1]) ? low[1] : sar[1]

if trendUp
    ep := high > ep ? high : ep
    af := min(af + acc, max_acc)
    sar := min(prev_sar, prev_sar + af * (ep - prev_sar))

if trendDown
    ep := low < ep ? low : ep
    af := min(af + acc, max_acc)
    sar := max(prev_sar, prev_sar + af * (ep - prev_sar))

// Entry Conditions
longCondition = sar > ema1 and ema1 > ema_5min and cci > 100
shortCondition = sar < ema1 and ema1 < ema_5min and cci < -100

// Exit Conditions
longTakeProfit = strategy.position_avg_price + takeProfitPoints * syminfo.mintick
longStopLoss = ema1
shortTakeProfit = strategy.position_avg_price - takeProfitPoints * syminfo.mintick
shortStopLoss = ema1

// Plotting Entry Points
plotshape(longCondition, style=shape.triangleup, location=location.belowbar, color=color.green, size=size.small)
plotshape(shortCondition, style=shape.triangledown, location=location.abovebar, color=color.red, size=size.small)

// Strategy Execution
if longCondition
    strategy.entry("Long", strategy.long)

if shortCondition
    strategy.entry("Short", strategy.short)

if strategy.position_size > 0
    strategy.exit("Take Profit/Stop Loss", "Long", limit=longTakeProfit, stop=longStopLoss)

if strategy.position_size < 0
    strategy.exit("Take Profit/Stop Loss", "Short", limit=shortTakeProfit, stop=shortStopLoss)


Thêm nữa