Trung tâm trọng lực kiểm tra lại chiến lược giao dịch

Tác giả:ChaoZhang, Ngày: 2023-12-12 16:56:51
Tags:

img

Tổng quan

Trung tâm trọng lực backtesting chiến lược giao dịch là một chiến lược giao dịch dựa trên trung bình động. Nó tính toán trung tâm của giá, tức là vị trí của trung tâm trọng lực, và xây dựng các kênh giá như hành lang cho báo giá tài sản. Chiến lược có thể thay đổi từ dài đến ngắn trong cài đặt đầu vào.

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

Chiến lược này tính toán vị trí trung tâm trọng lực thông qua hàm hồi quy tuyến tính. Cụ thể, nó tính toán giá trị hồi quy tuyến tính của giá đóng trong khoảng thời gian dài, đó là trung tâm của giá. Các kênh giá sau đó được xây dựng bằng cách di chuyển lên và xuống % trên cơ sở này. Các ranh giới trên và dưới của kênh giá phục vụ như các tín hiệu dài và ngắn tương ứng. Khi giá vượt qua đường ray trên, đi dài; khi giá vượt qua đường ray dưới, đi ngắn. Các thông số SignalLine được sử dụng để chọn sử dụng kênh đầu tiên hoặc các đường ray trên và dưới của kênh thứ hai như các tín hiệu giao dịch. Các thông số ngược được sử dụng để đảo ngược dài và ngắn.

Phân tích lợi thế

Đây là một chiến lược thoát rất đơn giản với những lợi thế chính sau:

  1. Ý tưởng rõ ràng và dễ hiểu và thực hiện.
  2. Kết quả backtest tốt với khả thi thực tế nhất định.
  3. Cài đặt tham số linh hoạt để thích nghi với môi trường thị trường khác nhau.
  4. Giao dịch đảo ngược có thể cấu hình, phù hợp với hoạt động hai chiều.

Phân tích rủi ro

Chiến lược này cũng có một số rủi ro:

  1. Có thể có rủi ro quá mức trong quá trình backtest. Các thông số cần được tối ưu hóa lại cho giao dịch trực tiếp.
  2. Những vụ đào thoát thất bại có thể dẫn đến tổn thất lớn.
  3. Tần suất giao dịch có thể tương đối cao, vì vậy tỷ lệ sử dụng vốn cần phải được kiểm soát.

Rủi ro có thể được kiểm soát bằng cách điều chỉnh các tham số như Bands, Length, vv. Stop loss cũng có thể được thiết lập để hạn chế lỗ tối đa.

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

Chiến lược có thể được tối ưu hóa thêm theo các cách sau:

  1. Kết hợp với các chỉ số xu hướng để lọc tín hiệu và tránh giao dịch chống lại xu hướng.
  2. Thêm cơ chế dừng lỗ.
  3. Tối ưu hóa cài đặt tham số để tăng tỷ lệ lợi nhuận.
  4. Thêm điều khiển vị trí để giảm rủi ro.

Tóm lại

Chiến lược giao dịch kiểm tra lại trung tâm trọng lực là một chiến lược đột phá đơn giản. Nó có logic rõ ràng, khả năng thực hiện tốt và cài đặt tham số linh hoạt. Đồng thời, cũng có một số rủi ro cần được tối ưu hóa và kiểm soát đúng cách. Chiến lược này phù hợp như một chiến lược cơ bản cho giao dịch trực tiếp và tối ưu hóa, và cũng rất phù hợp cho người mới bắt đầu học.


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

//@version=2
////////////////////////////////////////////////////////////
//  Copyright by HPotter v1.0 15/03/2018
// The indicator is based on moving averages. On the basis of these, the 
// "center" of the price is calculated, and price channels are also constructed, 
// which act as corridors for the asset quotations.
//
// You can change long to short in the Input Settings
// WARNING:
//  - For purpose educate only
//  - This script to change bars colors.
////////////////////////////////////////////////////////////
strategy(title="Center Of Gravity Backtest", shorttitle="CFO", overlay = true)
Length = input(20, minval=1)
m = input(5, minval=0)
Percent = input(1, minval=0)
SignalLine = input(1, minval=1, maxval = 2, title = "Trade from line (1 or 2)")
reverse = input(false, title="Trade reverse")
xLG = linreg(close, Length, m)
xLG1r = xLG + ((close * Percent) / 100)
xLG1s = xLG - ((close * Percent) / 100)
xLG2r = xLG + ((close * Percent) / 100) * 2
xLG2s = xLG - ((close * Percent) / 100) * 2
xSignalR = iff(SignalLine == 1, xLG1r, xLG2r)
xSignalS = iff(SignalLine == 1, xLG1s, xLG2s)
pos = iff(close > xSignalR, 1,
       iff(close < xSignalS, -1, nz(pos[1], 0))) 
possig = iff(reverse and pos == 1, -1,
          iff(reverse and pos == -1, 1, pos))	   
if (possig == 1) 
    strategy.entry("Long", strategy.long)
if (possig == -1)
    strategy.entry("Short", strategy.short)	   	    
barcolor(possig == -1 ? red: possig == 1 ? green : blue ) 
plot(xLG, color=blue, title="CFO")
plot(xLG1r, color=green, title="LG1r")
plot(xLG2r, color=green, title="LG2r")
plot(xLG1s, color=red, title="LG1s")
plot(xLG2s, color=red, title="LG2s")

Thêm nữa