Tài nguyên đang được tải lên... tải...

Chiến lược Phá vỡ dựa trên các kênh Camarilla

Tác giả:ChaoZhang, Ngày: 2023-10-24 16:18:30
Tags:

img

Tổng quan

Chiến lược này chủ yếu sử dụng các kênh Camarilla và đường trung bình động để xác định các điểm đột phá trên thị trường, và do đó thực hiện theo xu hướng.

Chiến lược logic

  1. Tính toán mức hỗ trợ và kháng cự bằng cách sử dụng các kênh Camarilla, bao gồm H4, L4 vv.

  2. Xác định xem giá có vượt qua các đường kênh này không. Ví dụ, đóng trên H4 và mở dưới H4 cho thấy tín hiệu phá vỡ.

  3. Thêm bộ lọc trung bình động để xác nhận thêm. Ví dụ, nếu EMA dưới mức đóng, đó là một sự đột phá tăng.

  4. Nhập vị trí dài với lệnh dừng lỗ và lấy lợi nhuận.

  5. Điều tương tự cũng áp dụng cho các vị trí ngắn.

Lý thuyết là đơn giản và dễ hiểu. Với việc dừng lỗ, chiến lược có thể vượt qua xu hướng hiệu quả.

Ưu điểm

Những lợi thế của chiến lược này:

  1. Các kênh Camarilla xác định chính xác vị trí hỗ trợ và kháng cự tiềm năng.

  2. Bộ lọc trung bình động giúp xác nhận tín hiệu đột phá thực sự.

  3. Chế độ dừng lỗ kéo theo sẽ mang lại lợi nhuận trong khi tránh dừng đảo ngược.

  4. Các tín hiệu rất rõ ràng và dễ thực hiện.

  5. Không cần điều chỉnh thường xuyên cho giao dịch tự động.

Rủi ro và giải pháp

Có một số rủi ro cần lưu ý:

  1. Các kênh Camarilla không thể xác định được các điểm chuyển hướng hiệu quả.

    • Giải pháp: Thêm các dao động để phát hiện sự đảo ngược xu hướng.
  2. Đặt điểm dừng lỗ không chính xác có thể dẫn đến thoát sớm hoặc tăng lỗ.

    • Giải pháp: Tối ưu hóa và kiểm tra các mức dừng lỗ khác nhau.
  3. Các tín hiệu đột phá có thể là tín hiệu sai.

    • Giải pháp: Thêm nhiều bộ lọc để xác nhận, hoặc nới lỏng các tiêu chí thoát.
  4. Nhiều sự phá vỡ giả có thể xảy ra trong các thị trường khác nhau.

    • Giải pháp: Tránh giao dịch trong các khoảng thời gian khác nhau, hoặc nới lỏng các tiêu chí.

Những gợi ý để cải thiện

Chiến lược có thể được cải thiện hơn nữa từ các khía cạnh sau:

  1. Thêm thêm các chỉ số như bộ lọc để tăng độ chính xác đột phá, chẳng hạn như KDJ, MACD v.v.

  2. Tối ưu hóa các lối ra, chẳng hạn như dừng mất mát theo sau động, tích hợp ATR vv.

  3. Tối ưu hóa các thông số cho các sản phẩm khác nhau để tăng độ bền.

  4. Thêm bộ lọc xu hướng khung thời gian cao hơn để tránh giao dịch ngược xu hướng.

  5. Tập trung vào các vụ đột phá lớn để xác nhận.

  6. Phát triển tối ưu hóa tham số tự động cho điều chỉnh động.

  7. Mở rộng đến các chiến lược phân phối đa sản phẩm.

Kết luận

Chiến lược có logic rõ ràng và đơn giản với tính thực tế mạnh mẽ. Nó xác định các hỗ trợ và kháng cự tiềm năng bằng cách sử dụng Camarilla và xác nhận hướng đột phá bằng đường trung bình động. Phương pháp thoát cũng hợp lý. Ngoài ra còn có tiềm năng cải tiến rất lớn, chẳng hạn như thêm nhiều chỉ số, mở rộng đa sản phẩm vv. Nhìn chung đây là một chiến lược hứa hẹn với tiềm năng tốt.


/*backtest
start: 2023-09-23 00:00:00
end: 2023-10-23 00:00:00
period: 1h
basePeriod: 15m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=2
//Created by CristianD
strategy(title="CamarillaStrategyV1", shorttitle="CD_Camarilla_StrategyV1", overlay=true) 
//sd = input(true, title="Show Daily Pivots?")
EMA = ema(close,8)

//Camarilla
pivot = (high + low + close ) / 3.0 
range = high - low
h5 = (high/low) * close 
h4 = close + (high - low) * 1.1 / 2.0
h3 = close + (high - low) * 1.1 / 4.0
h2 = close + (high - low) * 1.1 / 6.0
h1 = close + (high - low) * 1.1 / 12.0
l1 = close - (high - low) * 1.1 / 12.0
l2 = close - (high - low) * 1.1 / 6.0
l3 = close - (high - low) * 1.1 / 4.0
l4 = close - (high - low) * 1.1 / 2.0
h6 = h5 + 1.168 * (h5 - h4) 
l5 = close - (h5 - close)
l6 = close - (h6 - close)

// Daily line breaks
//sopen = request.security(syminfo.tickerid, "D", open [1])
//shigh = request.security(syminfo.tickerid, "D", high [1])
//slow = request.security(syminfo.tickerid, "D", low [1])
//sclose = request.security(syminfo.tickerid, "D", close [1])
//
// Color
//dcolor=sopen != sopen[1] ? na : black
//dcolor1=sopen != sopen[1] ? na : red
//dcolor2=sopen != sopen[1] ? na : green

//Daily Pivots 
dtime_pivot = request.security(syminfo.tickerid, 'D', pivot[1]) 
dtime_h6 = request.security(syminfo.tickerid, 'D', h6[1]) 
dtime_h5 = request.security(syminfo.tickerid, 'D', h5[1]) 
dtime_h4 = request.security(syminfo.tickerid, 'D', h4[1]) 
dtime_h3 = request.security(syminfo.tickerid, 'D', h3[1]) 
dtime_h2 = request.security(syminfo.tickerid, 'D', h2[1]) 
dtime_h1 = request.security(syminfo.tickerid, 'D', h1[1]) 
dtime_l1 = request.security(syminfo.tickerid, 'D', l1[1]) 
dtime_l2 = request.security(syminfo.tickerid, 'D', l2[1]) 
dtime_l3 = request.security(syminfo.tickerid, 'D', l3[1]) 
dtime_l4 = request.security(syminfo.tickerid, 'D', l4[1]) 
dtime_l5 = request.security(syminfo.tickerid, 'D', l5[1]) 
dtime_l6 = request.security(syminfo.tickerid, 'D', l6[1]) 

//offs_daily = 0
//plot(sd and dtime_pivot ? dtime_pivot : na, title="Daily Pivot",color=dcolor, linewidth=2)
//plot(sd and dtime_h6 ? dtime_h6 : na, title="Daily H6", color=dcolor2, linewidth=2)
//plot(sd and dtime_h5 ? dtime_h5 : na, title="Daily H5",color=dcolor2, linewidth=2)
//plot(sd and dtime_h4 ? dtime_h4 : na, title="Daily H4",color=dcolor2, linewidth=2)
//plot(sd and dtime_h3 ? dtime_h3 : na, title="Daily H3",color=dcolor1, linewidth=3)
//plot(sd and dtime_h2 ? dtime_h2 : na, title="Daily H2",color=dcolor2, linewidth=2)
//plot(sd and dtime_h1 ? dtime_h1 : na, title="Daily H1",color=dcolor2, linewidth=2)
//plot(sd and dtime_l1 ? dtime_l1 : na, title="Daily L1",color=dcolor2, linewidth=2)
//plot(sd and dtime_l2 ? dtime_l2 : na, title="Daily L2",color=dcolor2, linewidth=2)
//plot(sd and dtime_l3 ? dtime_l3 : na, title="Daily L3",color=dcolor1, linewidth=3)
//plot(sd and dtime_l4 ? dtime_l4 : na, title="Daily L4",color=dcolor2, linewidth=2)
//plot(sd and dtime_l5 ? dtime_l5 : na, title="Daily L5",color=dcolor2, linewidth=2)
//plot(sd and dtime_l6 ? dtime_l6 : na, title="Daily L6",color=dcolor2, linewidth=2)

longCondition = close >dtime_h4 and open < dtime_h4 and EMA < close
if (longCondition)
    strategy.entry("Long", strategy.long)
    strategy.exit ("Exit Long","Long",  trail_points = 140,trail_offset = 1, loss =170) 
    //trail_points = 40, trail_offset = 3, loss =70 and


shortCondition = close <dtime_l4 and open >dtime_l4 and EMA > close
if (shortCondition)
    strategy.entry("Short", strategy.short)
    strategy.exit ("Exit Short","Short", trail_points = 110,trail_offset = 1, loss =120)
    


Thêm nữa