Chiến lược giao dịch kết hợp nhiều yếu tố

Tác giả:ChaoZhang, Ngày: 2023-09-12 16:05:10
Tags:

Chiến lược này kết hợp nhiều chỉ số kỹ thuật thành một hệ thống định lượng tích hợp, khai thác điểm mạnh của các yếu tố khác nhau để cải thiện độ chính xác quyết định thương mại.

Chiến lược logic:

  1. Tính toán 123 Chỉ số đảo ngược để xác định khả năng đảo ngược 3 ngày.

  2. Tính toán sức mạnh của Elder Bear cho các điều kiện bán quá mức.

  3. Đi dài khi cả hai chỉ số cung cấp tín hiệu mua, và ngắn khi cả hai cung cấp tín hiệu bán.

  4. Yêu cầu xác minh yếu tố làm giảm các giao dịch tín hiệu sai.

  5. Kết hợp các loại chỉ số khác nhau cải thiện nhận thức về tình hình.

Ưu điểm:

  1. Xác minh nhiều yếu tố làm giảm khả năng giao dịch sai.

  2. Cải thiện nhận thức về các điều kiện thị trường phức tạp.

  3. Khó khăn tối ưu hóa mang lại lợi thế so với các chiến lược đơn lẻ.

Rủi ro:

  1. Dùng thời gian để tối ưu hóa các thông số cho sự kết hợp lý tưởng.

  2. Khả năng xung đột tín hiệu giữa các chỉ số.

  3. Sự ổn định tổng thể thấp hơn các chiến lược chỉ số đơn.

Tóm lại, chiến lược này nhằm mục đích cải thiện độ chính xác bằng cách kết hợp nhiều yếu tố, nhưng đòi hỏi phải điều chỉnh các chỉ số phù hợp để vượt trội ổn định.


/*backtest
start: 2022-09-05 00:00:00
end: 2023-02-03 00:00:00
period: 1d
basePeriod: 1h
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=4
////////////////////////////////////////////////////////////
//  Copyright by HPotter v1.0 27/05/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
// Developed by Dr Alexander Elder, the Elder-ray indicator measures buying 
// and selling pressure in the market. The Elder-ray is often used as part 
// of the Triple Screen trading system but may also be used on its own.
// Dr Elder uses a 13-day exponential moving average (EMA) to indicate the 
// market consensus of value. Bull Power measures the ability of buyers to 
// drive prices above the consensus of value. Bear Power reflects the ability 
// of sellers to drive prices below the average consensus of value.
// Bull Power is calculated by subtracting the 13-day EMA from the day's High. 
// Bear power subtracts the 13-day EMA from the day's Low.
// You can use in the xPrice any series: Open, High, Low, Close, HL2, HLC3, OHLC4 and ect...
//
// 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

BP(Trigger,Length) =>
    pos = 0
    DayHigh = 0.0
    xPrice = close
    xMA = ema(xPrice,Length)
    DayHigh := iff(dayofmonth != dayofmonth[1], high, max(high, nz(DayHigh[1])))
    nRes = DayHigh - xMA
    pos := iff(nRes > Trigger, 1,
    	     iff(nRes < Trigger, -1, nz(pos[1], 0))) 
    pos

strategy(title="Combo Backtest 123 Reversal & Elder Ray (Bear Power) ", shorttitle="Combo", overlay = true)
Length = input(14, minval=1)
KSmoothing = input(1, minval=1)
DLength = input(3, minval=1)
Level = input(50, minval=1)
//-------------------------
LengthBP = input(13, minval=1)
Trigger = input(0)
reverse = input(false, title="Trade reverse")
posReversal123 = Reversal123(Length, KSmoothing, DLength, Level)
posBP = BP(Trigger,LengthBP)
pos = iff(posReversal123 == 1 and posBP == 1 , 1,
	   iff(posReversal123 == -1 and posBP == -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