Chiến lược trung bình động kép kết hợp với chỉ số Stochastic

Tác giả:ChaoZhang, Ngày: 2024-01-12 11:16:52
Tags:

img

Tổng quan

Bài viết này giới thiệu một chiến lược giao dịch định lượng kết hợp chiến lược trung bình động kép và chỉ số stochastic. Chiến lược sử dụng khả năng theo xu hướng của các đường trung bình động và đặc điểm mua quá mức của stochastic để tạo ra các tín hiệu giao dịch.

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

Chiến lược bao gồm hai phần:

  1. Chiến lược trung bình di chuyển kép

    Sử dụng trung bình di chuyển nhanh và chậm để tạo ra tín hiệu mua chéo vàng và tín hiệu bán chéo chết.

  2. Chỉ số Stochastic

    Sử dụng tính năng dao động của stochastic để xác định tình huống mua quá mức và bán quá mức.

Các tín hiệu từ cả hai phần được kết hợp để tạo thành các tín hiệu giao dịch cuối cùng.

Phân tích lợi thế

  • Kết hợp các lợi thế của hai đường trung bình động và stochastic, ổn định hơn.
  • Đường trung bình động cho xu hướng theo, stochastic để xác nhận, hiệu quả tốt.
  • Các tham số có thể tùy chỉnh thích nghi với các điều kiện thị trường khác nhau.

Phân tích rủi ro

  • Trung bình di chuyển kép có thể dễ dàng tạo ra tín hiệu sai.
  • Cài đặt tham số stochastic không chính xác có thể bỏ lỡ xu hướng.
  • Cần phải điều chỉnh các thông số để thích nghi với những thay đổi trên thị trường.

Rủi ro có thể được giảm bằng cách tối ưu hóa các kết hợp tham số và thêm stop loss vào các lỗ kiểm soát.

Hướng dẫn tối ưu hóa

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

  1. Kiểm tra tác động của các thông số trung bình động khác nhau đối với chiến lược.
  2. Kiểm tra tác động của các tham số stochastic khác nhau đối với sự ổn định của chiến lược.
  3. Thêm các chỉ số lọc xu hướng để cải thiện tỷ lệ thắng.
  4. Xây dựng một cơ chế dừng lỗ động để kiểm soát tổn thất.

Tóm lại

Chiến lược này kết hợp các lợi thế của đường trung bình động kép và stochastic. Trong khi theo dõi xu hướng thị trường chính, nó tránh sự đảo ngược không thuận lợi. Kết quả chiến lược tốt hơn có thể đạt được thông qua tối ưu hóa tham số. Thêm các điểm dừng và bộ lọc xu hướng có thể làm cho chiến lược mạnh mẽ hơn.


/*backtest
start: 2023-12-01 00:00:00
end: 2023-12-31 23:59:59
period: 4h
basePeriod: 15m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=4
////////////////////////////////////////////////////////////
//  Copyright by HPotter v1.0 24/11/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
// As the name suggests, High low bands are two bands surrounding the underlying’s 
// price. These bands are generated from the triangular moving averages calculated 
// from the underlying’s price. The triangular moving average is, in turn, shifted 
// up and down by a fixed percentage. The bands, thus formed, are termed as High 
// low bands. The main theme and concept of High low bands is based upon the triangular 
// 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

    
HLB(Length, PercentShift) =>
    pos = 0.0
    xTMA = sma(sma(close, Length), Length)
    xHighBand = xTMA + (xTMA * PercentShift / 100)
    xLowBand = xTMA - (xTMA * PercentShift / 100)
    pos :=iff(close > xHighBand, 1,
           iff(close <xLowBand, -1, nz(pos[1], 0))) 
    pos

strategy(title="Combo Backtest 123 Reversal & High Low Bands", shorttitle="Combo", overlay = true)
Length = input(14, minval=1)
KSmoothing = input(1, minval=1)
DLength = input(3, minval=1)
Level = input(50, minval=1)
//-------------------------
Length_HLB = input(14, minval=1)
PercentShift = input(1, minval = 0.01, step = 0.01)
reverse = input(false, title="Trade reverse")
posReversal123 = Reversal123(Length, KSmoothing, DLength, Level)
posHLB = HLB(Length_HLB, PercentShift)
pos = iff(posReversal123 == 1 and posHLB == 1 , 1,
	   iff(posReversal123 == -1 and posHLB == -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