Chiến lược giao dịch kết hợp dựa trên 123 Reversal và MACD

Tác giả:ChaoZhang, Ngày: 2023-09-19 17:17:30
Tags:

Tổng quan

Chiến lược này kết hợp 123 mô hình đảo ngược và chỉ số MACD để tạo ra các tín hiệu giao dịch mạnh hơn thông qua lọc. 123 đảo ngược nắm bắt các cơ hội đảo ngược ngắn hạn trong khi MACD cung cấp hướng dẫn xu hướng trung dài hạn.

Chiến lược logic

  1. 123 chiến lược đảo ngược mua khi hai ngày trước là ngày giảm và ngày hôm nay đóng cửa là lên, với Stochastic dưới ngưỡng; bán khi hai ngày trước là ngày tăng và ngày hôm nay là xuống, với Stochastic trên ngưỡng.

  2. Chiến lược MACD đi dài khi MA nhanh trên MA chậm, và ngắn khi MA nhanh dưới MA chậm.

  3. Các giao dịch chỉ được thực hiện khi cả hai chiến lược đồ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ế

Ưu điểm chính:

  1. Tín hiệu kết hợp lọc hiệu quả các vụ phá vỡ giả, cải thiện tỷ lệ thắng.

  2. 123 ghi lại sự đảo ngược ngắn hạn, MACD đánh giá hướng xu hướng trung dài hạn.

  3. Stochastic với 123 tránh giao dịch quá mức sau khi đảo ngược xu hướng.

  4. Hai chiến lược chia sẻ các nhiệm vụ khác nhau, xác nhận lẫn nhau, tránh tối ưu hóa quá mức.

  5. Dễ dàng chuyển đổi giữa dài / ngắn, thích nghi với các môi trường thị trường khác nhau.

Phân tích rủi ro

Rủi ro chính:

  1. Nhóm tín hiệu có thể quá bảo thủ, bỏ lỡ những cơ hội tốt.

  2. Sự đảo ngược dễ bị ảnh hưởng bởi những sự kiện đột ngột, dễ thất bại.

  3. Thiếu stop loss sẽ khiến chiến lược bị tổn thất lớn.

  4. Việc lọc hai lần có thể gây ra việc thiếu các giao dịch xu hướng.

  5. Thiếu tối ưu hóa tham số, các giá trị mặc định có thể không phù hợp với tất cả các thiết bị.

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

Cải tiến:

  1. Kiểm tra các kết hợp tham số khác nhau để tìm ra các giá trị tối ưu.

  2. Thêm stop loss vào control loss cho mỗi giao dịch.

  3. Thêm nhiều chỉ số bộ lọc để cải thiện chất lượng tín hiệu.

  4. giới thiệu các mô hình học máy để tối ưu hóa tham số tự động.

  5. Kiểm tra trên nhiều công cụ giao dịch hơn để đánh giá độ bền.

  6. Bộ tham số chuyển đổi dựa trên điều kiện thị trường.

Tóm lại

Nhìn chung, việc kết hợp hai tín hiệu tránh tối ưu hóa quá mức so với các chiến lược đơn lẻ.


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

//@version=4
////////////////////////////////////////////////////////////
//  Copyright by HPotter v1.0 24/07/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
// This is one of the techniques described by William Blau in his book
// "Momentum, Direction and Divergence" (1995). If you like to learn more,
// we advise you to read this book. His book focuses on three key aspects
// of trading: momentum, direction and divergence. Blau, who was an electrical
// engineer before becoming a trader, thoroughly examines the relationship 
// between price and momentum in step-by-step examples. From this grounding,
// he then looks at the deficiencies in other oscillators and introduces some
// innovative techniques, including a fresh twist on Stochastics. On directional 
// issues, he analyzes the intricacies of ADX and offers a unique approach to help 
// define trending and non-trending periods.
// Blau`s indicator is like usual MACD, but it plots opposite of meaningof
// stndard MACD indicator.  
//
// 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

fADX(Len) =>
    up = change(high)
    down = -change(low)
    trur = rma(tr, Len)
    plus = fixnan(100 * rma(up > down and up > 0 ? up : 0, Len) / trur)
    minus = fixnan(100 * rma(down > up and down > 0 ? down : 0, Len) / trur)
    sum = plus + minus 
    100 * rma(abs(plus - minus) / (sum == 0 ? 1 : sum), Len)

EMACD(r,SmthLen,LengthMACD) =>
    pos = 0
    source = close
    fastMA = ema(source, r)
    slowMA = ema(source, LengthMACD)
    xmacd = fastMA - slowMA
    xMA_MACD = ema(xmacd, SmthLen)
    pos := iff(xmacd < xMA_MACD, -1,
    	     iff(xmacd > xMA_MACD, 1, nz(pos[1], 0))) 
    pos

strategy(title="Combo Backtest 123 Reversal & Ergodic MACD", shorttitle="Combo", overlay = true)
Length = input(14, minval=1)
KSmoothing = input(1, minval=1)
DLength = input(3, minval=1)
Level = input(50, minval=1)
//-------------------------
r = input(14, minval=1)
LengthMACD = input(21, minval=1)
SmthLen = input(5, minval=1)
reverse = input(false, title="Trade reverse")
posReversal123 = Reversal123(Length, KSmoothing, DLength, Level)
posEMACD = EMACD(r,SmthLen,LengthMACD)
pos = iff(posReversal123 == 1 and posEMACD == 1 , 1,
	   iff(posReversal123 == -1 and posEMACD == -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