Chiến lược HODL dao động trung bình động

Tác giả:ChaoZhang, Ngày: 2023-09-12 16:02:24
Tags:

Chiến lược này quan sát dao động giá xung quanh trung bình động dài hạn (ví dụ: 200 ngày) để xác định tín hiệu giữ, giao dịch breakout để nhập vị trí và sử dụng break dưới đó như stop loss.

Chiến lược logic:

  1. Tính toán trung bình động dài hạn, thường là 200 ngày.

  2. Nhập dài khi giá phá vỡ trên đường trung bình động.

  3. Ra khỏi dài khi giá phá vỡ trở lại dưới mức trung bình động.

  4. Giữ vị trí dài cho đến khi phá vỡ dưới mức dừng lỗ.

Ưu điểm:

  1. MA dài hạn xác định hiệu quả xu hướng trung và dài hạn.

  2. Giao dịch đột phá nắm bắt sự đảo ngược dài hạn kịp thời.

  3. Tần suất giao dịch thấp hơn làm giảm chi phí và rủi ro.

Rủi ro:

  1. Các MA dài hơn chậm lại đáng kể, dẫn đến thời gian nhập cảnh kém.

  2. Không giới hạn rủi ro rút tiền sau khi phá vỡ.

  3. Những vụ đột phá nhỏ thường xuyên mang lại những tổn thất nhỏ.

Tóm lại, chiến lược HODL này sử dụng dao động MA dài để xác định thời gian giữ, giảm thiểu tần suất giao dịch.


/*backtest
start: 2022-09-05 00:00:00
end: 2023-04-15 00:00:00
period: 1d
basePeriod: 1h
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=3
strategy("HODLBot", default_qty_type=strategy.percent_of_equity, default_qty_value=100, calc_on_every_tick=true, overlay=true)
    
//// Time limits 
testStartYear = input(2017, "Backtest Start Year")
testStartMonth = input(01, "Backtest Start Month")
testStartDay = input(01, "Backtest Start Day")
testPeriodStart = timestamp(testStartYear,testStartMonth,testStartDay,0,0)

testStopYear = input(2029, "Backtest Stop Year")
testStopMonth = input(1, "Backtest Stop Month")
testStopDay = input(1, "Backtest Stop Day")
testPeriodStop = timestamp(testStopYear,testStopMonth,testStopDay,0,0)

testPeriod() => true

maPeriod = input(200, "MA Period")
smoothing = input(defval="EMA", options=["EMA", "SMA"])

ma(smoothing, src, length) => 
    if smoothing == "EMA"
        ema(src, length)
    else
        if smoothing == "SMA"
            sma(src, length)
        
//// Main ////

movingAverage = ma(smoothing, close, maPeriod)

plot(movingAverage, color=orange, style = line, linewidth = 4)
 
// very simple, price over MA? Buy and HODL 
if (testPeriod() and close > movingAverage)
    strategy.entry("HODL", strategy.long)

// Price under, close long
if (testPeriod() and close < movingAverage)
    strategy.close("HODL")


Thêm nữa