이동 평균 오스실레이션 HODL 전략

저자:차오장, 날짜: 2023-09-12 16:02:24
태그:

이 전략은 장기 이동 평균 (예: 200 일) 에 따라 가격 변동을 관찰하여 홀드 신호를 결정하고, 포지션 진입에 대한 거래 브레이크아웃을 관찰하고, 이보다 낮은 브레이크를 스톱 로스로 사용합니다. 장기 홀딩에 대한 거래 빈도를 최소화하는 것을 목표로합니다.

전략 논리:

  1. 장기 이동 평균을 계산합니다. 일반적으로 200일입니다.

  2. 가격이 이동평균을 넘어서면 롱에 들어가

  3. 가격이 이동평균 아래로 떨어지면 긴 출구

  4. 스톱 로즈 아래로 넘어갈 때까지 긴 포지션을 유지하세요.

장점:

  1. 장기적 MA는 중장기 동향을 효과적으로 식별합니다.

  2. 브레이크아웃 거래는 장기적인 반전을 적시에 포착합니다.

  3. 거래 빈도가 낮으면 비용과 위험이 줄어들죠.

위험성:

  1. 더 긴 MAs는 상당히 늦어지기 때문에 출입 시기가 좋지 않습니다.

  2. 부진 후 적립 위험은 제한되지 않습니다.

  3. 빈번한 작은 탈출은 지속적인 작은 손실을 가져옵니다.

요약하자면, 이 HODL 전략은 보유 시기를 결정하기 위해 긴 MA 변동을 사용하여 거래 주파수를 최소화합니다. 그러나 매개 변수 최적화 및 스톱 로스 배치는 안정적인 장기 수익을 위해 성능과 위험 통제를 향상시킬 수 있습니다.


/*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")


더 많은