Chiến lược theo dõi xu hướng trung bình động Hull


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

Tổng quan

Chiến lược theo dõi xu hướng trung bình di chuyển của Hull là một chiến lược giao dịch định lượng sử dụng trung bình di chuyển của Hull để xác định xu hướng thị trường và phát ra tín hiệu mua và bán. Chiến lược này có thể nắm bắt xu hướng đường dài và đường dài, thiết lập vị trí ở giai đoạn bắt đầu xu hướng và dừng vị trí trước khi xu hướng đảo ngược.

Nguyên tắc

Chiến lược này sử dụng cả trung bình di chuyển Hull và trung bình di chuyển thông thường để xác định hướng xu hướng. Đây là tín hiệu mua khi Hull MA ngắn đi qua Hull MA dài. Đây là tín hiệu bán khi Hull MA ngắn đi qua Hull MA dài.

Đường trung bình di chuyển thông thường được sử dụng để xác định hướng xu hướng ngay lập tức. Chỉ có tín hiệu giao dịch khi tín hiệu Hull MA và EMA đồng hướng đi lên hoặc xuống.

Ngoài ra, chiến lược này cũng sử dụng kênh thực thể K-line để đánh giá mức độ biến động của thị trường, tránh giao dịch sai trong thị trường bất ổn. Chỉ khi giá phá vỡ kênh mới xem xét đặt hàng.

Ưu điểm

  • Hull Moving Average nhạy cảm hơn với biến động giá, có thể bắt đầu một sự thay đổi xu hướng sớm hơn.

  • Hull MA và EMA được sử dụng để lọc các tín hiệu giả.

  • Sử dụng K-line channel để đánh giá biến động, tránh giao dịch thường xuyên trong quá trình cân bằng.

  • Theo dõi xu hướng, có thể liên tục thu được lợi nhuận từ xu hướng đường dài và đường trung.

Rủi ro

  • Đường trung bình di chuyển có thể bị tụt hậu và có thể bỏ lỡ điểm vào tốt nhất để đảo ngược xu hướng.

  • Trong khi đó, các nhà đầu tư khác cũng đã đưa ra các dự báo về sự biến động của thị trường.

  • Số lượng giao dịch ít hơn và dễ bị ảnh hưởng bởi tổn thất đơn lẻ.

  • Không thể tận dụng hiệu quả các biến động của đường dây ngắn.

Phương pháp đối phó

  • Tối ưu hóa các tham số chu kỳ của trung bình di chuyển, theo đuổi xu hướng phản ứng kịp thời.

  • Sử dụng các chỉ số khác để đánh giá sự dao động, chẳng hạn như RSI, BBANDS.

  • Sử dụng quản lý tài chính tích cực, kiểm soát tỷ lệ tổn thất đơn lẻ.

  • Có thể sử dụng các chiến lược khác để thu được lợi nhuận ngắn hạn.

Tóm tắt

Chiến lược theo dõi xu hướng trung bình di chuyển của Hull sử dụng kết hợp Hull MA và EMA, có thể theo dõi hiệu quả xu hướng đường dài trung bình. Tiếp tục tích lũy lợi nhuận trong xu hướng có lợi và dừng lại sớm nhất trước khi xu hướng đảo ngược. Đây là một chiến lược giao dịch định lượng đơn giản và thực tế, nên được đề xuất.

Mã nguồn chiến lược
/*backtest
start: 2023-08-16 00:00:00
end: 2023-09-15 00:00:00
period: 1h
basePeriod: 15m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=2

// strategy(title='HULLMiguel 2019/ Strategy v3', shorttitle='HULLMiguel_2019_Strategy', overlay=true, pyramiding=0, default_qty_value=1000, initial_capital=1000, currency=currency.USD)

//Candle body resistance Channel-----------------------------//
len = 34
src = input(close, title="Candle body resistance Channel")
out = sma(src, len)
last8h = highest(close, 13)
lastl8 = lowest(close, 13)
bearish = cross(close,out) == 1 and falling(close, 1)
bullish = cross(close,out) == 1 and rising(close, 1)
channel2=input(false, title="Bar Channel On/Off")
ul2=plot(channel2?last8h:last8h==nz(last8h[1])?last8h:na, color=black, linewidth=1, style=linebr, title="Candle body resistance level top", offset=0)
ll2=plot(channel2?lastl8:lastl8==nz(lastl8[1])?lastl8:na, color=blue, linewidth=1, style=linebr, title="Candle body resistance level bottom", offset=0)
//fill(ul2, ll2, color=black, transp=95, title="Candle body resistance Channel")

//-----------------Support and Resistance 
RST = input(title='Support / Resistance length:',  defval=15) 
RSTT = valuewhen(high >= highest(high, RST), high, 0)
RSTB = valuewhen(low <= lowest(low, RST), low, 0)
RT2 = plot(RSTT, color=RSTT != RSTT[1] ? na : red, linewidth=1, offset=+0)
RB2 = plot(RSTB, color=RSTB != RSTB[1] ? na : green, linewidth=1, offset=0)

//--------------------Trend colour ema------------------------------------------------// 
src0 = close, len0 = input(13, minval=1, title="EMA 1")
ema0 = ema(src0, len0)
direction = rising(ema0, 2) ? +1 : falling(ema0, 2) ? -1 : 0
plot_color = direction > 0  ? lime: direction < 0 ? red : na
plot(ema0, title="EMA", style=line, linewidth=3, color = plot_color)

//-------------------- ema 2------------------------------------------------//
src02 = close, len02 = input(21, minval=1, title="EMA 2")
ema02 = ema(src02, len02)
direction2 = rising(ema02, 2) ? +1 : falling(ema02, 2) ? -1 : 0
plot_color2 = direction2 > 0  ? green: direction2 < 0 ? red : na
plot(ema02, title="EMA Signal 2", style=line, linewidth=2, color = plot_color2)

//=============Hull MA//
show_hma = input(false, title="Display Hull MA Set:")
hma_src = input(close, title="Hull MA's Source:")
hma_base_length = input(16, minval=1, title="Hull MA's Base Length:")
hma_length_scalar = input(10, minval=0, title="Hull MA's Length Scalar:")
hullma(src, length)=>wma(2*wma(src, length/2)-wma(src, length), round(sqrt(length)))
plot(not show_hma ? na : hullma(hma_src, hma_base_length+hma_length_scalar*6), color=black, linewidth=5, title="Hull MA")
dif_close_hull= (close-hullma(hma_src, hma_base_length+hma_length_scalar*6))/close
Percent_dif = (dif_close_hull/(hullma(hma_src, hma_base_length+hma_length_scalar*6)))
//direction3 = Percent_dif>0 ? +1 : Percent_dif<0 ? -1 : 0
//plot_color3 = direction3 > 0  ? lime: direction3 < 0 ? red : na
//plot(dif_close_hull, title="dif close hull", style=line, linewidth=6, color = plot_color3)

//============ signal Generator ==================================//
Piriod=input('720')
ch1 = security(syminfo.tickerid, Piriod, open)
ch2 = security(syminfo.tickerid, Piriod, close)
plot(ch1, title="EMA Signal 2", style=line, linewidth=1, color = blue)
//longCondition = crossover(security(tickerid, Piriod, close),security(tickerid, Piriod, open))
//plot((close-ema02)/ema02+close)
longCondition = direction > 0 and direction2> 0

if (longCondition)
    strategy.entry("BUY", strategy.long)
//shortCondition = crossunder(security(tickerid, Piriod, close),security(tickerid, Piriod, open))
shortCondition = direction < 0 and direction2 < 0

if (shortCondition)
    strategy.entry("SELL", strategy.short)

///////////////////////////////////////////////////////////////////////////////////////////