Chiến lược giao dịch đường trung bình động Hall hai chiều


Ngày tạo: 2023-12-11 11:30:15 sửa đổi lần cuối: 2023-12-11 11:30:15
sao chép: 0 Số nhấp chuột: 826
1
tập trung vào
1621
Người theo dõi

Chiến lược giao dịch đường trung bình động Hall hai chiều

Tổng quan

Chiến lược giao dịch trung bình di chuyển hai chiều của Hall là một chiến lược giao dịch định lượng sử dụng trung bình di chuyển hai chiều của Hall làm tín hiệu giao dịch. Chiến lược này bắt chước cách sử dụng trung bình di chuyển đơn trong phân tích kỹ thuật truyền thống, thay vì sử dụng trung bình di chuyển hai chiều của Hall để mua và bán tại điểm đột phá.

Nguyên tắc chiến lược

Trung tâm của chiến lược giao dịch trung bình di chuyển hai chiều là trung bình di chuyển hai chiều của Hall. Trung bình di chuyển hai chiều của Hall bao gồm ba đường nét giữa, trên và dưới, đại diện cho các giá trung bình khác nhau. Công thức tính toán của nó là:

Đường trung tâm:Mode{modeSwitch, src, len) Hull trên đường[0] Đường đi HULL[2]

Chức năng Mode ở đây có thể chọn các biến thể khác nhau của trung bình di chuyển Hull, bao gồm HMA, EHMA và THMA. Sơ sạc đại diện cho nguồn giá, len đại diện cho độ dài chu kỳ.

Chiến lược này dựa trên đường trung đạo của đường trung đạo của đường trung đạo hai chiều Hall để đánh giá mối quan hệ giữa giá và đường trung đạo và tạo tín hiệu giao dịch:

  • Làm nhiều hơn khi giá tăng
  • Khi giá giảm xuống đường trung bình, bạn có thể phá vỡ.

Nói cách khác, nếu giá đóng cửa của dòng K hiện tại lớn hơn giá trị của đường trung tâm, bạn sẽ làm nhiều hơn khi mở cửa K tiếp theo; Nếu giá đóng cửa của dòng K hiện tại nhỏ hơn giá trị của đường trung tâm, bạn sẽ thanh toán khi mở cửa K tiếp theo.

Phân tích lợi thế

Chiến lược giao dịch trung bình di chuyển hai chiều của Hall có những lợi thế sau:

  1. Việc sử dụng các vùng băng tần theo hai hướng thay vì một đường thẳng đơn có hiệu ứng hỗ trợ và kháng cự tốt hơn và cũng thuận lợi hơn trong việc theo dõi xu hướng.

  2. Hull Moving Average có độ trễ thấp hơn so với trung bình di chuyển thông thường và có thể phản ứng nhanh hơn với biến động giá.

  3. Dựa trên các phương pháp phân tích kỹ thuật truyền thống, dễ hiểu, phù hợp để tự động hóa giao dịch.

  4. Lý luận chiến lược đơn giản, rõ ràng, dễ thực hiện, phù hợp với giao dịch thuật toán tần số cao.

  5. Các loại và tham số trung bình di chuyển của Hull có thể được tùy chỉnh, có thể được tối ưu hóa cho các giống và khung thời gian giao dịch khác nhau.

Phân tích rủi ro

Mặc dù có rất nhiều lợi thế, chiến lược giao dịch trung bình di chuyển hai chiều của Hall có một số rủi ro cần lưu ý:

  1. Khi giá dao động, có thể xảy ra nhiều lỗ hổng hơn. Các tham số có thể được điều chỉnh thích hợp, lọc một phần tiếng ồn giao dịch.

  2. Chiến lược này chủ yếu dựa trên xu hướng theo dõi, không hiệu quả khi giá ngang. Các chỉ số hoặc cơ chế khác có thể được kết hợp để đánh giá xu hướng.

  3. Hull Moving Average tự nó cũng có sự chậm trễ, đặc biệt là trong thời gian ngắn. Parameter Optimization và Combinator có thể giải quyết một phần.

  4. Các tín hiệu giao dịch thường xuyên và dễ bị giao dịch quá mức. Kiểm soát đúng vị trí quản lý và tần suất giao dịch.

Hướng tối ưu hóa

Một số hướng tối ưu hóa chính của chiến lược giao dịch trung bình di chuyển hai chiều Hall:

  1. Tối ưu hóa các loại và tham số của Hull Moving Averages, điều chỉnh độ nhạy của đường trung tâm để phù hợp với các loại giao dịch khác nhau.

  2. Tham gia cơ chế dừng lỗ. Trailing stop hoặc dừng tăng, kiểm soát hiệu quả tổn thất đơn lẻ.

  3. Kết hợp với các chỉ số khác để đánh giá hướng và cường độ của xu hướng, tránh bị đặt. Ví dụ: MACD, KD, v.v.

  4. Thêm điều kiện kích hoạt chiến lược dựa trên số lần giao dịch hoặc tỷ lệ lợi nhuận. Kiểm soát số lần đóng vòng và giảm vị thế bằng phẳng.

  5. Kết hợp nhiều khung thời gian. Sử dụng khung thời gian cao hơn để xác định hướng xu hướng, tránh bị nhiễu loạn.

  6. Tối ưu hóa logic ra sân. Có thể dựa trên hình dạng nến, tăng độ chắc chắn vào sân.

Tóm tắt

Chiến lược giao dịch trung bình di chuyển hai chiều của Hall nói chung là một chiến lược định lượng xây dựng tín hiệu giao dịch bằng cách sử dụng trung bình di chuyển theo dạng chỉ số xu hướng. Nó phản ứng nhanh hơn và có hiệu quả theo dõi tốt hơn so với trung bình di chuyển truyền thống.

Mã nguồn chiến lược
/*backtest
start: 2022-12-04 00:00:00
end: 2023-12-10 00:00:00
period: 1d
basePeriod: 1h
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=4
//Basic Hull Ma Pack tinkered by InSilico 
//Converted to Strategy by DashTrader
strategy("Hull Suite Strategy", overlay=true, pyramiding=1, default_qty_type= strategy.percent_of_equity, default_qty_value = 100, calc_on_order_fills=false, slippage=0,commission_type=strategy.commission.percent,commission_value=0)
//////////////////////////////////////////////////////////////////////
// Testing Start dates
testStartYear = input(2016, "Backtest Start Year")
testStartMonth = input(1, "Backtest Start Month")
testStartDay = input(1, "Backtest Start Day")
testPeriodStart = timestamp(testStartYear,testStartMonth,testStartDay,0,0)
//Stop date if you want to use a specific range of dates
testStopYear = input(2030, "Backtest Stop Year")
testStopMonth = input(12, "Backtest Stop Month")
testStopDay = input(30, "Backtest Stop Day")
testPeriodStop = timestamp(testStopYear,testStopMonth,testStopDay,0,0)


testPeriod() =>
    time >= testPeriodStart and time <= testPeriodStop ? true : false
// Component Code Stop
//////////////////////////////////////////////////////////////////////
//INPUT
HAClose = security(heikinashi(syminfo.tickerid), timeframe.period, close)
src = input(close, title="Source")
modeSwitch = input("Hma", title="Hull Variation", options=["Hma", "Thma", "Ehma"])
length = input(55, title="Length(180-200 for floating S/R , 55 for swing entry)")
switchColor = input(true, "Color Hull according to trend?")
candleCol = input(false,title="Color candles based on Hull's Trend?")
visualSwitch  = input(true, title="Show as a Band?")
thicknesSwitch = input(1, title="Line Thickness")
transpSwitch = input(40, title="Band Transparency",step=5)

//FUNCTIONS
//HMA
HMA(_src, _length) =>  wma(2 * wma(_src, _length / 2) - wma(_src, _length), round(sqrt(_length)))
//EHMA    
EHMA(_src, _length) =>  ema(2 * ema(_src, _length / 2) - ema(_src, _length), round(sqrt(_length)))
//THMA    
THMA(_src, _length) =>  wma(wma(_src,_length / 3) * 3 - wma(_src, _length / 2) - wma(_src, _length), _length)
    
//SWITCH
Mode(modeSwitch, src, len) =>
      modeSwitch == "Hma"  ? HMA(src, len) :
      modeSwitch == "Ehma" ? EHMA(src, len) : 
      modeSwitch == "Thma" ? THMA(src, len/2) : na
      
//OUT
HULL = Mode(modeSwitch, src, length)
MHULL = HULL[0]
SHULL = HULL[2]

//COLOR
hullColor = switchColor ? (HULL > HULL[2] ? #00ff00 : #ff0000) : #ff9800

//PLOT
///< Frame
Fi1 = plot(MHULL, title="MHULL", color=hullColor, linewidth=thicknesSwitch, transp=50)
Fi2 = plot(visualSwitch ? SHULL : na, title="SHULL", color=hullColor, linewidth=thicknesSwitch, transp=50)
///< Ending Filler
fill(Fi1, Fi2, title="Band Filler", color=hullColor, transp=transpSwitch)
///BARCOLOR
barcolor(color = candleCol ? (switchColor ? hullColor : na) : na)


if HULL[0] > HULL[2] and testPeriod()
    strategy.entry("long", strategy.long)
if HULL[0] < HULL[2] and testPeriod()
    strategy.close("long")