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

Автор:Чао Чжан, Дата: 2024-02-29 14:00:35
Тэги:

img

Обзор

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

Принцип стратегии

Стратегия сначала рассчитывает 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)
    



Больше