
Chiến lược này dựa trên đường A-K của Hải Dương ở cấp độ ngày, kết hợp với phân tích động lực ở các cấp chu kỳ khác nhau, động lực xác định lực hỗ trợ đằng sau giá cổ phiếu hiện tại, để đánh giá thời gian để xây dựng và giữ vị trí.
Tính toán giá đóng cửa của các đường K của sóng biển ở các cấp chu kỳ khác nhau. Đây là cơ sở để tính năng động tiếp theo.
Các giá mở và giá đóng của đường trăng và đường ngày được tính theo từng chu kỳ lịch sử khác nhau. Điều này phản ánh sức mạnh động lực của giá cổ phiếu hiện tại so với giá lịch sử.
Điểm động năng của đường trăng và đường mặt trời được tính trung bình, lọc ra một phần tiếng ồn, để có được chỉ số động năng của đường trăng và đường mặt trời ổn định.
Theo mức tăng giảm động lực trung bình, có thể tính được sức mạnh hỗ trợ thị trường được phản ánh bởi giá cổ phiếu hiện tại, tức là giá đã loại bỏ tác động của biến động thị trường. Giá này có thể được coi là ngưỡng động lực của giá cổ phiếu thực tế hiện tại.
Khi giá đóng cửa cao hơn ngưỡng năng lượng động, thực hiện thêm đặt hàng hàng tháng. Khi giá đóng cửa thấp hơn ngưỡng năng lượng động, dừng lỗ.
Ưu điểm lớn nhất của chiến lược này là nó không đơn giản là theo dõi giá cổ phiếu, mà dựa trên động lực đằng sau giá cổ phiếu để tính toán sức mạnh hỗ trợ thực sự, do đó tạo ra vị thế và dừng lỗ. Điều này có thể lọc hiệu quả tiếng ồn của tình hình biến động và khóa cơ hội tăng ổn định.
Ngoài ra, tất cả dữ liệu mà chiến lược dựa trên đều đến từ đường K-A-H của biển. Chính đường K đặc biệt này có thể làm giảm vấn đề phụ thuộc quá nhiều vào chu kỳ liên kết. Vì vậy, sự ổn định của chiến lược sẽ tốt hơn các chiến lược đường K khác.
Rủi ro lớn nhất của chiến lược này là tính năng động dựa trên giá lịch sử. Nếu cơ bản của công ty và tình hình thị trường thay đổi đáng kể, giá lịch sử sẽ bị giảm đại diện, dẫn đến sai lệch trong việc lập vị thế và dừng lỗ.
Ngoài ra, chiến lược sử dụng chu kỳ hàng tháng và hàng ngày. Điều này có nghĩa là chiến lược không thực tế và không thể phản ứng nhanh với những thay đổi đột ngột của thị trường. Điều này sẽ dẫn đến rủi ro dừng lỗ khi thị trường biến động.
Để giảm thiểu những rủi ro này, bạn có thể xem xét việc đưa ra dữ liệu tần số cao hơn, và phản hồi trực tiếp về cơ bản của công ty. hoặc kết hợp với các tín hiệu giao dịch chủ quan hơn khác để chấp nhận và tối ưu hóa.
Chiến lược này có thể được tiếp tục tối ưu hóa trong một số khía cạnh:
Bản thân tuyến K của Hải Phòng cũng có thể được tối ưu hóa hơn nữa, chẳng hạn như điều chỉnh trọng lượng.
Thêm nhiều dữ liệu về các chu kỳ khác nhau, xây dựng cơ chế xếp hạng năng lượng động cơ trung bình, tăng sự ổn định.
Tiếp theo, chúng tôi sẽ giới thiệu các dữ liệu có tần số cao hơn, chẳng hạn như dữ liệu theo giờ trong ngày, để cải thiện tính thời gian thực của chiến lược.
Kết hợp thông tin như báo cáo kết quả kinh doanh, tin đồn tái tổ chức, phản hồi về các yếu tố cơ bản của công ty.
Có thể xem xét các cơ chế ngăn chặn và tăng kho hàng ngày hoặc hàng tuần dựa trên việc xây dựng kho hàng tháng.
Chiến lược này là rất ổn định tổng thể, kiểm soát rủi ro hiệu quả bằng cách theo dõi động lực. Ưu điểm lớn nhất của nó là sử dụng động lực đằng sau giá cổ phiếu để xác định thực tế, chứ không chỉ đơn giản là theo dõi giá cổ phiếu.
/*backtest
start: 2023-01-12 00:00:00
end: 2024-01-18 00:00:00
period: 1d
basePeriod: 1h
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/
// This Pine Script™ code is subject to the terms of the Mozilla Public License 2.0 at https://mozilla.org/MPL/2.0/
// © FrancoPassuello
//@version=5
strategy("Heiken Ashi ADM", overlay=true)
haClose = (open + high + low + close) / 4
// prevHaOpen = line.new(na, na, na, na, width = 1)
haOpen = (open[1] + close[1]) / 2
// line.set_xy1(prevHaOpen, bar_index[1], nz(haOpen[1]))
// line.set_xy2(prevHaOpen, bar_index, haClose[1])
[monopen, _1monopen, _2monopen, _3monopen, _4monopen, _5monopen, _6monopen] = request.security(syminfo.tickerid, "M", [haOpen, haOpen[1], haOpen[2], haOpen[3], haOpen[4], haOpen[5], haOpen[6]] , barmerge.gaps_off, barmerge.lookahead_on)
[monclose, _1monclose, _3monclose, _6monclose] = request.security(syminfo.tickerid, "M", [haClose, haClose[1], haClose[3], haClose[6]] , barmerge.gaps_off, barmerge.lookahead_on)
[dayclose1, _21dayclose, _63dayclose, _126dayclose, dayclose] = request.security(syminfo.tickerid, "1D", [haClose[1], haClose[21], haClose[63], haClose[126], haClose], barmerge.gaps_off, barmerge.lookahead_on)
[dayopen1, _21dayopen, _63dayopen, _126dayopen] = request.security(syminfo.tickerid, "1D", [haOpen[1], haOpen[21], haOpen[63], haOpen[126]], barmerge.gaps_off, barmerge.lookahead_on)
get_rate_of_return(price1, price2) =>
return_ = (price1/price2 -1)*100
return_
m0 = get_rate_of_return(monclose, monopen)
m1 = get_rate_of_return(_1monclose, _1monopen)
m2 = get_rate_of_return(monclose, _2monopen)
m3 = get_rate_of_return(_1monclose, _3monopen)
m4 = get_rate_of_return(monclose, _4monopen)
m5 = get_rate_of_return(monclose, _5monopen)
m6 = get_rate_of_return(_1monclose, _6monopen)
MS = (m1 + m3 + m6)/100
CS = (m0 + m2 + m5)/100
d1 = get_rate_of_return(dayclose1, _21dayopen)
d2 = get_rate_of_return(dayclose1, _63dayopen)
d3 = get_rate_of_return(dayclose1, _126dayopen)
DS = (d1 + d2 + d3)/100
//Last (DAILY)
lastd_s_avg1 = DS/3
lastd_Approximate1 = dayclose1*(1-lastd_s_avg1)
last_approx1_d21 = lastd_Approximate1 / _21dayopen-1
last_approx1_d63 = lastd_Approximate1 / _63dayopen-1
last_approx1_d126 = lastd_Approximate1 / _126dayopen-1
lastd_s_avg2 = (last_approx1_d21 + last_approx1_d63 + last_approx1_d126) / 3
lastd_approximate2 = (dayclose1)*(1-(lastd_s_avg1 + lastd_s_avg2))
lastd_price = lastd_approximate2
//plot(lastd_price,color = color.rgb(255, 255, 255, 14), title = "Last momentum threshold")
//Last
last_s_avg1 = MS/3
last_Approximate1 = _1monclose*(1-last_s_avg1)
last_approx1_m1 = last_Approximate1 / _1monopen-1
last_approx1_m3 = last_Approximate1 / _3monopen-1
last_approx1_m6 = last_Approximate1 / _6monopen-1
last_s_avg2 = (last_approx1_m1 + last_approx1_m3 + last_approx1_m6) / 3
last_approximate2 = (_1monclose)*(1-(last_s_avg1 + last_s_avg2))
last_price = last_approximate2
Scoring_price = _1monclose*(1-CS)
plot(last_price,color = color.rgb(255, 255, 255, 14), title = "Last momentum threshold")
//plot(Scoring_price,color = color.rgb(234, 0, 255, 14), title = "Last momentum threshold")
//Long based on month close and being the first trade of the month.
var int lastClosedMonth = -1
limit_longCondition = _1monclose > last_approximate2 and (lastClosedMonth == -1 or month(time) != lastClosedMonth)
// Long based on day close and being the first trade of the month.
limit_Dlongcondition = dayclose1 > lastd_approximate2 and (lastClosedMonth == -1 or month(time) != lastClosedMonth)
// Close trade based on day close
DCloseLongCondition = dayclose1<lastd_approximate2
//Old standard Trading rules
longCondition = _1monclose > Scoring_price
MCloseLongCondition = _1monclose<Scoring_price
shortCondition = CS < 0
if (longCondition)
strategy.entry("Long", strategy.long)
if (strategy.position_size > 0 and MCloseLongCondition)
strategy.close("Long")
lastClosedMonth := month(time)