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

Автор:Чао Чжан, Дата: 2024-01-02 10:44:53
Тэги:

img

Обзор

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

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

Эта стратегия использует динамические показатели скользящей средней, включая ALMA, EMA, SMA и многое другое. Принцип заключается в том, чтобы идти длинным, когда цена превышает скользящую среднюю, и идти коротким, когда она превышает ее. То есть скользящая средняя служит барометром для ценовой тенденции, и сигналы могут генерироваться, когда происходит изменение тренда.

В частности, стратегия использует скользящие средние, сформированные высокими и низкими ценами. Низкая цена MA служит линией сигнала для длинных сигналов, в то время как высокая цена MA служит линией для шортов. Когда цена закрытия повышается выше низкой цены MA, идти долго. Когда закрытие падает ниже высокой цены MA, идти коротко.

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

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

  • Простые настройки параметров с индикатором MA, легкая в эксплуатации
  • Ясные правила сигнализации без ложных сигналов
  • Гибкие типы ОРК для адаптации к изменениям на рынке
  • Периоды корректируемого MA соответствуют различным трендовым циклам
  • Подтверждение сигнала в нескольких временных рамках повышает надежность

Риски и решения

  • Просрочка MA может упустить некоторые возможности
    • Сокращение периода MA или использование EMA
  • Краткосрочные большие риски, связанные с колебаниями
    • Расширить зону остановки для гибкости
  • Долгосрочные риски, не способные своевременно обеспечить прибыль
    • Комбинируйте другие показатели, избегайте погони за максимумами и убийствами минимумов

Руководство по оптимизации

  • Корректировка типа и параметров разрешения на использование на основе характеристик символа
  • Добавление вспомогательных показателей для улучшения стратегии
  • Добавить механизмы остановки потери и получения прибыли
  • Оценка надежности сигнала в разных временных рамках
  • Использование машинного обучения для поиска лучших параметров

Заключение

Эта стратегия оценивает направление тренда с помощью MA и генерирует сигналы, основанные на принципах прорыва. Она проста в использовании и подходит для средне- и долгосрочного хранения. Параметры также могут быть скорректированы для адаптации к изменениям рынка. Риски от краткосрочных колебаний и длительного хранения необходимо управлять с помощью стоп-лосса/прибыли. Есть возможность для улучшения путем включения большего количества индикаторов и поиска оптимальных параметров с помощью машинного обучения.


/*backtest
start: 2023-12-02 00:00:00
end: 2024-01-01 00:00:00
period: 1h
basePeriod: 15m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=4
strategy(title="Baseline Strategy - evo", shorttitle="Baseline", overlay=true)

//INPUTS
mat =               input("ALMA", "MA Type", options=["SMA", "EMA", "WMA", "HMA", "VWMA", "RMA", "ALMA"])
baseline =          input(55, title="MA Length")
src =               input(ohlc4, title="Closing Source")

offset =            input(0.85, step=0.05, title="Offset (alma only)")
sigma =             input(10, title="Sigma (alma only)")

useCurrentRes =     input(true, title="Use Current Resolution")
resCustom =         input("1440", title="Timeframe")

showsignals =       input(false, title="Show Signals ?")

//BASELINE
baselinehigh = 

 mat=="SMA" ? sma(high,baseline) : 
 mat=="EMA" ? ema(high,baseline) : 
 mat=="WMA" ? wma(high,baseline) : 
 mat=="HMA" ? wma(2*wma(high, baseline/2)-wma(high, baseline), round(sqrt(baseline))) : 
 mat=="VWMA" ? vwma(high,baseline) : 
 mat=="RMA" ? rma(high,baseline) :
 mat=="ALMA" ? alma(high, baseline, offset, sigma) : na

baselinelow = 

 mat=="SMA" ? sma(low,baseline) : 
 mat=="EMA" ? ema(low,baseline) : 
 mat=="WMA" ? wma(low,baseline) : 
 mat=="HMA" ? wma(2*wma(low, baseline/2)-wma(low, baseline), round(sqrt(baseline))) : 
 mat=="VWMA" ? vwma(low,baseline) : 
 mat=="RMA" ? rma(low,baseline) : 
 mat=="ALMA" ? alma(low, baseline, offset, sigma) : na

//RESOLUTION
res =               useCurrentRes ? timeframe.period : resCustom

mtfhigh =           security(syminfo.tickerid, res, baselinehigh)
mtflow =            security(syminfo.tickerid, res, baselinelow)

//PLOTS
plot(mtfhigh, color=color.navy, linewidth=2, transp=0, title="Baseline High")
plot(mtflow, color=color.navy, linewidth=2, transp=0, title="Baseline Low")

long =              src > mtfhigh
short =             src < mtflow

barcolor(long ? #ffe0b2 : short ? #2a2e39 : not long and not short ? #b09e82 : na, title="BaseLine BarColor")

signal = 0
signal := long ? 1 : short ? 2 : nz(signal[1])

plotshape(showsignals ? (signal != signal[1] and long ? mtflow : na) : na, title="Long", location=location.absolute, size=size.small, style=shape.labelup, text="Long", textcolor=color.black, transp=40, color=#00ff00)
plotshape(showsignals ? (signal != signal[1] and short ? mtfhigh : na) : na, title="Short", location=location.absolute, size=size.small, style=shape.labeldown, text="Short", textcolor=color.white, transp=40, color=#ff0000)

alertcondition(signal != signal[1], title="Trend Change !", message="Trend Change !")

if (long)
    strategy.entry("Long", strategy.long)
if (short)
    strategy.entry("Short", strategy.short)

Больше