Chiến lược giao dịch định lượng với xác nhận đa chỉ số

Tác giả:ChaoZhang, Ngày: 2023-09-15 11:55:04
Tags:

Bài viết này giải thích chi tiết một chiến lược giao dịch định lượng sử dụng xác nhận đa chỉ số để tạo ra tín hiệu. Nó kết hợp các kỹ thuật khác nhau để cải thiện độ tin cậy.

I. Chiến lược logic

Chiến lược tổng hợp hai kỹ thuật:

(1) 123 Mô hình đảo ngược

  1. Xác định đáy và đỉnh tiềm năng dựa trên mối quan hệ gần gũi với nến.

  2. Sử dụng stochastic để xác nhận tín hiệu đảo ngược và tránh tín hiệu sai.

(2) Sự tích lũy/phân phối mượt mà

  1. Tính toán tích lũy/phân phối và trung bình động.

  2. Xác định xu hướng dựa trên sự khác biệt giữa chỉ số và MA.

  3. Chỉ có tín hiệu dễ chịu từ cả hai kỹ thuật được lấy.

Bằng cách yêu cầu nhiều xác nhận, một số tín hiệu sai có thể được lọc ra và tăng độ chính xác.

II. Lợi thế của Chiến lược

Ưu điểm lớn nhất là xác nhận nhiều chỉ số, vượt qua những hạn chế chỉ số duy nhất và tăng cường độ vững chắc.

Một lợi thế khác là kết hợp hai loại kỹ thuật khác nhau để có tính toàn diện hơn.

Cuối cùng, các kết hợp cũng cung cấp nhiều tùy chọn điều chỉnh hơn.

III. Các rủi ro tiềm ẩn

Tuy nhiên, có một số rủi ro:

Thứ nhất, sự kết hợp nhiều chỉ số làm tăng khó khăn tối ưu hóa và rủi ro quá mức.

Thứ hai, sự khác biệt giữa các chỉ số đòi hỏi các quy tắc phán đoán rõ ràng.

Cuối cùng, một số chỉ số vẫn còn vấn đề chậm.

IV. Tóm tắt

Tóm lại, bài viết này đã giải thích một chiến lược giao dịch định lượng sử dụng xác nhận đa chỉ số. Nó cải thiện tín hiệu thông qua tổng hợp nhưng đòi hỏi phải quản lý khó khăn tối ưu hóa và trễ chỉ số.


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

//@version=4
////////////////////////////////////////////////////////////
//  Copyright by HPotter v1.0 21/07/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
// Accumulation is a term used to describe a market controlled by buyers;
// whereas distribution is defined by a market controlled by sellers.
// Williams recommends trading this indicator based on divergences:
//  Distribution of the security is indicated when the security is making 
//  a new high and the A/D indicator is failing to make a new high. Sell.
//  Accumulation of the security is indicated when the security is making 
//  a new low and the A/D indicator is failing to make a new low. Buy. 
//
// 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


SWAD(Length) =>
    pos = 0.0
    xWAD = 0.0
    xPrice = close
    xWAD:= iff(close > nz(close[1], 0), nz(xWAD[1],0) + close - low[1], 
             iff(close < nz(close[1],0), nz(xWAD[1],0) + close - high[1],0))
    xWADMA = sma(xWAD, Length)
    pos:= iff(xWAD > xWADMA, 1,
             iff(xWAD < xWADMA, -1, nz(pos[1], 0))) 
    pos

strategy(title="Combo Backtest 123 Reversal & Smoothed Williams AD", shorttitle="Combo", overlay = true)
line1 = input(true, "---- 123 Reversal ----")
Length = input(14, minval=1)
KSmoothing = input(1, minval=1)
DLength = input(3, minval=1)
Level = input(50, minval=1)
//-------------------------
line2 = input(true, "---- Smoothed Williams AD ----")
LengthWillAD = input(14, step = 1)
reverse = input(false, title="Trade reverse")
posReversal123 = Reversal123(Length, KSmoothing, DLength, Level)
posSWAD = SWAD(LengthWillAD)
pos = iff(posReversal123 == 1 and posSWAD == 1 , 1,
	   iff(posReversal123 == -1 and posSWAD == -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