Chiến lược theo dõi động lượng xuyên khung thời gian

Tác giả:ChaoZhang, Ngày: 2024-02-01 10:21:09
Tags:

img

Tổng quan

Chiến lược này kết hợp các chỉ số 123 đảo ngược và MACD để đạt được theo dõi đà tăng theo khung thời gian. Sự đảo ngược 123 xác định các điểm đảo ngược xu hướng ngắn hạn, và MACD xác định xu hướng trung và dài hạn. Sự kết hợp tạo ra các tín hiệu dài / ngắn hạn khóa xu hướng trung và dài hạn trong khi nắm bắt sự đảo ngược ngắn hạn.

Chiến lược logic

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

  1. 123 phần đảo ngược: nó tạo ra tín hiệu mua / bán khi hai ngọn nến cuối cùng tạo thành đỉnh / đáy và dao động Stochastics dưới / trên 50.

  2. Phần MACD: nó tạo ra tín hiệu mua khi đường MACD vượt qua trên đường tín hiệu, và bán tín hiệu khi nó vượt qua bên dưới.

Tín hiệu cuối cùng được kích hoạt khi cả hai bên đồng ý về hướng giao dịch.

Phân tích lợi thế

Chiến lược này kết hợp các sự đảo ngược ngắn hạn và xu hướng trung hạn đến dài hạn, cho phép nó khóa các động thái xu hướng. Điều này cải thiện tỷ lệ thắng, đặc biệt là trong các thị trường dao động, nơi sự đảo ngược 123 giúp lọc tiếng ồn.

Các thông số cũng có thể được điều chỉnh để cân bằng tín hiệu đảo ngược và xu hướng cho các điều kiện thị trường khác nhau.

Phân tích rủi ro

Chiến lược này có một số thời gian trễ, đặc biệt là với các khoảng thời gian MACD dài hơn, có thể gây ra sự mất tích các động thái ngắn hạn.

Việc rút ngắn thời gian MACD hoặc thêm các điểm dừng có thể giúp kiểm soát rủi ro.

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

Các cách tối ưu hóa chiến lược:

  1. Đặt 123 tham số đảo ngược để cải thiện đảo ngược.

  2. Điều chỉnh các thông số MACD để cải thiện xác định xu hướng.

  3. Thêm các bộ lọc với các chỉ số khác để cải thiện hiệu suất.

  4. Thêm stop loss để kiểm soát rủi ro.

Kết luận

Chiến lược này kết hợp các tham số trên các khung thời gian cùng với nhiều chỉ số kỹ thuật để theo dõi đà tăng theo khung thời gian, cân bằng những ưu điểm của các chiến lược đảo ngược và theo xu hướng.


/*backtest
start: 2024-01-01 00:00:00
end: 2024-01-31 00:00:00
period: 1h
basePeriod: 15m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=4
////////////////////////////////////////////////////////////
//  Copyright by HPotter v1.0 28/01/2021
// 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
// MACD – Moving Average Convergence Divergence. The MACD is calculated 
// by subtracting a 26-day moving average of a security's price from a 
// 12-day moving average of its price. The result is an indicator that 
// oscillates above and below zero. When the MACD is above zero, it means 
// the 12-day moving average is higher than the 26-day moving average. 
// This is bullish as it shows that current expectations (i.e., the 12-day 
// moving average) are more bullish than previous expectations (i.e., the 
// 26-day average). This implies a bullish, or upward, shift in the supply/demand 
// lines. When the MACD falls below zero, it means that the 12-day moving average 
// is less than the 26-day moving average, implying a bearish shift in the 
// supply/demand lines.
// A 9-day moving average of the MACD (not of the security's price) is usually 
// plotted on top of the MACD indicator. This line is referred to as the "signal" 
// line. The signal line anticipates the convergence of the two moving averages 
// (i.e., the movement of the MACD toward the zero line).
// Let's consider the rational behind this technique. The MACD is the difference 
// between two moving averages of price. When the shorter-term moving average rises 
// above the longer-term moving average (i.e., the MACD rises above zero), it means 
// that investor expectations are becoming more bullish (i.e., there has been an 
// upward shift in the supply/demand lines). By plotting a 9-day moving average of 
// the MACD, we can see the changing of expectations (i.e., the shifting of the 
// supply/demand lines) as they occur.
//
// 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

MACD(fastLength,slowLength,signalLength) =>
    pos = 0.0
    fastMA = ema(close, fastLength)
    slowMA = ema(close, slowLength)
    macd = fastMA - slowMA
    signal = sma(macd, signalLength)
    pos:= iff(signal < macd , 1,
	       iff(signal > macd, -1, nz(pos[1], 0))) 
    pos

strategy(title="Combo Backtest 123 Reversal & MACD Crossover", shorttitle="Combo", overlay = true)
line1 = input(true, "---- 123 Reversal ----")
Length = input(14, minval=1)
KSmoothing = input(1, minval=1)
DLength = input(3, minval=1)
Level = input(50, minval=1)
//-------------------------
fastLength = input(8, minval=1)
slowLength = input(16,minval=1)
signalLength=input(11,minval=1)
xSeria = input(title="Source", type=input.source, defval=close)
reverse = input(false, title="Trade reverse")
posReversal123 = Reversal123(Length, KSmoothing, DLength, Level)
posMACD = MACD(fastLength,slowLength, signalLength)
pos = iff(posReversal123 == 1 and posMACD == 1 , 1,
	   iff(posReversal123 == -1 and posMACD == -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