Стратегия индекса волатильности DEMA

Автор:Чао Чжан, Дата: 2023-10-24 16:04:37
Тэги:

img

Обзор

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

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

  1. Вычислить двойную экспоненциальную скользящую среднюю (DEMA) цены по формуле: DEMA = 2*EMA(цены, N) - EMA(EMA(цены, N), N)

  2. Расчет волатильности цен относительно DEMA: Волатильность = (цена - DEMA) / цена * 100%

  3. Применить DEMA сглаживание на волатильности снова, чтобы получить тренд сигнал волатильности

  4. Когда волатильность выше определенного уровня, переходите на длинный курс, а когда она ниже, переходите на короткий.

  5. Могут торговать только в течение определенного периода времени.

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

  1. DEMA замечает изменения тренда быстрее, чем простые скользящие средние.

  2. Волатильность отражает настроение рынка, рост волатильности представляет доминирование быков, падение представляет медведей.

  3. Сглаживание волатильности отфильтровывает краткосрочный шум и фиксирует основную тенденцию.

  4. Торговля в определенные периоды времени позволяет избежать ненужных расходов на сдвиг.

  5. Стоп-лосс и стратегии выхода контролируют риск.

Риски

  1. DEMA может отставать во время сильных тенденций, пропуская лучшие точки входа.

  2. Индекс волатильности может давать ложные сигналы, должен сочетаться с другими показателями.

  3. Настроить стоп-потерю, чтобы не увеличить потерю.

  4. Пропущенные возможности за пределами периода торговли.

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

Управление рисками

  1. Оптимизируйте параметры DEMA, используйте меньшие значения N.

  2. Для подтверждения объедините другие индикаторы, такие как RSI, MACD.

  3. Установите стоп-лосс на основе исторических данных и максимально допустимых потерь.

  4. Оптимизировать выбор периода торговли.

  5. Испытывать оптимальные сроки торговли отдельно для различных продуктов.

Возможности для расширения

  1. Испытайте различные комбинации параметров DEMA для лучшего сглаживания.

  2. Попробуйте другие скользящие средние, как EMA, SMA.

  3. Дополнительное сглаживание волатильности с помощью различных параметров.

  4. Добавить другие показатели для многофакторной проверки.

  5. Используйте машинное обучение для автоматической оптимизации параметров входа и выхода.

  6. Испытывать оптимальные параметры отдельно для различных продуктов.

  7. Добавьте стоп-лосс и стратегии выхода, чтобы контролировать риск.

Резюме

Эта стратегия отслеживает изменения тренда на рынке, рассчитывая сглаженную волатильность DEMA, идя длинный, когда волатильность повышается, и короткий, когда она падает. Но задержка DEMA и ложные сигналы являются рисками. Параметры должны быть оптимизированы, строго реализованы стоп-лосс и другие индикаторы, объединенные для подтверждения. Если использовать правильно, эта стратегия может поймать изменение тренда и обеспечить хорошую отдачу от инвестиций.


/*backtest
start: 2022-10-17 00:00:00
end: 2023-10-23 00:00:00
period: 1d
basePeriod: 1h
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version= 2
strategy("DEMA of DPD Strategy ",shorttitle="DPD% DEMA " ,overlay=false)

buyper =input(-2)
sellper=input(2)

demalen = input(50,title="Dema Length")

e1= ema(close,demalen)
e2=ema(e1,demalen)
demaprice  =   2 * e1 - e2

price=close
demadifper =  ((price-demaprice)/price)*100


OverDemaPer = input(1, title="Band for OverBought")
UnderDemaPer= input(-1,title="Band for OverSold")

band1 = hline(OverDemaPer)
band0 = hline(UnderDemaPer)
zeroline=0
fill(band1, band0, color=green, transp=90)


demalen2 = input(21,title="DEMA to Calculate dema of DPD")
demaofdpd =ema(demadifper,demalen2)
demaofdpd2 =ema(demaofdpd,demalen2)
resultstrategy = 2*demaofdpd - demaofdpd2

plot(resultstrategy,color=blue)


yearfrom = input(2018)
yearuntil =input(2019)
monthfrom =input(6)
monthuntil =input(12)
dayfrom=input(1)
dayuntil=input(31)



if (  crossover(resultstrategy,buyper)  ) 
    strategy.entry("BUY", strategy.long, stop=close, oca_name="TREND",  comment="BUY")
    
else
    strategy.cancel(id="BUY")


if ( crossunder(resultstrategy,sellper) ) 

    strategy.entry("SELL", strategy.short,stop=close, oca_name="TREND",  comment="SELL")
else
    strategy.cancel(id="SELL")
    
    
    

Больше