Эта стратегия, основанная на наблюдении за отношением цены к долгосрочным средним линиям (например, 200-дневная линия), занимает позиции, когда цена превышает среднюю линию, и занимает позиции, когда цена падает ниже средней линии. Эта стратегия относится к стратегии прорыва длинных линий, которая преследует длительные держания и уменьшает частоту торгов.
Принципы стратегии:
Вычислить скользящую среднюю за длительный период, типичный параметр - 200-дневная линия.
Когда цена закрытия прорывает эту среднюю линию снизу, совершайте покупку.
Когда цена закрытия опускается выше средней линии, проводится операция по продаже позиции.
В состояниях многообещания они сохраняются до тех пор, пока цена не упадет ниже средней линии остановки.
Преимущества этой стратегии:
Средняя длинная линия позволяет эффективно идентифицировать длинную тенденцию цены.
Прорывный способ торговли позволяет вовремя уловить обратную сторону длинной линии цен на акции.
Снижение частоты транзакций помогает снизить затраты и риски.
Риски этой стратегии:
Проблемы с задержкой в среднем за длительный период более серьезны, и время поступления не очень хорошо.
Невозможно ограничить потери от колебаний отклонения после прорыва.
Частые небольшие прорывы могут привести к незначительным убыткам.
В целом, стратегия HODL, которая определяет время удержания с помощью долгосрочных среднелинейных колебаний, может снизить частоту торгов. Однако есть место для улучшения параметров оптимизации и установки стоп-лосс, чтобы контролировать отступление и получать стабильную прибыль в долгосрочной перспективе.
/*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")