Chiến lược kết hợp tối ưu hóa tỷ lệ tín hiệu trên nhiễu đảo ngược sốc kép


Ngày tạo: 2023-11-01 16:57:13 sửa đổi lần cuối: 2023-11-01 16:57:13
sao chép: 3 Số nhấp chuột: 599
1
tập trung vào
1617
Người theo dõi

Chiến lược kết hợp tối ưu hóa tỷ lệ tín hiệu trên nhiễu đảo ngược sốc kép

Tổng quan

Chiến lược này là sự kết hợp giữa chiến lược đảo ngược hai lần chấn động và chiến lược tối ưu hóa tỷ lệ tín hiệu để tạo ra một chiến lược giao dịch mạnh mẽ hơn và ổn định hơn. Chiến lược này nhằm phát ra tín hiệu giao dịch chính xác hơn tại các điểm đảo ngược xu hướng.

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

Chiến lược đảo ngược hai lần chấn động bằng cách tính toán giá K nhanh và chậm trong 14 ngày gần nhất để xác định xem giá có bị đảo ngược hai ngày giao dịch liên tiếp hay không. Nếu sự đảo ngược xảy ra, K nhanh dưới 50 là tín hiệu mua và K nhanh trên 50 là tín hiệu bán.

Chiến lược tối ưu hóa tỷ lệ tín hiệu tiếng ồn là tính toán chỉ số tỷ lệ tín hiệu tiếng ồn trong 21 ngày gần đây nhất và làm mịn bằng trung bình di chuyển đơn giản 29 ngày. Khi tỷ lệ tín hiệu tiếng ồn đi trên trung bình di chuyển của nó là tín hiệu bán và đi xuống là tín hiệu mua.

Cuối cùng, chiến lược này chỉ thực hiện các hoạt động mua hoặc bán tương ứng khi chiến lược đảo ngược chấn động kép và chiến lược tối ưu hóa tỷ lệ nhiễu tín hiệu phát ra cùng một tín hiệu mua hoặc bán.

Phân tích lợi thế chiến lược

  1. Kết hợp nhiều chiến lược để phát tín hiệu giao dịch chính xác hơn, tránh các tín hiệu giả của một chiến lược đơn lẻ.

  2. Chiến lược đảo ngược va chạm kép có thể nắm bắt các điểm đảo ngược xu hướng, chiến lược tối ưu hóa tỷ lệ tín hiệu tiếng ồn có thể lọc các tín hiệu giả, kết hợp với nhau có thể giao dịch chính xác tại các điểm đảo ngược.

  3. Các tham số tính toán được tối ưu hóa, chẳng hạn như tham số stoch nhanh chậm 14 ngày, chu kỳ tỷ lệ tiếng ồn 21 ngày, có thể phản ánh xu hướng gần đây mà không bị ảnh hưởng bởi quá nhiều tiếng ồn.

  4. Việc sử dụng tín hiệu xác nhận kép có thể làm giảm đáng kể rủi ro giao dịch và giảm thiểu tổn thất không cần thiết.

Phân tích rủi ro chiến lược

  1. Tín hiệu đảo ngược có thể bị trễ, không thể mua ở mức thấp tuyệt đối, bán ở mức cao. Bạn có thể giảm độ trễ bằng cách điều chỉnh tham số.

  2. Xác nhận tín hiệu kép có thể bỏ lỡ một số cơ hội giao dịch, điều kiện xác nhận có thể được nới lỏng thích hợp, nhưng rủi ro cũng tăng lên.

  3. Các tham số tỷ lệ tín hiệu tiếng ồn cần được tối ưu hóa, nếu thiết lập chu kỳ không đúng, có thể bỏ lỡ tín hiệu quan trọng hoặc phát tín hiệu sai.

  4. Cần giám sát nhiều chỉ số cùng một lúc, tăng sự phức tạp của chiến lược, tối ưu hóa mã và tài nguyên tính toán cần được xem xét.

Hướng tối ưu hóa chiến lược

  1. Kiểm tra nhiều hơn các chỉ số kết hợp, tìm kiếm các tín hiệu kết hợp tốt hơn. Như MACD, RSI, v.v.

  2. Tối ưu hóa các tham số của chiến lược đảo ngược cú sốc kép để tín hiệu đảo ngược chính xác và kịp thời hơn.

  3. Tối ưu hóa chu kỳ tham số của tỷ lệ tiếng ồn, tìm điểm cân bằng tốt nhất.

  4. Thêm chiến lược dừng lỗ để kiểm soát tổn thất có thể xảy ra trong một giao dịch.

  5. Cân nhắc tự động tối ưu hóa các tham số bằng các phương pháp như học máy, để chiến lược có thể thích ứng hơn.

Tóm tắt

Chiến lược này cung cấp tín hiệu giao dịch ổn định tại điểm đảo chiều xu hướng bằng cách kết hợp chiến lược đảo ngược hai lần rung và chiến lược tối ưu hóa tỷ lệ tiếng ồn tín hiệu. Các tham số được tối ưu hóa có thể làm giảm đáng kể khả năng tín hiệu giả, và áp dụng nguyên tắc xác nhận kép có thể làm giảm rủi ro giao dịch. Chiến lược có thể tiếp tục tối ưu hóa tham số chỉ số, thêm các biện pháp dừng lỗ để có hiệu quả tốt hơn.

Mã nguồn chiến lược
/*backtest
start: 2023-10-01 00:00:00
end: 2023-10-31 00:00:00
period: 1h
basePeriod: 15m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=4
////////////////////////////////////////////////////////////
//  Copyright by HPotter v1.0 196/01/2021
// 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
// The signal-to-noise (S/N) ratio. 
// And Simple Moving Average.
//
// 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

SignalToNoise(length) =>
    StN = 0.0
    for i = 1 to length-1
        StN := StN + (1/close[i])/length
    StN := -10*log(StN)

StN(length,Smooth) =>
    pos = 0.0
    StN = SignalToNoise(length)
    SMAStN = sma(StN, Smooth)
    pos := iff(SMAStN[0] > StN[0] , -1,
    	     iff(SMAStN[0] < StN[0], 1, 0)) 
    pos

strategy(title="Combo Backtest 123 Reversal & Signal To Noise", shorttitle="Combo", overlay = true)
Length = input(14, minval=1)
KSmoothing = input(1, minval=1)
DLength = input(3, minval=1)
Level = input(50, minval=1)
//-------------------------
lengthStN = input(title="Days", type=input.integer, defval=21, minval=2)
SmoothStN =  input(title="Smooth", type=input.integer, defval=29, minval=2)
reverse = input(false, title="Trade reverse")
posReversal123 = Reversal123(Length, KSmoothing, DLength, Level)
posStN = StN(lengthStN,SmoothStN)
pos = iff(posReversal123 == 1 and posStN == 1 , 1,
	   iff(posReversal123 == -1 and posStN == -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 )