Chiến lược xác định xu hướng MyQuant là một chiến lược cho giao dịch Bitcoin hàng ngày. Nó xác định xu hướng thị trường bằng cách tính toán đường trung bình động và các phái sinh thứ nhất và thứ hai của giá, và đưa ra quyết định mua và bán phù hợp.
Chiến lược này đầu tiên tính toán Đường trung bình động thích nghi (ALMA) của giá và các dẫn xuất thứ nhất và thứ hai. dẫn xuất thứ nhất phản ánh tỷ lệ thay đổi giá, và dẫn xuất thứ hai phản ánh đường cong của giá. Sau đó đánh giá xu hướng hiện tại là tăng, giảm hoặc biến động dựa trên giá trị của các dẫn xuất thứ nhất và thứ hai. Kết hợp với các chỉ số cổ phiếu, nó xác định xem các điều kiện mua hoặc bán có được đáp ứng hay không.
Cụ thể, chiến lược tính toán các chỉ số sau:
Khi điều kiện mua được đáp ứng, nó tính toán số lượng cổ phiếu để mua dựa trên các tín hiệu từ Caused Accumulation / Distribution Bands và Caused Exposure Top and Bottom Finder.
Bằng cách kết hợp các đánh giá xu hướng và chỉ số, chiến lược này có thể xác định hiệu quả các điểm chuyển đổi trong xu hướng thị trường. Sử dụng các phái sinh thứ nhất và thứ hai của giá để xác định xu hướng tránh tác động của biến động giá và làm cho tín hiệu rõ ràng hơn. So với các chiến lược trung bình động thông thường, nó có những lợi thế như độ chính xác cao hơn.
Chiến lược này rất nhạy cảm với việc lựa chọn thời gian giao dịch và điều chỉnh tham số. Nếu thời gian được chọn không chính xác và các điểm chuyển đổi giá quan trọng không được bao phủ, chiến lược sẽ không hiệu quả. Nếu các tham số chỉ số được đặt không chính xác, các tín hiệu mua và bán sẽ bị ảnh hưởng nhiều hơn bởi tiếng ồn, do đó ảnh hưởng đến lợi nhuận chiến lược. Ngoài ra, các điều kiện dừng lỗ được đặt trước trong chiến lược cũng ảnh hưởng đến lợi nhuận cuối cùng.
Chiến lược có thể được tối ưu hóa thêm trong các khía cạnh sau:
Bằng cách tính toán các phái sinh thứ nhất và thứ hai của trung bình động thích nghi của giá, Chiến lược xác định xu hướng MyQuant có hiệu quả xác định xu hướng thị trường cho Bitcoin và đưa ra quyết định mua và bán tương ứng. Bằng cách kết hợp nhiều chỉ số để đánh giá, nó tránh nhiễu nhiễu quá mức với các tín hiệu. Với tối ưu hóa thời gian và tham số hơn nữa, hiệu suất của chiến lược này có thể được cải thiện hơn nữa.
/*backtest start: 2023-02-15 00:00:00 end: 2024-02-21 00:00:00 period: 1d basePeriod: 1h 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/ // © spacekadet17 // //@version=5 strategy(title="Trend Identifier Strategy", shorttitle="Trend Identifier Strategy", format=format.price, precision=4, overlay = false, initial_capital = 1000, pyramiding = 10, default_qty_type = strategy.percent_of_equity, default_qty_value = 100, commission_type = strategy.commission.percent, commission_value = 0.03) //start-end time startyear = input.int(2020,"start year") startmonth = input.int(1,"start month") startday = input.int(1,"start day") endyear = input.int(2025,"end year") endmonth = input.int(1,"end month") endday = input.int(1,"end day") timeEnd = time <= timestamp(syminfo.timezone,endyear,endmonth,endday,0,0) timeStart = time >= timestamp(syminfo.timezone,startyear,startmonth,startday,0,0) choosetime = input(false,"Choose Time Interval") condTime = (choosetime ? (timeStart and timeEnd) : true) // time frame? tfc = 1 if timeframe.isdaily tfc := 24 // indicators: price normalized alma, and its 1st and 2nd derivatives ema = ta.alma(close,140,1.1,6) dema = (ema-ema[1])/ema stodema = ta.ema(ta.ema(ta.stoch(dema,dema,dema,100),3),3) d2ema = ta.ema(dema-dema[1],5) stod2ema = ta.ema(ta.ema(ta.stoch(d2ema,d2ema,d2ema,100),3),3) ind = (close-ta.ema(close,120*24/tfc))/close heat = ta.ema(ta.stoch(ind,ind,ind,120*24/tfc),3) index = ta.ema(heat,7*24/tfc) //plot graph green = color.rgb(20,255,100) yellow = color.yellow red = color.red blue = color.rgb(20,120,255) tcolor = (dema>0) and (d2ema>0)? green : (dema>0) and (d2ema<0) ? yellow : (dema < 0) and (d2ema<0) ? red : (dema < 0) and (d2ema>0) ? blue : color.black demaema = ta.ema(dema,21) plot(demaema, color = tcolor) //strategy buy-sell conditions cond1a = strategy.position_size <= 0 cond1b = strategy.position_size > 0 if (condTime and cond1a and ( ( ((tcolor[1] == red and demaema<0.02) or (tcolor[1] == blue and demaema < 0.02) or (tcolor[1] == yellow and demaema>-0.02) ) and tcolor == green) or (tcolor[1] == red and tcolor == blue and demaema < -0.01) ) and index<85 and ind<0.4) strategy.entry("buy",strategy.long, (strategy.equity-strategy.position_size*close)/1/close) if (condTime and cond1b and ( (((tcolor[1] == yellow and demaema > -0.02) or (tcolor[1] == blue and demaema < 0.02) or (tcolor[1] == green and demaema < 0.02)) and tcolor == red) or (tcolor[1] == green and tcolor == yellow and demaema > 0.015) ) and index>15 and ind>-0.1) strategy.order("sell",strategy.short, strategy.position_size)