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


Дата создания: 2024-01-02 10:44:53 Последнее изменение: 2024-01-02 10:44:53
Копировать: 0 Количество просмотров: 559
1
Подписаться
1621
Подписчики

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

Обзор

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

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

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

В частности, стратегия использует среднюю линию, образованную высокой и низкой точкой, а затем использует среднюю линию низкой точки в качестве многосигнальной линии, а среднюю линию высокой точки в качестве короткой линии. Когда цена закрытия выше средней линии низкой точки, делайте больше; когда цена закрытия ниже средней линии высокой точки, делайте короткую.

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

Стратегические преимущества

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

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

  • Средний показатель отстает, возможно, мы упустим некоторые возможности
    • Сокращение среднелинейных циклов или использование индекса EMA
  • Более сильные колебания в краткосрочной перспективе, риск остановки
    • Уместно отпустить остановку, чтобы обеспечить достаточный пространство для движения
  • Долгосрочные риски, которые могут не быть своевременно устранены
    • В сочетании с другими показателями, избегайте преследования высоких и низких показателей.

Оптимизация стратегии

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

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

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

Исходный код стратегии
/*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)