Chiến lược xác định xu hướng MyQuant

Tác giả:ChaoZhang, Ngày: 2024-02-22 16:04:04
Tags:

img

Tổng quan

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.

Nguyên tắc chiến lược

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:

  • ALMA: Đường trung bình động thích nghi của giá, chiều dài 140, nhân tố nhanh 1.1, sigma 6
  • dema: Tiền phái sinh thứ nhất của ALMA
  • d2ema: Tiết xuất thứ nhất của dema, phản ánh phái sinh thứ hai của giá
  • chỉ số: chỉ số dao động của chỉ số dema
  • ind: Chỉ số lệch của giá so với trung bình động

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.

Ưu điểm của Chiến lược

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.

Phân tích rủi ro

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.

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

Chiến lược có thể được tối ưu hóa thêm trong các khía cạnh sau:

  1. Tối ưu hóa logic để chọn các khoảng thời gian, thông qua lựa chọn thông minh hơn của các khoảng thời gian backtest và giao dịch trực tiếp.
  2. Tối ưu hóa các thông số chỉ số, chẳng hạn như điều chỉnh chiều dài của ALMA và dema vv.
  3. Thêm các phán quyết về điều kiện dừng lỗ để kiểm soát tổn thất tối đa.
  4. Đánh giá các hiệu ứng trên các loại tiền điện tử khác nhau và chọn những loại có hiệu suất tốt nhất.

Kết luận

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)


Thêm nữa