Chiến lược đảo ngược đường chéo trung bình động kép

Tác giả:ChaoZhang, Ngày: 2023-11-24 17:03:47
Tags:

img

Tổng quan

Chiến lược đảo ngược chéo trung bình di chuyển kép là một chiến lược theo xu hướng kết hợp chiến lược 123 Reversal và chiến lược dao động DiNapoli Detrended để tạo ra các tín hiệu giao dịch thông qua chuyển đổi chéo trung bình di chuyển kép để theo dõi xu hướng thị trường.

Chiến lược logic

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

  1. 123 Chiến lược đảo ngược: Chiến lược này sử dụng chỉ số Stochastic để tạo tín hiệu. Nó gửi tín hiệu mua khi giá đóng tăng sau hai ngày liên tiếp giảm, trong khi đường nhanh stochastic nằm dưới đường chậm và dưới 50; nó gửi tín hiệu bán khi giá đóng giảm sau hai ngày liên tiếp tăng, trong khi đường nhanh stochastic nằm trên đường chậm và trên 50.

  2. DiNapoli Detrended Oscillator Strategy: Chiến lược này sử dụng đường trung bình chuyển động của giá để tạo ra tín hiệu giao dịch khi giá vượt quá hoặc giảm xuống dưới đường trung bình chuyển động với một giá trị nhất định. Cụ thể, nó gửi tín hiệu mua khi giá vượt quá giá kích hoạt tích cực của đường trung bình chuyển động, và tín hiệu bán khi giá giảm xuống dưới giá kích hoạt âm của đường trung bình chuyển động.

Sau khi mỗi hai chiến lược trên tạo ra các tín hiệu giao dịch riêng biệt, chiến lược này tích hợp chúng và chỉ gửi lệnh giao dịch thực tế khi hai tín hiệu phù hợp, tức là khi hai đường trung bình động tạo ra tín hiệu theo cùng một hướng; nếu không, không có hành động nào được thực hiện.

Phân tích lợi thế

Bằng cách kết hợp hai tín hiệu giao dịch trung bình động, chiến lược này có thể theo dõi hiệu quả xu hướng thị trường và có những lợi thế sau:

  1. Sử dụng đầy đủ các điểm mạnh của chỉ số Stochastic trong việc đánh giá động lực và xu hướng, tránh tổn thất do các tín hiệu gây hiểu lầm từ bất kỳ chỉ số nào.

  2. Chỉ số DiNapoli có thể xác định hiệu quả xu hướng và tránh việc mở các vị trí không cần thiết do biến động ngẫu nhiên.

  3. Crossover trung bình động kép có thể giảm hiệu quả các tín hiệu sai và cải thiện chất lượng tín hiệu để cung cấp bằng chứng mạnh mẽ để đánh giá hướng thị trường.

  4. Các tham số có thể điều chỉnh của chiến lược cho phép người dùng lựa chọn các kết hợp tham số dựa trên sở thích cá nhân để thích nghi linh hoạt với môi trường thị trường khác nhau.

Phân tích rủi ro

Chiến lược này cũng có những rủi ro sau:

  1. Trong một thị trường tăng, chiến lược có thể bỏ lỡ cơ hội mua do cài đặt tham số chỉ số quá thận trọng. Các tham số có thể được điều chỉnh thích hợp để làm cho chiến lược tích cực hơn.

  2. Trong một thị trường giảm, tín hiệu chéo trung bình di chuyển kép có thể chậm lại, dẫn đến các điều kiện mua quá mức và bán quá mức.

  3. Trong trường hợp có một chuyển động thị trường một chiều lớn, tín hiệu chéo trung bình động kép có thể chậm.

Tối ưu hóa

Chiến lược có thể được tối ưu hóa theo những cách sau:

  1. Kiểm tra và tối ưu hóa các thông số của chỉ số Stochastic và DiNapoli để tìm ra sự kết hợp các thông số tối ưu.

  2. Thêm các chỉ số phán đoán phụ khác như chỉ số khối lượng để làm phong phú thêm logic nội bộ của chiến lược và cải thiện độ chính xác của tín hiệu.

  3. Sử dụng các phương pháp học máy để đào tạo và tối ưu hóa các thông số chiến lược và các quy tắc tạo tín hiệu để làm cho chúng thích nghi đầy đủ với những thay đổi trên thị trường.

  4. Đánh giá các cấu trúc địa phương với các chỉ số kỹ thuật tiên tiến để phân biệt giữa các tín hiệu trung hạn và dài hạn, cho phép chiến lược hoạt động trong nhiều khung thời gian.

Kết luận

Chiến lược đảo ngược chuyển động trung bình kép tích hợp hai chỉ số để tạo thành tín hiệu giao dịch chuyển động trung bình kép, có thể theo dõi hiệu quả xu hướng thị trường và có lợi nhuận tương đối tốt trong khi kiểm soát rủi ro. Đây là một chiến lược theo xu hướng đáng tin cậy. Chiến lược có thể được cải thiện và nâng cấp liên tục thông qua tối ưu hóa tham số và thêm các chỉ số phụ trợ. Nó có triển vọng ứng dụng rộng.


/*backtest
start: 2023-10-24 00:00:00
end: 2023-11-23 00:00:00
period: 1h
basePeriod: 15m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=4
////////////////////////////////////////////////////////////
//  Copyright by HPotter v1.0 18/02/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
// DiNapoli Detrended Oscillator Strategy
//
// 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

DiNapoli(Length, Trigger) =>
    pos = 0.0
    xSMA = sma(close, Length)
    nRes = close - xSMA
    pos := iff(nRes > Trigger, 1,
    	     iff(nRes <= Trigger, -1, nz(pos[1], 0)))    
    pos

strategy(title="Combo Backtest 123 Reversal & DiNapoli Detrended Oscillator", shorttitle="Combo", overlay = true)
Length = input(14, minval=1)
KSmoothing = input(1, minval=1)
DLength = input(3, minval=1)
Level = input(50, minval=1)
//-------------------------
LengthDiN = input(14, minval=1)
TriggerDiN = input(0)
reverse = input(false, title="Trade reverse")
posReversal123 = Reversal123(Length, KSmoothing, DLength, Level)
posDiN = DiNapoli(LengthDiN, TriggerDiN)
pos = iff(posReversal123 == 1 and posDiN == 1 , 1,
	   iff(posReversal123 == -1 and posDiN == -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