В процессе загрузки ресурсов... загрузка...

Стратегия HODL скользящей средней колебания

Автор:Чао Чжан, Дата: 2023-09-12 16:02:24
Тэги:

Эта стратегия наблюдает колебания цен вокруг долгосрочных скользящих средних (например, 200-дневных) для определения сигналов хранения, торгового прорыва для входа в позицию и использования разрыва ниже как стоп-лосс.

Логика стратегии:

  1. Вычислить длительный скользящий средний показатель, обычно 200 дней.

  2. Введите длинный, когда цена превышает скользящую среднюю.

  3. Выход длинный, когда цена снова прорывается ниже скользящей средней.

  4. Удерживать длинную позицию до перерыва ниже стоп-лосса.

Преимущества:

  1. Долгосрочная МР эффективно определяет средне- и долгосрочные тенденции.

  2. Брейк-трейдинг своевременно отслеживает долгосрочные реверсии.

  3. Более низкая частота торговли снижает затраты и риски.

Риски:

  1. Более длительные МА значительно отстают, что приводит к плохим срокам вступления.

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


Больше