Harami Chiến lược giá đóng cửa

Tác giả:ChaoZhang, Ngày: 2023-11-28 16:50:34
Tags:

img

Tổng quan

Chiến lược giá đóng Harami là một chiến lược giao dịch định lượng dựa trên các mô hình nến.

Chiến lược logic

Lý thuyết cốt lõi là: Khi ngọn nến hiện tại là một ngọn nến màu đỏ và ngọn nến trước đó là một ngọn nến màu xanh lá cây, và giá thấp nhất của nến hiện tại cao hơn giá thấp nhất của nến trước đó, giá cao nhất của nến hiện tại thấp hơn giá cao nhất của nến trước đó, mô hình Harami được hình thành. Điều này có nghĩa là đà tăng đang mất sức mạnh và đó là một tín hiệu để bán. Ngược lại, mô hình Harami với hai nến đảo ngược tạo thành một tín hiệu mua.

Khi cơ thể lớn hơn một nửa đường stop loss, stop loss được kích hoạt.

Phân tích lợi thế

Những lợi thế chính của chiến lược giá đóng Harami là:

  1. Phán quyết đơn giản và hợp lý dựa trên mô hình nến, dễ hiểu và thực hiện.
  2. Có thể xác định sự đột phá với khối lượng giao dịch tương đối nhỏ. Khi phạm vi tăng thu hẹp xuống để tạo thành một mô hình Harami, đà tăng đang mất sức mạnh và nó là một điểm bán tốt.
  3. Có một cơ chế dừng lỗ rõ ràng để kiểm soát rủi ro.

Phân tích rủi ro

Ngoài ra còn có một số rủi ro cho chiến lược này:

  1. Tần số giám sát thấp, có thể bỏ lỡ các điểm vào và ra tốt nhất.
  2. Nến tăng / giảm giả có thể tạo ra tín hiệu sai. Cần được sử dụng với khối lượng giao dịch và các bộ lọc khác.
  3. Phán quyết chỉ dựa trên các mô hình nến mà không xem xét các chỉ số kỹ thuật và cơ bản khác, dẫn đến một số mù lòa.

Để giảm thiểu những rủi ro này, kết hợp với khối lượng giao dịch, đường trung bình động và các chỉ số kỹ thuật khác được khuyến cáo, để đưa ra những đánh giá toàn diện hơn về xu hướng thị trường.

Hướng dẫn tối ưu hóa

Chiến lược giá đóng cửa Harami cũng có thể được cải thiện từ các khía cạnh sau:

  1. Thêm kiểm tra tình trạng khối lượng giao dịch.
  2. Điều chỉnh các tiêu chí dừng lỗ một cách năng động dựa trên biến động thị trường và ưu tiên rủi ro.
  3. Phân tích nhiều khung thời gian. Xác định các điểm bán gần mức hỗ trợ chính trong các khung thời gian cao hơn khi các mô hình Harami hình thành.
  4. Kết hợp các chỉ số kỹ thuật khác như trung bình động để xác định xu hướng thị trường tổng thể hoặc các chỉ số hàng đầu để dự báo các điểm nhập và xuất.

Tóm lại

Chiến lược giá đóng Harami dễ hiểu và thực hiện để tạo ra các tín hiệu mua và bán nhất định dựa trên các mẫu nến. Nhưng nó cũng có một số hạn chế như tạo ra các tín hiệu sai và mù. Những vấn đề này cũng chỉ ra các hướng cho việc tối ưu hóa hơn nữa, bằng cách áp dụng các phán đoán toàn diện hơn với khối lượng giao dịch, nhiều khung thời gian và các chỉ số kỹ thuật khác. Điều này có thể cải thiện đáng kể hiệu quả của chiến lược.


/*backtest
start: 2023-11-20 00:00:00
end: 2023-11-27 00:00:00
period: 10m
basePeriod: 1m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//Noro
//2018

//@version=3
strategy(title = "Noro's Harami Strategy v1.0", shorttitle = "Harami str 1.0", overlay = true, default_qty_type = strategy.percent_of_equity, default_qty_value = 100, pyramiding = 0)

//Settings
needlong = input(true, defval = true, title = "Long")
needshort = input(false, defval = false, title = "Short")

fromyear = input(1900, defval = 1900, minval = 1900, maxval = 2100, title = "From Year")
toyear = input(2100, defval = 2100, minval = 1900, maxval = 2100, title = "To Year")
frommonth = input(01, defval = 01, minval = 01, maxval = 12, title = "From Month")
tomonth = input(12, defval = 12, minval = 01, maxval = 12, title = "To Month")
fromday = input(01, defval = 01, minval = 01, maxval = 31, title = "From day")
today = input(31, defval = 31, minval = 01, maxval = 31, title = "To day")

//Body
body = abs(close - open)
abody = sma(body, 10)

//MinMax Bars
min = min(close, open)
max = max(close, open)
bar = close > open ? 1 : close < open ? -1 : 0

//Signals
up = bar == 1 and bar[1] == -1 and min > min[1] and max < max[1]
dn = bar == -1 and bar[1] == 1 and min > min[1] and max < max[1]
exit = ((strategy.position_size > 0 and bar == 1) or (strategy.position_size < 0 and bar == -1)) and body > abody / 2

//Trading
if up
    if strategy.position_size < 0
        strategy.close_all()
        
    strategy.entry("Long", strategy.long, needlong == false ? 0 : na, when=(time > timestamp(fromyear, frommonth, fromday, 00, 00) and time < timestamp(toyear, tomonth, today, 23, 59)))

if dn
    if strategy.position_size > 0
        strategy.close_all()
        
    strategy.entry("Short", strategy.short, needshort == false ? 0 : na, when=(time > timestamp(fromyear, frommonth, fromday, 00, 00) and time < timestamp(toyear, tomonth, today, 23, 59)))
    
if time > timestamp(toyear, tomonth, today, 23, 59) or exit
    strategy.close_all()

Thêm nữa