Tài nguyên đang được tải lên... tải...

Chiến lược giao dịch định lượng Gandalf Mean Reversal

Tác giả:ChaoZhang, Ngày: 2023-10-30 10:27:40
Tags:

img

Tổng quan

Chiến lược giao dịch định lượng Gandalf là một chiến lược đảo ngược trung bình dựa trên đường giá trung bình. Nó xác định hướng xu hướng hiện tại bằng cách tính toán giá trung bình trọng số, đường giá trung bình và giá trung bình cơ thể, để tìm các điểm vào tối ưu. Khi một sự đảo ngược xu hướng được phát hiện, nó sẽ nhanh chóng cắt giảm lỗ và thoát ra. Chiến lược kết hợp các ý tưởng theo xu hướng và các chiến lược đảo ngược xu hướng.

Chiến lược logic

Logic cốt lõi của chiến lược Gandalf là so sánh mối quan hệ quy mô giữa giá trung bình trọng số, đường giá trung bình và giá trung bình cơ thể, để đánh giá hướng và sức mạnh xu hướng hiện tại.

Cụ thể, nó tính toán các giá sau:

  • Giá trung bình cân nhắc: (Giá cao nhất + Giá thấp nhất + Giá đóng + Giá đóng) / 4
  • Đường giá trung bình: (Giá cao nhất + Giá thấp nhất) / 2
  • Giá trung bình cơ thể: (Giá mở + Giá đóng) / 2

Khi nhập vào một vị trí, nó so sánh mối quan hệ quy mô giữa giá trung bình trọng số, đường giá trung bình và giá trung bình cơ thể của hai thanh cuối cùng, để xác định xem nó có phù hợp với các đặc điểm của xu hướng bắt đầu hay không.

Ví dụ, nếu giá trung bình cân nhắc thấp hơn đường giá trung bình, và giá trung bình cơ thể cũng thấp hơn giá trung bình cân nhắc, nó cho thấy giá đang giảm, tạo cơ hội mua ngắn.

Khi dừng lỗ, nó tiếp tục so sánh mối quan hệ quy mô giữa các giá này, để đánh giá xem có dấu hiệu đảo ngược xu hướng hay không. Nếu giá trung bình trọng số trên mức giá trung bình cơ thể và đường giá trung bình dưới mức giá trung bình trọng số, nó cho thấy sự đảo ngược xu hướng và nên cắt lỗ ngay lập tức.

Bằng cách so sánh mối quan hệ giá lớn, chiến lược Gandalf nhận ra sự đánh giá và theo dõi xu hướng. Nó có thể tìm ra thời gian nhập khẩu tối ưu, và cũng nhanh chóng phát hiện sự đảo ngược xu hướng để ngăn chặn lỗ.

Ưu điểm

Chiến lược Gandalf có những lợi thế sau:

  1. Sử dụng đường giá trung bình để xác định hướng xu hướng có thể lọc hiệu quả tiếng ồn thị trường và khóa xu hướng chính.

  2. Điều kiện đầu vào kết hợp nhiều so sánh giá có thể xác định một cách đáng tin cậy hơn sự khởi đầu của một xu hướng.

  3. Điều kiện dừng lỗ cũng sử dụng so sánh giá để đánh giá sự đảo ngược xu hướng, cho phép dừng lỗ và kiểm soát rủi ro nhanh chóng.

  4. Việc chấp nhận lệnh nhập cảnh có điều kiện có thể được vào với giá lý tưởng.

  5. Lập trước thời gian lấy lợi nhuận tối đa và giới hạn thời gian giữ có thể khóa lợi nhuận và kiểm soát rủi ro thương mại duy nhất.

  6. Cấu trúc mã là rõ ràng và đơn giản, dễ hiểu và sửa đổi.

  7. Các thông số có thể được điều chỉnh dựa trên sở thích rủi ro cá nhân, dễ dàng tối ưu hóa.

  8. Áp dụng cho các sản phẩm xu hướng, có thể nắm bắt lợi nhuận xu hướng.

Tóm lại, chiến lược Gandalf sử dụng đường trung bình để xác định xu hướng, thiết lập các điều kiện lấy lợi nhuận và dừng lỗ, và có thể kiểm soát rủi ro hiệu quả trong khi theo dõi xu hướng, làm cho nó trở thành một chiến lược theo xu hướng đáng tin cậy.

Rủi ro

Chiến lược Gandalf cũng có một số rủi ro cần lưu ý:

  1. Là một chiến lược theo xu hướng, nó sẽ tạo ra nhiều tổn thất nhỏ hơn khi xu hướng không rõ ràng hoặc thường xuyên đảo ngược.

  2. Không thể xác định hiệu quả các điểm đảo ngược xu hướng, có thể dẫn đến tổn thất mở rộng.

  3. Có xu hướng bị mắc kẹt trong thị trường giới hạn.

  4. Tùy thuộc vào cài đặt tham số, các tham số cần điều chỉnh cho các sản phẩm khác nhau.

  5. Một hướng nắm giữ, không thể lợi nhuận từ xu hướng ngược lại.

  6. Tỷ lệ thất bại cao của các đơn đặt hàng có điều kiện, có thể chờ đợi lâu để vào.

Các biện pháp quản lý rủi ro:

  1. Sử dụng kích thước vị trí nhỏ, nhập phần, để kiểm soát lỗ đơn.

  2. Thiết lập đường dừng lỗ, dừng lỗ nhanh hoặc áp dụng dừng lỗ di chuyển hoặc dừng lỗ đi sau.

  3. Tối ưu hóa các thông số phù hợp với sản phẩm hiện tại. Sử dụng các chỉ số khác để hỗ trợ đánh giá xu hướng.

  4. Xem xét Martingale để chi phí thấp hơn cơ sở.

  5. Giao dịch các sản phẩm có xu hướng rõ ràng, sự tự tin lợi nhuận cao hơn.

  6. Nới lỏng các tiêu chí nhập cảnh một cách thích hợp để cải thiện xác suất nhập cảnh.

Hướng dẫn cải thiện

Chiến lược Gandalf cũng có thể được cải thiện trong các khía cạnh sau:

  1. Xây dựng các chỉ số đánh giá xu hướng để giúp xác định thời gian đảo ngược xu hướng, chẳng hạn như thêm MACD, Bollinger Bands vv.

  2. Thêm các chức năng tối ưu hóa riêng biệt để tự động tối ưu hóa các thông số và thích nghi với nhiều sản phẩm hơn.

  3. Tăng các thuật toán học máy, đào tạo mạng thần kinh hoặc mô hình SVM trên dữ liệu lịch sử để đánh giá xu hướng.

  4. Thêm nhiều phương pháp thu lợi nhuận, như chuyển lợi nhuận, lợi nhuận parabolic.

  5. Kết hợp các sản phẩm liên quan cho chiến lược giao dịch chênh lệch hoặc chiến lược thống kê.

  6. Thêm dự đoán trạng thái dựa trên Mô hình Markov ẩn để đánh giá chế độ thị trường.

  7. Xây dựng các chiến lược kết hợp, như kết hợp với các chiến lược trung bình động để quản lý nhiều chiến lược.

  8. Khám phá tối ưu hóa các kết hợp chiến lược giao dịch để tìm cân nặng danh mục đầu tư tối ưu.

Tóm lại, chiến lược Gandalf có thể được mở rộng và tối ưu hóa trong nhiều chiều như đánh giá xu hướng, tối ưu hóa tự động, quản lý rủi ro, để làm cho chiến lược mạnh mẽ và đáng tin cậy hơn.

Kết luận

Chiến lược định lượng Gandalf là một chiến lược đơn giản nhưng hiệu quả dựa trên so sánh giá để xác định xu hướng. Nó kết hợp các ý tưởng theo xu hướng và dừng lỗ nhanh, và có thể kiểm soát rủi ro một cách hiệu quả. Logic chiến lược rõ ràng và dễ hiểu, các tham số có thể được điều chỉnh dựa trên sở thích rủi ro cá nhân. Nhưng nó cũng có một số biến động lợi nhuận và rủi ro nắm giữ, đòi hỏi tối ưu hóa và quản lý thích hợp. Nhìn chung, chiến lược Gandalf là một chiến lược theo xu hướng đáng tin cậy, dễ hiểu và tối ưu hóa, phù hợp để theo đuổi lợi nhuận ổn định.


/*backtest
start: 2023-10-22 00:00:00
end: 2023-10-29 00:00:00
period: 1h
basePeriod: 15m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=3

// The GandalfProjectResearchSystem strategy, as discussed in
// “System Development Using Artificial Intelligence”
// by Domenico D’Errico and Giovanni Trombetta
strategy("Gandalf Project Research System", overlay=true)

// Inputs
Quantity = input(0, title="Quantity (0 to auto calc)")
Single_Trade_Money = input(10000, minval=1, title="Money to spend on single trade")
MaxProfitCloses = input(6, minval=1, title="Max Profit Close")
MaxBars = input(8, minval=1, title="Max Total Bars")
Enter_Gap = input(-0.08, title="Distance from low price to place entry limit")
AltExit = input(true, title="Use Alt Exit")

// Calculate Order Quantity
Ncon = Single_Trade_Money / close

// Misc Variables
src = close
BarsSinceEntry = 0
MaxProfitCount = 0
MedBodyPrice = (open + close) / 2.0
Weighted = (high + low + close + close) / 4.0
Median = (high + low) / 2.0

// Enter Conditions
Cond00 = strategy.position_size == 0
Cond01 = ((Weighted[1] < Median[1] and Median[2] <= Weighted[1] and MedBodyPrice[2] <= Weighted[3]) or (Weighted[1] < Median[3] and MedBodyPrice[0] < Median[2] and MedBodyPrice[1] < MedBodyPrice[2]))
Entry01 = Cond00 and Cond01

// Update Exit Variables
BarsSinceEntry := Cond00 ? 0 : nz(BarsSinceEntry[1]) + 1
MaxProfitCount := Cond00 ? 0 : (close > strategy.position_avg_price and BarsSinceEntry > 1) ? nz(MaxProfitCount[1]) + 1 : nz(MaxProfitCount[1])

// Exit Conditions
eCond01 = BarsSinceEntry - 1 >= MaxBars
eCond02 = MaxProfitCount >= MaxProfitCloses
eCond03 = ((Weighted[1] < MedBodyPrice[1] and Median[2] == MedBodyPrice[3] and MedBodyPrice[1] <= MedBodyPrice[4]) or (Weighted[2] < MedBodyPrice[0] and Median[4] <= Weighted[3] and MedBodyPrice[1] <= Weighted[1]) or (Weighted[2] < MedBodyPrice[0] and Median[4] <= Weighted[3] and MedBodyPrice[1] <= Weighted[1]))
eCond04 = AltExit ? true : close - strategy.position_avg_price < 0
Exit01 = not Cond00 and (eCond01 or eCond02 or (eCond03 and eCond04))

// Entries
strategy.entry(id="L1", long=true, limit=low + Enter_Gap, qty=(Quantity > 0 ? Quantity : Ncon), when=Entry01)
 
// Exits
strategy.close("L1", Exit01)


Thêm nữa