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


Ngày tạo: 2024-02-22 16:04:04 sửa đổi lần cuối: 2024-02-22 16:04:04
sao chép: 2 Số nhấp chuột: 633
1
tập trung vào
1617
Người theo dõi

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

Tổng quan

Chiến lược nhận diện xu hướng MyQuant là một chiến lược được sử dụng cho giao dịch Bitcoin hàng ngày. Chiến lược này nhận diện xu hướng thị trường bằng cách tính toán đường trung bình di chuyển của giá và hàm số đầu tiên và thứ hai của nó, và dựa trên đó đưa ra quyết định mua và bán.

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 di chuyển thích ứng của giá ((ALMA) và các dẫn đầu và dẫn thứ nhất của nó. Các dẫn đầu phản ánh tốc độ thay đổi giá, dẫn thứ hai phản ánh đường cong giá. Theo giá trị của các dẫn đầu đầu tiên và thứ hai, hiện tại đang ở trong xu hướng tăng, xu hướng giảm hoặc thời kỳ dao động.

Cụ thể, chiến lược tính toán các chỉ số sau:

  • ALMA: Đường trung bình chuyển động thích ứng của giá, độ dài 140, nhân số nhanh là 1.1, sigma là 6
  • dema: Nguyên tố một của ALMA
  • d2ema: hàm bậc một của dema, phản ánh hàm bậc hai của giá
  • index: chỉ số dao động của chỉ số dema
  • ind: Chỉ số lệch giá khỏi đường trung bình

Khi điều kiện mua được đáp ứng, số lượng mua được tính dựa trên tín hiệu CAUSED.Accumulation/Distribution Bands và Caused Exposure Top and Bottom Finder. Khi điều kiện bán được đáp ứng, bán toàn bộ vị trí.

Lợi thế chiến lược

Chiến lược này kết hợp xu hướng và đánh giá chỉ số, có thể xác định hiệu quả các điểm biến động của xu hướng thị trường. Sử dụng dẫn đầu và dẫn thứ hai của giá để đánh giá xu hướng, tránh bị ảnh hưởng bởi biến động giá, làm cho tín hiệu rõ ràng hơn.

Phân tích rủi ro

Chiến lược này rất nhạy cảm với lựa chọn khoảng thời gian giao dịch và điều chỉnh tham số. Nếu chọn khoảng thời gian không đúng, không bao gồm các điểm biến giá quan trọng, chiến lược sẽ không hiệu quả. Nếu thiết lập tham số chỉ số không đúng, tín hiệu mua bán sẽ bị ảnh hưởng bởi tiếng ồn nhiều hơn, ảnh hưởng đến lợi nhuận chiến lược. Ngoài ra, điều kiện dừng lỗ của chiến lược cũng sẽ ảnh hưởng đến lợi nhuận cuối cùng.

Hướng tối ưu hóa

Chiến lược này có thể được tối ưu hóa thêm bằng cách:

  1. Tối ưu hóa logic lựa chọn khoảng thời gian bằng cách chọn khoảng thời gian giao dịch phản hồi và đĩa thật một cách thông minh hơn.
  2. Các tham số tối ưu hóa chỉ số, chẳng hạn như điều chỉnh độ dài của ALMA và dema.
  3. Tăng khả năng đánh giá của các điều kiện dừng lỗ để kiểm soát tổn thất tối đa.
  4. Đánh giá hiệu quả của các loại tiền điện tử khác nhau và chọn ra loại có hiệu suất tốt nhất.

Tóm tắt

Chiến lược nhận diện xu hướng MyQuant có hiệu quả trong việc nhận diện xu hướng thị trường của Bitcoin và đưa ra quyết định mua và bán phù hợp bằng cách tính toán các chỉ số thứ nhất và thứ hai của giá. Chiến lược này kết hợp các chỉ số khác nhau để phán đoán và tránh các tín hiệu bị nhiễu bởi tiếng ồn quá mức.

Mã nguồn chiến lược
/*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)