Chiến lược giao dịch đảo ngược hai yếu tố

Tác giả:ChaoZhang, Ngày: 2023-12-27 17:22:31
Tags:

img

Tổng quan

Chiến lược này đầu tiên sử dụng các tín hiệu đảo ngược giá để giao dịch, sau đó kết hợp các chỉ số lọc xu hướng để sàng lọc, thực hiện hệ thống điều khiển bằng hai yếu tố.

Chiến lược logic

Phần đảo ngược giá sử dụng hệ thống đảo ngược 123. Hệ thống này được lấy từ cuốn sách How I Tripled My Money In The Futures Market của Ulf Jensen, trang 183.

  1. Việc đóng cửa trước đây thấp hơn mức đóng cửa 2 ngày trước.
  2. Đóng hiện tại cao hơn so với đóng trước đó
  3. 9 ngày chậm stochastic thấp hơn 50

Khi các điều kiện trên được đáp ứng, một tín hiệu mua được tạo ra.

  1. Khóa trước cao hơn so với khóa trước 2 ngày.
  2. Khóa hiện tại thấp hơn so với khóa trước đó
  3. Stochastic nhanh 9 ngày cao hơn 50

Một tín hiệu bán được tạo ra.

Mục tiêu của hệ thống đảo ngược này là để nắm bắt sự đảo ngược ngắn hạn khi giá hình thành đảo ngược tạm thời.

Phần lọc xu hướng sử dụng hệ thống Extracting The Trend (ETT). Hệ thống ETT đánh giá hướng xu hướng thông qua sự kết hợp của bộ lọc và trung bình động. Trong chiến lược này, chức năng chính của nó là xác minh các tín hiệu đảo ngược giá, tránh hoạt động đảo ngược khi không có xu hướng rõ ràng.

Chiến lược này kết hợp các tín hiệu giao dịch từ cả hai chiến lược phụ, cuối cùng thực hiện một hệ thống giao dịch đảo ngược dựa trên hai yếu tố.

Phân tích lợi thế

Chiến lược giao dịch đảo ngược hai yếu tố tích hợp các lợi thế của mỗi chiến lược phụ thông qua sự kết hợp:

  1. 123 hệ thống đảo ngược có thể nắm bắt cơ hội đảo ngược ngắn hạn
  2. Hệ thống ETT có thể lọc hiệu quả các kịch bản không có xu hướng rõ ràng, tránh rủi ro giao dịch đảo ngược
  3. Động cơ hai yếu tố cải thiện chất lượng tín hiệu

Do đó, chiến lược này có thể lọc hiệu quả các tín hiệu đảo ngược không hợp lệ. Với đánh giá xu hướng chính xác, nó thực hiện hoạt động đảo ngược, do đó cải thiện hiệu suất tổng thể của hệ thống giao dịch.

Phân tích rủi ro

Chiến lược giao dịch đảo ngược hai yếu tố có những rủi ro chính sau:

  1. Nguy cơ giá tiếp tục xu hướng ban đầu sau khi đảo ngược.
  2. Nguy cơ từ sai lầm phán đoán của hệ thống ETT. Hệ thống ETT cũng có sai lầm phán đoán, dẫn đến tổn thất trong giao dịch đảo ngược.
  3. Nguy cơ vốn có của cơ chế điều khiển hai yếu tố. Mặc dù ít có khả năng, vẫn có khả năng cả hai tín hiệu giao dịch sẽ đưa ra phán đoán sai cùng một lúc, làm tăng cường tổn thất.

Để giảm các rủi ro trên, các cân nhắc bao gồm điều chỉnh các tham số biên dịch, tối ưu hóa các chiến lược đảo ngược & ETT để đánh giá tốt hơn, cũng như mở rộng phạm vi dừng lỗ phù hợp cho giao dịch đảo ngược.

Tối ưu hóa

Chiến lược này có thể được tối ưu hóa trong các khía cạnh sau:

  1. Tối ưu hóa các thông số hệ thống đảo ngược để kết hợp các thông số tốt hơn
  2. Tối ưu hóa các thông số hệ thống ETT để có độ chính xác phán đoán cao hơn
  3. Hãy thử kết hợp các chiến lược đảo ngược giá khác với ETT
  4. Thêm cơ chế điều khiển kích thước vị trí
  5. Lái xe với nhiều yếu tố hơn

Với logic chiến lược và các tín hiệu giao dịch chính không thay đổi, kết quả backtest tốt hơn có thể được mong đợi thông qua tối ưu hóa tham số và kết hợp.

Kết luận

Chiến lược giao dịch đảo ngược hai yếu tố kết hợp hữu cơ các tín hiệu đảo ngược giá và lọc xu hướng cho hệ thống đánh giá đa yếu tố. So với các chiến lược tín hiệu đảo ngược duy nhất, chiến lược này có thể nắm bắt tốt hơn sự đảo ngược giá ngắn hạn trong khi tránh các tín hiệu sai khi không có xu hướng rõ ràng, do đó cải thiện chất lượng tín hiệu. Hiệu suất tốt hơn có thể được mong đợi thông qua tối ưu hóa tham số và thêm các yếu tố khác.


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

//@version=4
////////////////////////////////////////////////////////////
//  Copyright by HPotter v1.0 03/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
// Extracting The Trend
// The related article is copyrighted material from Stocks & Commodities Mar 2010
//
// 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


ETT(Length,Delta,Trigger) =>
    pos = 0
    xBandpassFilter = 0.0
    xPrice = hl2
    beta = cos(3.1415 * (360 / Length) / 180)
    gamma = 1 / cos(3.1415 * (720 * Delta / Length) / 180)
    alpha = gamma - sqrt(gamma * gamma - 1)
    xBandpassFilter := 0.5 * (1 - alpha) * (xPrice - xPrice[2]) + beta * (1 + alpha) * nz(xBandpassFilter[1]) - alpha * nz(xBandpassFilter[2])
    xMean = sma(xBandpassFilter, 2 * Length)
    pos :=iff(xMean > Trigger, 1,
	       iff(xMean < Trigger, -1, nz(pos[1], 0)))     
    pos

strategy(title="Combo Backtest 123 Reversal & Extracting The Trend", shorttitle="Combo", overlay = true)
Length = input(14, minval=1)
KSmoothing = input(1, minval=1)
DLength = input(3, minval=1)
Level = input(50, minval=1)
//-------------------------
LengthETT = input(20, minval=1)
Delta = input(0.5)
Trigger = input(0)
reverse = input(false, title="Trade reverse")
posReversal123 = Reversal123(Length, KSmoothing, DLength, Level)
posETT = ETT(LengthETT,Delta,Trigger)
pos = iff(posReversal123 == 1 and posETT == 1 , 1,
	   iff(posReversal123 == -1 and posETT == -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