Chiến lược này dựa trên tính toán duy nhất của giá cao mới hai năm và trung bình động của cổ phiếu. Nó tạo ra một tín hiệu mua khi giá cổ phiếu giảm xuống mức trung bình động theo cấp số nhân 13 ngày sau khi đạt mức cao nhất trong hai năm.
Logic cốt lõi của chiến lược này dựa trên các tính toán độc đáo sau:
Khi giá cổ phiếu đạt mức cao mới trong hai năm qua, nó tạo thành một đỉnh ngắn hạn. Đây là mức giá quan trọng.
Khi giá rút khỏi mức cao mới này và kéo trở lại mức trung bình động theo cấp số nhân 13 ngày, nó tạo ra một cơ hội mua tốt.
Ngoài ra, khi tín hiệu mua được kích hoạt, giá cổ phiếu phải nằm trong phạm vi 10% của mức cao nhất trong hai năm, không quá xa. Nó cũng cần ở dưới đường 13 ngày và trên đường 21 ngày để đảm bảo thời gian thích hợp.
Đối với các vị trí mở, nếu giá phá vỡ 5% dưới đường MA 21 ngày hoặc giảm 20% so với mức cao nhất trong hai năm, vị trí sẽ được dừng để khóa lợi nhuận.
Đây là một chiến lược rút lui dài hạn với những lợi thế sau:
Giá cao độc đáo hai năm có thể xác định hiệu quả các cơ hội đảo ngược xu hướng tiềm năng.
Đường EMA 13 ngày phục vụ như bộ lọc đầu vào để tránh chấn động và xác định động lực mạnh hơn.
Các tính toán độc đáo tạo ra các tín hiệu dựa trên hành động giá, tránh can thiệp chủ quan.
Stop loss hợp lý cho phép khóa hầu hết lợi nhuận.
Ngoài ra còn có một số rủi ro chủ yếu như sau:
Thị trường có thể trải qua sự sụt giảm sâu, không thể dừng lại kịp thời.
Các khoảng cách lớn qua đêm có thể ngăn chặn stop loss hoàn hảo. Do đó tỷ lệ stop loss cần phải được mở rộng để thích nghi.
Đường 13 ngày có thể không lọc các hợp nhất tốt, tạo ra các tín hiệu sai quá mức.
Giá cao mới có thể không hoạt động tốt để xác định những thay đổi xu hướng.
Có chỗ cho việc tối ưu hóa thêm:
Kết hợp các công cụ khác để đánh giá các điều kiện thị trường tổng thể, tránh các vị trí không cần thiết.
Thêm các chỉ số động lực để tránh tốt hơn các phạm vi whipsaw.
Tối ưu hóa các thông số trung bình động để nắm bắt tốt hơn các mô hình giá.
Sử dụng máy học để tối ưu hóa động tham số cao hai năm để linh hoạt hơn.
Tóm lại, đây là một chiến lược đột phá dài hạn độc đáo, chìa khóa là mức giá cao hai năm và đường EMA 13 ngày phục vụ như bộ lọc nhập cảnh.
/*backtest start: 2023-12-26 00:00:00 end: 2024-01-25 00:00:00 period: 1h basePeriod: 15m exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}] */ // This source code is subject to the terms of the Mozilla Public License 2.0 at https://mozilla.org/MPL/2.0/ // © Part Timer //This script accepts from and to date parameter for backtesting. //This script generates white arrow for each buying signal //@version=4 strategy("AMRS_LongOnly_PartTimer", overlay = true) //i_endTime = input(defval = timestamp("02 Jun 2021 15:30 +0000"), title = "End Time", type=input.time) StartYear=input(defval = 2000, title ="Start Year", type=input.integer) StartMonth=input(defval = 01, title ="Start Month", type=input.integer) StartDate=input(defval = 01, title ="Start Date", type=input.integer) endYear=input(defval = 2021, title ="End Year", type=input.integer) endMonth=input(defval = 06, title ="End Month", type=input.integer) endDate=input(defval = 03, title ="End Date", type=input.integer) ema11=ema(close,11) ema13=ema(close,13) ema21=ema(close,21) afterStartDate = true //g=bar_index==1 //ath()=> //a=0.0 //a:=g ? high : high>a[1] ? high:a[1] //a = security(syminfo.tickerid, 'M', ath(),lookahead=barmerge.lookahead_on) newHigh = (high > highest(high,504)[1]) //plot down arrows whenever it's a new high plotshape(newHigh, style=shape.triangleup, location=location.abovebar, color=color.green, size=size.tiny) b=highest(high,504)[1] VarChk=((b-ema13)/b)*100 TrigLow = (low <= ema13) and (low >= ema21) and (VarChk <= 10) plotshape(TrigLow, style=shape.triangleup, location=location.belowbar, color=color.white, size=size.tiny) ExitPrice=(ema21 - (ema21*0.05)) DrawPrice=(b - (b*0.20)) stopprice=0.0 if (close <= ExitPrice) stopprice := ExitPrice if (close <= DrawPrice) stopprice := DrawPrice if (TrigLow and afterStartDate) strategy.entry("Long", strategy.long) strategy.exit("exit","Long", stop=stopprice) //beforeEndDate = (time < i_endTime) beforeEndDate = (time >= timestamp(syminfo.timezone,endYear, endMonth, endDate, 0, 0)) if (beforeEndDate) strategy.close_all()