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


Ngày tạo: 2023-09-12 16:05:10 sửa đổi lần cuối: 2023-09-12 16:05:10
sao chép: 0 Số nhấp chuột: 701
1
tập trung vào
1617
Người theo dõi

Chiến lược này kết hợp nhiều loại chỉ số kỹ thuật khác nhau để tạo thành một chiến lược giao dịch định lượng tổng hợp. Chiến lược này tập hợp các lợi thế của nhiều yếu tố để tăng độ chính xác của quyết định giao dịch.

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

  1. Tính toán 123 chỉ số đảo ngược để xác định xem giá có biến động ngược trong ba ngày hay không.

  2. Tính toán chỉ số Elder Bearish để xác định xem giá có bị bán quá mức hay không.

  3. Khi cả hai phát ra tín hiệu mua đồng thời, thực hiện nhiều hoạt động. Khi cả hai phát ra tín hiệu bán đồng thời, thực hiện hoạt động làm trống.

  4. Bằng cách xác minh các yếu tố chỉ số, có thể lọc hiệu quả một số tín hiệu giao dịch ồn.

  5. Sự kết hợp của các loại chỉ số khác nhau có thể cải thiện khả năng phán đoán về tình hình thị trường.

Những lợi thế của chiến lược này:

  1. Xác thực đa yếu tố giúp giảm khả năng giao dịch sai.

  2. Nâng cao khả năng nhận diện các tình huống thị trường phức tạp.

  3. Các tham số chiến lược kết hợp rất khó tối ưu hóa và có một số lợi thế.

Rủi ro của chiến lược này:

  1. Gói đa chỉ số cần thời gian để tối ưu hóa các tham số để đạt được sự phù hợp tốt nhất.

  2. Có thể có sự khác biệt giữa các chỉ số.

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

Tóm lại, chiến lược giao dịch này có thể cải thiện độ chính xác của quyết định bằng cách kết hợp các ưu điểm của nhiều yếu tố. Tuy nhiên, cần chú ý đến các vấn đề phù hợp giữa các chỉ số khác nhau để đạt được lợi nhuận vượt trội ổn định thông qua tối ưu hóa tham số nghiêm ngặt.

Mã nguồn chiến lược
/*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 )