Chiến lược kênh trung bình di chuyển ba lần để kiên nhẫn khai thác thông tin có giá trị từ các đường nến

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

img

Tổng quan

Chiến lược kênh trung bình động ba sử dụng nhiều chỉ số trung bình động để phân tích sâu biểu đồ nến và khám phá các quy tắc ẩn đằng sau biến động giá, do đó đạt được giao dịch chênh lệch rủi ro thấp.

Nguyên tắc

Chiến lược này xếp chồng nhiều chỉ số EMA trên Bollinger Bands để xây dựng các kênh giá và khám phá các mô hình biến động giá.

  1. Chỉ số BodyResistanceChannel được sử dụng để vẽ các mức kháng cự của thân nến.
  2. Chỉ số Support/Resistance được sử dụng để vẽ mức hỗ trợ và kháng cự nhiều ngày.
  3. Hệ thống EMA kép giúp xác định hướng xu hướng.
  4. Chỉ số Hull MA làm mịn đường cong giá.

Trên cơ sở này, các cơ hội đảo ngược được xác định thông qua nhận dạng mô hình để xây dựng các chiến lược điều chỉnh.

Ưu điểm

Những lợi thế của chiến lược này bao gồm:

  1. Xây dựng các kênh giá với nhiều EMAS giúp xác định rõ xu hướng giá.
  2. Chỉ số Hull MA hiệu quả làm mịn mượt sự đột phá giá.
  3. Kết hợp các mô hình đảo ngược và các chỉ số kênh cho phép giao dịch có xác suất cao và rủi ro thấp.
  4. Xây dựng một hệ thống chỉ số đa lớp đảm bảo các tín hiệu giao dịch ổn định và đáng tin cậy.

Phân tích rủi ro

Các rủi ro tiềm ẩn của chiến lược này cũng tồn tại:

  1. Rủi ro mất mát lớn khi kênh giá bị vi phạm.
  2. Nguy cơ tín hiệu sai khi nhận dạng mô hình đảo ngược sai. Giải pháp là tối ưu hóa tham số để cải thiện độ chính xác mô hình.
  3. Nguy cơ làm suy giảm chất lượng tín hiệu khi các tham số chỉ số không phù hợp.

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

Các hướng tối ưu hóa chính bao gồm:

  1. Tối ưu hóa sự kết hợp các thông số thời gian EMA để phù hợp hơn với điều kiện thị trường.
  2. Điều chỉnh mức dừng lỗ để tối đa hóa lợi nhuận cho mỗi giao dịch trong khi giảm thiểu rủi ro lỗ cho mỗi giao dịch.
  3. Đưa ra mô-đun định hình vị trí động dựa trên biến động để quản lý rủi ro hiệu quả.
  4. Sử dụng các công nghệ học sâu để khám phá nhiều mô hình giá hơn và cải thiện chất lượng tín hiệu.

Kết luận

Chiến lược kênh trung bình di chuyển ba lần đào sâu tính đều đặn của chuyển động giá với sự ổn định và hiệu quả, xứng đáng với ứng dụng dài hạn và tối ưu hóa liên tục.


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

//@version=3
//╭╮╱╱╭╮╭╮╱╱╭╮
//┃╰╮╭╯┃┃┃╱╱┃┃
//╰╮┃┃╭┻╯┣╮╭┫╰━┳╮╭┳━━╮
//╱┃╰╯┃╭╮┃┃┃┃╭╮┃┃┃┃━━┫
//╱╰╮╭┫╰╯┃╰╯┃╰╯┃╰╯┣━━┃
//╱╱╰╯╰━━┻━━┻━━┻━━┻━━╯
//╭━━━┳╮╱╱╱╱╱╱╱╭╮
//┃╭━╮┃┃╱╱╱╱╱╱╱┃┃
//┃┃╱╰┫╰━┳━━┳━╮╭━╮╭━━┫┃
//┃┃╱╭┫╭╮┃╭╮┃╭╮┫╭╮┫┃━┫┃
//┃╰━╯┃┃┃┃╭╮┃┃┃┃┃┃┃┃━┫╰╮
//╰━━━┻╯╰┻╯╰┻╯╰┻╯╰┻━━┻━╯
//━╯
// http://www.vdubus.co.uk/
strategy(title='Vdub FX SniperVX3 / Strategy  v3', shorttitle='Vdub_FX_SniperVX3_Strategy', overlay=true, pyramiding=0, 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=black, 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=10) 
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=1, 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  ? lime: direction2 < 0 ? red : na
plot(ema02, title="EMA Signal 2", style=line, linewidth=1, 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(8, minval=1, title="Hull MA's Base Length:")
hma_length_scalar = input(5, 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=2, title="Hull MA")

//============ signal Generator ==================================//
Piriod=input('720')
ch1 = request.security(syminfo.tickerid, Piriod, open)
ch2 = request.security(syminfo.tickerid, Piriod, close)
longCondition = crossover(request.security(syminfo.tickerid, Piriod, close),request.security(syminfo.tickerid, Piriod, open))
if (longCondition)
    strategy.entry("BUY", strategy.long)
shortCondition = crossunder(request.security(syminfo.tickerid, Piriod, close),request.security(syminfo.tickerid, Piriod, open))
if (shortCondition)
    strategy.entry("SELL", strategy.short)

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

Thêm nữa