Chiến lược đảo ngược định lượng tín hiệu kép


Ngày tạo: 2023-12-01 14:14:46 sửa đổi lần cuối: 2023-12-01 14:14:46
sao chép: 1 Số nhấp chuột: 631
1
tập trung vào
1619
Người theo dõi

Chiến lược đảo ngược định lượng tín hiệu kép

Tổng quan

Chiến lược đảo ngược định lượng hai tín hiệu có thể nhận được tín hiệu giao dịch chính xác hơn bằng cách kết hợp chiến lược đảo ngược 123 và chỉ số dao động gia tốc để đánh giá xu hướng đảo ngược. Chiến lược này được sử dụng chủ yếu cho giao dịch đường ngắn và đường trung của chỉ số chứng khoán, ngoại hối, kim loại quý và các loại năng lượng.

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

Chiến lược này bao gồm hai đoạn logic mã độc lập.

Phần đầu tiên là chiến lược 123 đảo ngược, mà các nguyên tắc của tín hiệu đảo ngược là: khi giá đóng cửa thấp hơn giá đóng cửa trước hai ngày liên tiếp, và đường K của chỉ số STOCH ngày 9 thấp hơn đường D, một tín hiệu đa đầu được tạo ra; khi giá đóng cửa cao hơn giá đóng cửa trước hai ngày liên tiếp, và đường K của chỉ số STOCH ngày 9 cao hơn đường D, một tín hiệu đầu trống được tạo ra.

Phần thứ hai là chỉ số dao động gia tốc. Chỉ số này có thể xác định trước điểm đảo ngược xu hướng bằng cách tính toán chênh lệch giữa dao động giá tuyệt đối và trung bình di chuyển 5 chu kỳ của nó, phản ánh tốc độ thay đổi của dao động giá tuyệt đối.

Cuối cùng, chiến lược này kết hợp các tín hiệu của hai chỉ số: khi cả hai tín hiệu chỉ số đồng hướng ((double plus hoặc double zero), xuất tín hiệu giao dịch theo hướng đó; khi cả hai tín hiệu chỉ số không phù hợp, xuất tín hiệu 0.

Phân tích lợi thế

Chiến lược này kết hợp với đánh giá hai chỉ số, có thể lọc ra một số tín hiệu giả, tín hiệu chính xác và đáng tin cậy. Đồng thời sử dụng các dao động giá tuyệt đối phản ánh tính năng tăng tốc của sự thay đổi, có thể bắt kịp các điểm đảo ngược xu hướng tiềm năng, do đó giành được không gian lợi nhuận lớn hơn.

Phân tích rủi ro

Rủi ro lớn nhất của chiến lược này là giá đã có sự đảo ngược rõ ràng trước khi chỉ số phát ra tín hiệu, dẫn đến việc bỏ lỡ điểm nhập cảnh tốt nhất. Ngoài ra, khi thị trường biến động mạnh, các tham số chỉ số cần được điều chỉnh để tối ưu hóa.

Đối với rủi ro điểm vào, có thể kết hợp với nhiều chỉ số đảo ngược để đảm bảo độ tin cậy của tín hiệu; đối với các vấn đề tối ưu hóa tham số, có thể thiết lập cơ chế điều chỉnh động để đảm bảo tính hợp lý của tham số.

Hướng tối ưu hóa

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

  1. Tăng điều kiện lọc để tránh tín hiệu sai trong giai đoạn sóng cao

  2. Kết hợp nhiều chỉ số đảo ngược để tạo ra nhiều cơ chế xác minh

  3. Thiết lập cơ chế thích ứng các tham số, điều chỉnh động các tham số chỉ số

  4. Tối ưu hóa chiến lược dừng lỗ để kiểm soát lỗ hổng đơn

Tóm tắt

Chiến lược đảo ngược định lượng tín hiệu kép giúp tăng độ chính xác tín hiệu thông qua xác minh kép, giúp nắm bắt các điểm đảo ngược quan trọng của thị trường; đồng thời, cần chú ý đến việc phòng ngừa rủi ro bị chậm trễ của chỉ số và tham số không hiệu quả, liên tục xác minh và tối ưu hóa chiến lược để phù hợp với môi trường thị trường thay đổi. Chiến lược này phù hợp cho các nhà đầu tư có kinh nghiệm giao dịch định lượng.

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

//@version=3
////////////////////////////////////////////////////////////
//  Copyright by HPotter v1.0 25/04/2019
// This is combo strategies for get 
// a cumulative signal. Result signal will return 1 if two strategies 
// is long, -1 if all strategies is short and 0 if signals of strategies is not equal.
//
// 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.
//
// Secon strategy
// The Accelerator Oscillator has been developed by Bill Williams 
// as the development of the Awesome Oscillator. It represents the 
// difference between the Awesome Oscillator and the 5-period moving 
// average, and as such it shows the speed of change of the Awesome 
// Oscillator, which can be useful to find trend reversals before the 
// Awesome Oscillator does.
//
// 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

AcceleratorOscillator(nLengthSlow, nLengthFast) =>
    xSMA1_hl2 = sma(hl2, nLengthFast)
    xSMA2_hl2 = sma(hl2, nLengthSlow)
    xSMA1_SMA2 = xSMA1_hl2 - xSMA2_hl2
    xSMA_hl2 = sma(xSMA1_SMA2, nLengthFast)
    nRes =  xSMA1_SMA2 - xSMA_hl2
    cClr = nRes > nRes[1] ? blue : red
    pos = 0.0
    pos := iff(nRes > 0, 1,
             iff(nRes < 0, -1, nz(pos[1], 0))) 
    pos

strategy(title="Combo Backtest 123 Reversal and Accelerator Oscillator (AC)", shorttitle="Combo", overlay = true)
Length = input(14, minval=1)
KSmoothing = input(1, minval=1)
DLength = input(3, minval=1)
Level = input(50, minval=1)
nLengthSlow = input(34, minval=1, title="Length Slow")
nLengthFast = input(5, minval=1, title="Length Fast")
reverse = input(false, title="Trade reverse")
posReversal123 = Reversal123(Length, KSmoothing, DLength, Level)
posAcceleratorOscillator = AcceleratorOscillator(nLengthSlow, nLengthFast)
pos = iff(posReversal123 == 1 and posAcceleratorOscillator == 1 , 1,
	   iff(posReversal123 == -1 and posAcceleratorOscillator == -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 ? red: possig == 1 ? green : blue )