Chiến lược phá vỡ nến Kana dựa trên trung bình chuyển động và kháng cự hỗ trợ

Tác giả:ChaoZhang, Ngày: 2023-12-27 15:27:45
Tags:

img

Tổng quan

Đây là một chiến lược đột phá nhanh dựa trên phân tích kỹ thuật nến Nhật Bản, kết hợp với các chỉ số trung bình động và các chỉ số kháng cự hỗ trợ để xác định xu hướng và vị trí.

Chiến lược logic

Chiến lược này sử dụng trung bình di chuyển đơn giản 20 giai đoạn (SMA) và trung bình di chuyển cấp số (EMA) 200 giai đoạn để xác định hướng xu hướng. Khi giá đang trong xu hướng tăng (SMA trên EMA), và cơ thể thực tế nến Nhật Bản hiện tại đóng cửa trên mức mở (bộ trắng), nó cho thấy sức mua tăng cường. Khi giá đang trong xu hướng giảm (SMA dưới EMA), và cơ thể thực tế nến Nhật Bản hiện tại đóng cửa dưới mức mở (bộ đen), nó cho thấy áp lực bán hàng tăng cường.

Với xác nhận xu hướng và động lực, chiến lược chờ đợi một sự đột phá giá nhanh chóng và bước vào thị trường. Cái gọi là breakout có nghĩa là giá vượt qua đường kênh đầu tiên của ba kênh ATR đã đặt trước (được tính dựa trên ATR 200 ngày và hệ số) và bước vào đường kênh thứ hai. Đây là tín hiệu đột phá có khả năng cao.

Sau khi tham gia thị trường, các quy tắc lấy lợi nhuận và dừng lỗ rất đơn giản. Miễn là giá chạm vào ranh giới bên ngoài của kênh (chẳng hạn như lấy lợi nhuận hoặc dừng lỗ), nó sẽ lấy lợi nhuận hoặc dừng lỗ ngay lập tức. Điều này đảm bảo lợi nhuận nhanh của chiến lược.

Phân tích lợi thế

Lợi thế lớn nhất của chiến lược này là thu lợi nhuận nhanh chóng với rủi ro tương đối nhỏ. Bằng cách đi vào thị trường nhanh chóng sau khi phá vỡ, nó tránh nhiều điều chỉnh vị trí. Và hiệu ứng tăng tốc do phá vỡ kênh mang lại cho phép lợi nhuận lớn trong một khoảng thời gian ngắn.

So với nắm giữ dài hạn, cơ chế mở và đóng hiệu quả như vậy có thể làm giảm đáng kể tỷ lệ nhàn rỗi của chiến lược và tiếp tục cải thiện hiệu quả vốn.

Phân tích rủi ro

Chiến lược này chủ yếu dựa trên các chỉ số trung bình động để xác định hướng xu hướng, với nguy cơ giảm và củng cố.

Ngoài ra, chiến lược phụ thuộc quá nhiều vào các chỉ số kỹ thuật mà không kết hợp phân tích sự kiện cơ bản và quan trọng.

Để kiểm soát rủi ro, chúng tôi có thể mở rộng phạm vi kênh phù hợp để giảm tần suất mở; hoặc thêm mô-đun quản lý vị trí để điều chỉnh động vị trí duy nhất dựa trên tổng vố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. Thêm mô-đun quản lý vị trí. Điều chỉnh động vị trí mở đơn dựa trên kích thước tài khoản để kiểm soát tỷ lệ thua lỗ đơn.

  2. Thêm lọc cơ bản Khi các chỉ số kỹ thuật kích hoạt tín hiệu mở, kiểm tra cơ bản của công ty và các sự kiện quan trọng để tránh bất thường.

  3. Kết hợp quản lý hồ sơ cổ phiếu. Thiết lập các quy tắc để điều chỉnh hồ sơ cổ phiếu một cách năng động. Chọn hồ sơ cổ phiếu tối ưu trong các giai đoạn khác nhau để cải thiện sự ổn định.

  4. Kết hợp các mô hình học máy. Sử dụng AI để dự đoán xu hướng và mức giá chính, giúp xác định phạm vi kênh và thời gian nhập cảnh.

Kết luận

Chiến lược này có tính chất đơn giản và hiệu quả. Nó xác định xu hướng chính với đường trung bình động, hướng động lực với nến Nhật Bản, đi vào với đột phá nhanh, và thoát ra với lợi nhuận nhanh và dừng lỗ. Nó cho phép lợi nhuận ngắn hạn phù hợp với giao dịch tần số cao. Nhưng nó cũng có nguy cơ rút và không chắc chắn. Tăng cường liên tục có thể làm cho chiến lược ổn định trong môi trường thị trường khác nhau.


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

//@version=2
strategy("Kana with S/R Strategy", title = "KANA with S/R", overlay=true)

len = input(20, minval=1, title="Length")
multiplier1 = input(1, minval=1, title="multiplier1")
multiplier2 = input(2, minval=1, title="multiplier2")
multiplier3 = input(3, minval=1, title="multiplier3") 
srTimeFrame = input(240, minval=1, title="Support Resistance TimeFrame")
useSR = input(true, type = bool, title="Use Support/Resistance")
tpPercent = input(0.5, type=float, title = "Take Profit Percent")
useTP = input(false, type=bool, title = "Use Take Profit")
tp = (close * tpPercent / 100) / syminfo.mintick

src = input(close, title="Source")
mid = sma(src, len)
plot(mid, title="SMA", color=blue)

trend = ema(close, 200)
plot(trend, title="Trend", color=green)


upper1 = mid + atr(200) * multiplier1
upper2 = mid + atr(200) * multiplier2
upper3 = mid + atr(200) * multiplier3

lower1 = mid - atr(200) * multiplier1
lower2 = mid - atr(200) * multiplier2
lower3 = mid - atr(200) * multiplier3

plot(upper1, color = orange)
plot(upper3, color = red)

plot(lower1, color = orange)
plot(lower3, color = red)

haClose = request.security(heikinashi(syminfo.tickerid), timeframe.period, close)
haOpen = request.security(heikinashi(syminfo.tickerid), timeframe.period, open)

resistance = request.security(syminfo.tickerid,tostring(srTimeFrame), high)
support  = request.security(syminfo.tickerid,tostring(srTimeFrame), low)
rsPos = (close - support[srTimeFrame]) / (resistance[srTimeFrame] - support[srTimeFrame])

MACD = ema(close, 120) - ema(close, 260)
aMACD = ema(MACD, 90)
hisline = MACD - aMACD

longCondition = (mid > trend) and (haOpen[1] < haClose[1]) and (mid > mid[1]) and (close < upper1) and hisline > 0 and (useSR == true ? (rsPos > 100) : true)
shortCondition = (mid < trend) and (haOpen[1] > haClose[1]) and (mid < mid[1]) and (close > lower1) and hisline < 0 and (useSR == true ? (rsPos < 0) : true)

longExit = (close > upper3 ) or (close < lower2)
shortExit = (close < lower3) or (close > upper2)

if (longCondition)
    strategy.entry("Long", strategy.long)
    if (useTP)
        strategy.exit("Exit Long", "Long", profit = tp)
        
if (longExit)
    strategy.close("Long")
    
if (shortCondition)
    strategy.entry("Short", strategy.short)
    if (useTP)
        strategy.exit("Exit Short", "Short", profit = tp)
    
if (shortExit)
    strategy.close("Short")

Thêm nữa