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


Дата создания: 2024-02-29 14:00:35 Последнее изменение: 2024-02-29 14:00:35
Копировать: 0 Количество просмотров: 599
1
Подписаться
1617
Подписчики

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

Обзор

Стратегия, используемая для вычисления средней линии канала, создает позиции сверх или ниже, когда цена пересекает среднюю линию канала, и отслеживает тенденции цен на акции, относятся к категории стратегий отслеживания тенденций.

Стратегический принцип

Эта стратегия начинается с расчета 20-дневного среднего максимума как верхнего коридора, 20-дневного среднего минимума как нижнего коридора, и вычисляет среднюю линию коридора. Средняя линия коридора представляет собой среднюю тенденцию цены в последнее время.

Анализ преимуществ

  • Использование каналов для отслеживания ценовых тенденций, чтобы избежать блокировки средств в оффшорных рынках;
  • Вход в торговые точки можно легко контролировать, поскольку они расположены в верхней и нижней частях коридора.
  • В этом случае, как отмечается в статье, “последние два года” - это “последние два года” - “последние два года”.
  • Конфигурируемые параметры каналов, повышающие чувствительность стратегии;

Анализ рисков

  • После прохождения средней линии прорыва в канале может возникнуть ситуация, когда средняя линия тестирования будет отрегулирована, и тогда она будет закреплена;
  • Акции шокового типа не подходят для этой стратегии и подвержены высокой частоте арбитража;
  • Неправильная настройка параметров также может повлиять на эффективность стратегии.

Направление оптимизации

  • Оптимизация параметров цикла канала, тестирование влияния различных параметров на эффективность стратегии;
  • Увеличение стратегии сдерживания убытков, сдерживание одноразовых и тотальных убытков;
  • В сочетании с другими показателями в качестве вспомогательного суждения, чтобы избежать ошибочных сигналов;
  • поэтапное строительство складов, снижающее вероятность попадания на прорывную обратную линию испытаний;

Подвести итог

Стратегия в целом является более простой и прямой, чтобы определить тенденцию цен на акции с помощью основного ценового канала, относится к типу стратегии отслеживания тенденций. Преимущества заключаются в том, что она проста в использовании, в полной мере использует инвестиционные возможности, связанные с ценовыми тенденциями, и избегает блокировки средств. Недостатком является то, что неправильная настройка параметров может повлиять на эффективность, и существует определенный риск обратной проверки.

Исходный код стратегии
/*backtest
start: 2024-01-01 00:00:00
end: 2024-01-31 23:59:59
period: 4h
basePeriod: 15m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=3
//future strategy
//strategy(title = "stub", default_qty_type = strategy.fixed, default_qty_value = 1,  overlay = true, commission_type=strategy.commission.cash_per_contract,commission_value=2)
//stock strategy
strategy(title = "dc", default_qty_type = strategy.percent_of_equity, default_qty_value = 20,  overlay = true, commission_type=strategy.commission.cash_per_contract,commission_value=.005)
//forex strategy
//strategy(title = "stub", default_qty_type = strategy.percent_of_equity, default_qty_value = 20,  overlay = true)
//crypto strategy
//strategy(title = "stub", default_qty_type = strategy.percent_of_equity, default_qty_value = 20,  overlay = true, commission_type=strategy.commission.percent,commission_value=.25,default_qty_value=20)


testStartYear = input(2000, "Backtest Start Year")
testStartMonth = input(1, "Backtest Start Month")
testStartDay = input(1, "Backtest Start Day")
testPeriodStart = timestamp(testStartYear,testStartMonth,testStartDay,0,0)

testEndYear = input(2019, "Backtest Start Year")
testEndMonth = input(3)
testEndDay = input(31, "Backtest Start Day")
testPeriodEnd = timestamp(testStartYear,testStartMonth,testStartDay,0,0)


testPeriod() =>
    true
    //time >= testPeriodStart  ? true : false

dcPeriod = 20

dcUpper = highest(close, dcPeriod)[1]
dcLower = lowest(close, dcPeriod)[1]
dcAverage = (dcUpper + dcLower) / 2

plot(dcLower, style=line, linewidth=3, color=red, offset=1)
plot(dcUpper, style=line, linewidth=3, color=aqua, offset=1)

plot(dcAverage, color=black, style=line, linewidth=3, title="Mid-Line Average")

strategy.entry("simpleBuy", strategy.long, when=close > dcAverage)
strategy.close("simpleBuy",when=close < dcLower)
    
strategy.entry("simpleSell", strategy.short,when=close < dcAverage)
strategy.close("simpleSell",when=close > dcAverage)