Chiến lược giao dịch chu kỳ hai yếu tố

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

img

Tổng quan

Chiến lược giao dịch chu kỳ hai yếu tố là một chiến lược giao dịch định lượng. Nó kết hợp hai loại chỉ số kỹ thuật khác nhau để tạo ra tín hiệu giao dịch và theo dõi xu hướng thị trường cho lợi nhuận vượt quá.

Ưu điểm của chiến lược này là nó có thể tìm ra các cơ hội giao dịch bằng cách kết hợp các yếu tố khác nhau và xác nhận kép có thể cải thiện độ tin cậy tín hiệu và giảm khả năng giao dịch sai. Đồng thời, chiến lược tận dụng tối đa các lợi thế của giao dịch chu kỳ, cụ thể là dừng lỗ kịp thời và đảo ngược các vị trí mở, có thể kiểm soát rủi ro một cách hiệu quả.

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

Chiến lược bao gồm hai phần:

  1. 123 Chiến lược đảo ngược Chiến lược này xuất phát từ cuốn sách How I Tripled My Money in the Futures Market của Ulf Jensen. Logic giao dịch của nó là: khi giá đóng cao hơn giá đóng trước đó trong hai ngày liên tiếp, và đường K chậm 9 ngày thấp hơn 50, đi dài; khi giá đóng thấp hơn giá đóng trước đó trong hai ngày liên tiếp, và đường K nhanh 9 ngày cao hơn 50, đi ngắn.

  2. Chiến lược tìm lại hỗ trợ/kháng cự
    Chiến lược này tạo ra tín hiệu bằng cách đánh giá giá liệu giá có vượt qua mức hỗ trợ hoặc kháng cự chính hay không. Khi giá vượt qua mức giá cao nhất trong ngày giao dịch trước đó, nó chỉ ra tín hiệu tăng giá; khi giá vượt qua mức giá thấp nhất trong ngày giao dịch trước đó, nó chỉ ra tín hiệu giảm giá.

Bằng cách kết hợp các tín hiệu của hai chiến lược trên, mở các vị trí khi cả hai tín hiệu đều phù hợp, nếu không sẽ mở các vị trí. Một chế độ mở ngược cũng được thiết lập để dừng lỗ và đảo ngược giao dịch kịp thời khi thị trường thay đổi, để đạt được hoạt động chu kỳ của quỹ.

Phân tích lợi thế

Chiến lược giao dịch chu kỳ hai yếu tố này có những lợi thế sau:

  1. Thiết kế đa yếu tố đảm bảo độ tin cậy tín hiệu cao. Chiến lược đảo ngược 123 và chiến lược hỗ trợ / kháng cự xác minh lẫn nhau và có thể giảm các tín hiệu sai.

  2. Cơ chế chu kỳ cho phép chiến lược thích nghi với những thay đổi của thị trường và kiểm soát hiệu quả các lỗ một mặt.

  3. Việc sử dụng chỉ số Stochastics 9 ngày có thể lọc tiếng ồn thị trường và tạo ra các tín hiệu rõ ràng hơn.

  4. Nó ít rủi ro hơn so với các chiến lược một yếu tố và có lượng rút nhỏ hơn. Nhiều yếu tố có thể tạo thành một lực lượng kết hợp để hạn chế tác động của biến động phi lý đối với chiến lược.

Phân tích rủi ro

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

  1. Thật khó để nắm bắt các xu hướng tốt trong các thị trường bên, và việc dừng lỗ thường xuyên và mở ngược sẽ làm tăng chi phí giao dịch.

  2. Các thiết lập tham số của Stochastics sẽ ảnh hưởng đến chất lượng tín hiệu. Các tham số không chính xác có thể dẫn đến sai vị trí tín hiệu và suy giảm chất lượng. Các tham số cần phải được thử nghiệm và tối ưu hóa nhiều lần.

  3. Mặc dù thiết kế hai yếu tố cải thiện chất lượng tín hiệu, nó cũng làm tăng tác động của thị trường tiếng ồn trên chiến lược.

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

Chúng ta có thể tối ưu hóa thêm chiến lược này từ các khía cạnh sau:

  1. Kiểm tra Stochastics của các chu kỳ khác nhau để tìm ra sự kết hợp các tham số tối ưu để loại bỏ tiếng ồn thị trường

  2. Thêm một bộ lọc xu hướng để lọc các thị trường bên ngoài và chỉ mở các vị trí trong xu hướng rõ ràng

  3. Tối ưu hóa thuật toán thiết lập đường stop loss để giảm chi phí giao dịch trong khi đảm bảo stop loss hiệu quả

  4. Kiểm tra các kết hợp khác nhau của các yếu tố để tìm các kết hợp yếu tố với các tín hiệu giao dịch rõ ràng hơn và các chiến lược ổn định hơn

Tóm lại

Thông qua thiết kế hai yếu tố, chiến lược này đã đạt được chất lượng tín hiệu cao hơn và lợi nhuận điều chỉnh rủi ro. Đồng thời, việc sử dụng giao dịch chu kỳ kiểm soát hiệu quả các lỗ trong thị trường đơn phương. Chiến lược đã đạt được sự cân bằng tốt giữa rủi ro và lợi nhuận.


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

//@version=4
////////////////////////////////////////////////////////////
//  Copyright by HPotter v1.0 13/11/2019
// 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
// Cueing Off Support And Resistance Levels, by Thom Hartle 
// modified by HPotter for trade signals.
// The related article is copyrighted material from Stocks & Commodities.
//
// 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

COSRL(SigVal) =>
    pos = 0.0
    xLow = low
    xHigh = high
    xHighD = security(syminfo.tickerid,"W", high[1])
    xLowD  = security(syminfo.tickerid,"W", low[1])
    sigpre1 = iff(xHigh <= xLowD, -1,
                 iff(xLow >= xHighD, 1, nz(pos[1], 0))) 
    sigpre2 = iff( xHigh <= xHighD, -1,
                 iff(xLow >= xLowD, 1, nz(pos[1], 0))) 
    pos := SigVal ? sigpre1 : sigpre2
    pos

strategy(title="Combo Backtest 123 Reversal & Cueing Off Support And Resistance Levels", shorttitle="Combo", overlay = true)
Length = input(14, minval=1)
KSmoothing = input(1, minval=1)
DLength = input(3, minval=1)
Level = input(50, minval=1)
//-------------------------
SigVal = input(true, title="To Line \ From Line")
reverse = input(false, title="Trade reverse")
posReversal123 = Reversal123(Length, KSmoothing, DLength, Level)
posCOSRL = COSRL(SigVal)
pos = iff(posReversal123 == 1 and posCOSRL == 1 , 1,
	   iff(posReversal123 == -1 and posCOSRL == -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