Chiến lược giao dịch định lượng tích hợp đảo ngược và đường phân định tương lai

Tác giả:ChaoZhang, Ngày: 2023-12-08 12:00:35
Tags:

img

Tổng quan

Chiến lược này tích hợp chiến lược đảo ngược 123 và chiến lược đường phân định tương lai (FLD) để thực hiện một chiến lược giao dịch định lượng vào hoặc ra khỏi các vị trí khi cả hai chiến lược tạo ra tín hiệu đồng thời.

Nguyên tắc

123 Chiến lược đảo ngược

Chiến lược đảo ngược 123 bắt nguồn từ cuốn sách How I Tripped My Money in the Futures Market. Nó đi dài khi giá đóng cho thấy các mô hình đảo ngược trong hai ngày liên tục và stochastic chậm 9 ngày dưới 50; Nó đi ngắn khi giá đóng cho thấy các mô hình đảo ngược trong hai ngày liên tục và stochastic nhanh 9 ngày trên 50.

Các tuyến đường trong tương lai của chiến lược phân giới

Chiến lược đường phân định tương lai (FLD) là một chiến lược theo xu hướng dựa trên sự dao động định kỳ của giá. Các đường FLD được vẽ bằng cách di chuyển giá trung bình, cao hoặc thấp khoảng nửa chu kỳ vào tương lai. Các tín hiệu giao dịch được tạo ra khi giá vượt qua các đường FLD.

Phân tích lợi thế

Chiến lược này kết hợp các chiến lược đảo ngược và theo xu hướng, nắm bắt cả cơ hội đảo ngược ngắn hạn và hướng xu hướng trung dài hạn trên nhiều khung thời gian cho giao dịch định lượng. Các yếu tố đảo ngược cung cấp cơ hội kiếm lợi nhuận ngắn hạn trong khi phần theo xu hướng đảm bảo giao dịch tổng thể phù hợp với xu hướng, kiểm soát hiệu quả rủi ro giao dịch. Hơn nữa, bản chất thích nghi của FLD cũng tăng cường sự ổn định của chiến lược.

Phân tích rủi ro

Các rủi ro chính của chiến lược này đến từ sự đột phá sai của các tín hiệu đảo ngược và lỗi trong các phán đoán đường FLD. Đối với các tham số trước đây, các tham số có thể được điều chỉnh để xác nhận các tín hiệu đảo ngược hoặc thêm các chỉ số phụ trợ khác để cải thiện độ chính xác. Đối với các tham số sau, các tham số cần được tối ưu hóa để đảm bảo FLD mô tả chu kỳ thị trường chính xác hơn. Ngoài ra, các lỗi của FLD khi sự đảo ngược xu hướng lớn xảy ra cũng nên được xem xét.

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

  1. Cải thiện chiến lược đảo ngược bằng cách thêm các chỉ số khác vào các tín hiệu lọc và giảm khả năng phá vỡ sai
  2. So sánh các thông số FLD khác nhau để mô tả tốt hơn các mô hình chu kỳ
  3. Thêm logic dừng lỗ để kiểm soát rủi ro lỗ đơn
  4. Hiệu quả của các tham số thử nghiệm trên các sản phẩm khác nhau

Kết luận

Chiến lược này kết hợp các khái niệm đảo ngược và theo xu hướng cho lợi nhuận ổn định trong khung thời gian trung bình ngắn hạn.


/*backtest
start: 2022-12-01 00:00:00
end: 2023-12-07 00:00:00
period: 1d
basePeriod: 1h
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=4
////////////////////////////////////////////////////////////
//  Copyright by HPotter v1.0 28/08/2020
// This is combo strategies for get a cumulative signal. 
//
// First strategy
// This System was created from the Book "How I Tripled My Money In The 
// Futures Market" by Ulf Jensen, Page 183. This is reverse type of strategies.
// The strategy buys at market, if close price is higher than the previous close 
// during 2 days and the meaning of 9-days Stochastic Slow Oscillator is lower than 50. 
// The strategy sells at market, if close price is lower than the previous close price 
// during 2 days and the meaning of 9-days Stochastic Fast Oscillator is higher than 50.
//
// Second strategy
//  An FLD is a line that is plotted on the same scale as the price and is in fact the 
//  price itself displaced to the right (into the future) by (approximately) half the 
//  wavelength of the cycle for which the FLD is plotted. There are three FLD's that can be 
//  plotted for each cycle:
//    An FLD based on the median price.
//    An FLD based on the high price.
//    An FLD based on the low price.
//
// WARNING:
// - For purpose educate only
// - This script to change bars colors.
////////////////////////////////////////////////////////////
Reversal123(Length, KSmoothing, DLength, Level) =>
    vFast = sma(stoch(close, high, low, Length), KSmoothing) 
    vSlow = sma(vFast, DLength)
    pos = 0.0
    pos := iff(close[2] < close[1] and close > close[1] and vFast < vSlow and vFast > Level, 1,
	         iff(close[2] > close[1] and close < close[1] and vFast > vSlow and vFast < Level, -1, nz(pos[1], 0))) 
	pos


FLD(Period,src) =>
    pos = 0
    pos := iff(src[Period] < close , 1,
             iff(src[Period] > close, -1, nz(pos[1], 0))) 
    pos

strategy(title="Combo Backtest 123 Reversal & FLD's - Future Lines of Demarcation", shorttitle="Combo", overlay = true)
Length = input(15, minval=1)
KSmoothing = input(1, minval=1)
DLength = input(3, minval=1)
Level = input(50, minval=1)
//-------------------------
Period = input(title="Period", defval=40)
src = input(title="Source", type=input.source, defval=close)
reverse = input(false, title="Trade reverse")
posReversal123 = Reversal123(Length, KSmoothing, DLength, Level)
posFLD = FLD(Period,src)
pos = iff(posReversal123 == 1 and posFLD == 1 , 1,
	   iff(posReversal123 == -1 and posFLD == -1, -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)	 
if (possig == 0) 
    strategy.close_all()
barcolor(possig == -1 ? #b50404: possig == 1 ? #079605 : #0536b3 )

Thêm nữa