Chiến lược theo dõi xu hướng vàng dựa trên đầu tư định kỳ

Tác giả:ChaoZhang, Ngày: 2023-10-31 15:09:22
Tags:

img

Tổng quan

Chiến lược này sử dụng các mô hình trung bình động để xác định hướng xu hướng thị trường. Khi một xu hướng tăng được xác định, nó sẽ định kỳ mở các vị trí dài với số tiền cố định để theo dõi xu hướng tăng của Golden Cross trên thị trường.

Chiến lược logic

Chiến lược chủ yếu dựa trên các nguyên tắc kỹ thuật sau:

  1. Sử dụng đường EMA để xác định hướng xu hướng thị trường Khi đường EMA nhanh vượt qua đường EMA chậm, nó được đánh giá là xu hướng tăng và chuẩn bị để vào các vị trí dài.

  2. Kết hợp chỉ số MACD để xác định thời gian nhập cảnh. Khi MACD chuyển từ dương sang âm, nó cho thấy sức mua bắt đầu suy yếu, vì vậy đã đến lúc nhập vào các vị trí dài.

  3. Giới hạn chỉ vào một lần mỗi tháng để tránh đuổi theo mức cao.

  4. Cho phép đặt ngày bắt đầu và ngày kết thúc để giới hạn thời gian backtest. Khi backtest kết thúc, chiến lược sẽ đóng tất cả các vị trí.

Đặc biệt, chiến lược đầu tiên tính toán đường EMA nhanh và đường EMA chậm, và phát hiện đường chéo vàng giữa chúng để xác định xu hướng thị trường. Đồng thời, nó tính toán chỉ số MACD để xác định điểm nhập cụ thể. Khi cả hai tiêu chí được đáp ứng, một tín hiệu dài được tạo ra. Theo quy tắc chỉ nhập một lần mỗi tháng, các lệnh nhập thực tế được xác định. Số vốn cho mỗi mục có thể được đặt trước. Khi kiểm tra ngược kết thúc, chiến lược sẽ tích cực đóng tất cả các vị trí.

Ưu điểm

Đây là một xu hướng đơn giản và trực tiếp theo chiến lược với những lợi thế sau:

  1. Sử dụng đường EMA để xác định xu hướng chính là đơn giản và thực tế.

  2. Chỉ số MACD có thể xác định điểm chuyển đổi khi sức mua bắt đầu suy yếu tương đối chính xác, làm cho các mục nhập an toàn hơn.

  3. Việc hạn chế theo đuổi xu hướng tăng chỉ một lần mỗi tháng có thể tránh theo đuổi mức cao nhất và tiêu diệt xu hướng tăng trong thị trường tăng.

  4. Cho phép tùy chỉnh số tiền nhập mỗi tháng cung cấp tính linh hoạt trong kích thước vị trí.

  5. Backtest có thể được sử dụng để đánh giá hiệu suất chiến lược bằng cách đặt ngày bắt đầu và ngày kết thúc.

  6. Nó sẽ đóng tất cả các vị trí tự động khi kiểm tra lại kết thúc, tránh các vị trí còn lại khó khăn.

Rủi ro và giảm thiểu

Có một số rủi ro tiềm ẩn của chiến lược này:

  1. Xác định xu hướng thông qua đường trung bình động có thể bỏ lỡ cơ hội trong thời gian giảm tạm thời hoặc phản ứng chậm đối với sự đảo ngược xu hướng. Thời gian có thể được rút ngắn hoặc thêm các chỉ số.

  2. Chỉ tham gia một lần mỗi tháng có thể bỏ lỡ cơ hội tham gia tốt hơn. Xem xét nới lỏng tần suất hoặc thêm một mục khác khi phá vỡ mức cao gần đây.

  3. Có những rủi ro của sự phù hợp đường cong. Nhiều không gian điều chỉnh tham số nên được cho phép và độ bền nên được kiểm tra trên các thị trường và thời gian.

  4. Có những rủi ro theo đuổi đà tăng và mua quá mức. Số tiền nhập cảnh hàng tháng nên được kiểm soát để tránh các vị trí quá lớn.

Cơ hội gia tăng

Xu hướng đầu tư định kỳ này theo chiến lược có thể được mở rộng và tăng cường hơn nữa từ các khía cạnh sau:

  1. Thêm logic dừng lỗ để tích cực cắt giảm lỗ khi một mô hình đảo ngược giảm xuất hiện.

  2. Xem xét thêm một mua khác khi biểu đồ MACD cho thấy sự phân kỳ tăng để có được nhiều tiếp xúc hơn với xu hướng tăng.

  3. Giới thiệu so sánh tháng hiện tại của tháng mới so với tháng trước để đánh giá sức mạnh động lực.

  4. Thêm vị trí kích thước logic. Số tiền nhập hàng tháng có thể được thực hiện thích nghi dựa trên tỷ lệ phần trăm thay vì giá trị cố định.

  5. Đánh giá tác động của các kết hợp MA khác nhau và các tham số MACD. Tìm bộ tham số tối ưu.

  6. Thêm một lệnh dừng lỗ theo sau theo giá ở một khoảng cách nhất định sau khi đạt đến mức cao mới, cho phép lợi nhuận chạy.

Tóm lại

Chiến lược này đại diện cho một cách tiếp cận xu hướng đơn giản và sạch sẽ bằng cách sử dụng đầu tư định kỳ và đường trung bình động. Nó dễ hiểu và thực hiện, phục vụ như một điểm khởi đầu tốt để học giao dịch thuật toán. Nhưng trong giao dịch trực tiếp, kích thước vị trí cần được kiểm soát cẩn thận. Chiến lược nên được nâng cao hơn nữa để thích nghi với điều kiện thị trường phức tạp.


/*backtest
start: 2023-01-01 00:00:00
end: 2023-10-30 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/
// © runescapeyttanic

//@version=4
// strategy("Buy and Hold entry finder Strategy",pyramiding=10000, overlay=true,initial_capital=0,default_qty_type=strategy.cash,default_qty_value=1000,currency = currency.EUR,commission_type=strategy.commission.cash_per_order,commission_value=0)

//INPUTS##################################################################################################################

maxEmaDistance = input(title="Maximum EMA Distance", type=input.float, step=0.01, defval=50000)
emalength = input(title="EMA Length", type=input.integer,defval=200)

// Make input options that configure backtest date range
startDate = input(title="Start Date", type=input.integer,
     defval=1, minval=1, maxval=31)
startMonth = input(title="Start Month", type=input.integer,
     defval=1, minval=1, maxval=12)
startYear = input(title="Start Year", type=input.integer,
     defval=2020, minval=1800, maxval=2100)

endDate = input(title="End Date", type=input.integer,
     defval=12, minval=1, maxval=31)
endMonth = input(title="End Month", type=input.integer,
     defval=02, minval=1, maxval=12)
endYear = input(title="End Year", type=input.integer,
     defval=2021, minval=1800, maxval=2100)

endDate1=endDate-1
//starttag
//startmonat
//MACD########################################################################################################################

fast_length=12
slow_length=26
src=close
col_macd=#0094ff
fast_ma = ema(src, fast_length)
slow_ma = ema(src, slow_length)
macd = fast_ma - slow_ma

//EMA Distance CALC########################################################################################################

ma1 =ema(close,emalength)
distFromMean = close - ma1

inDateRange = true

longCondition = (distFromMean<=maxEmaDistance and distFromMean>=distFromMean[1] and macd<=0 and inDateRange)
longnow=false

if(longCondition and strategy.position_size == 0)
    strategy.entry("My Long Entry Id", strategy.long)
    longnow:=true

if(longCondition and strategy.position_size > 0)
    longnow:=true
    

if(longCondition and strategy.position_size > 0 and month>valuewhen(longnow, month ,1) or longCondition and strategy.position_size > 0 and year>valuewhen(longnow, year ,1) and inDateRange)
    strategy.entry("My Long Entry Id", strategy.long)

plotchar(minute, "Minuten", "", location = location.top)

plotchar(hour, "Stunden", "", location = location.top)    

plotchar(dayofmonth, "Tage", "", location = location.top)

plotchar(month, "Monat", "", location = location.top)

plotchar(year, "Jahr", "", location = location.top)

plotchar(strategy.position_size, "Positionen", "", location = location.top)

plotchar(longCondition, "Long Condition", "", location = location.top)

if true
    strategy.close_all()

//#########################################################################################################################

plotArrow = if (distFromMean<=maxEmaDistance and distFromMean>=distFromMean[1] and macd<=0)
    1
else
    0
    
plotarrow(series=plotArrow)



Thêm nữa