Стратегия прорыва суперпозиции тройной EMA


Дата создания: 2023-12-28 15:56:54 Последнее изменение: 2023-12-28 15:56:54
Копировать: 0 Количество просмотров: 680
1
Подписаться
1621
Подписчики

Стратегия прорыва суперпозиции тройной EMA

Обзор

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

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

Эта стратегия основана на следующих принципах:

  1. Используйте три линии EMA с различными периодами ((200-дневная линия, 50-дневная линия, 20-дневная линия), чтобы определить основные тенденции рынка, среднесрочные тенденции и краткосрочные тенденции.

  2. Сигнал покупать возникает, когда краткосрочная тенденция EMA ((20-дневная линия) пересекает среднюю EMA ((50-дневная линия) вверх; сигнал продавать возникает, когда она пересекает вниз.

  3. В сочетании с формой K-линии, рассматривается надежность прорыва. Только если цена закрытия второй K-линии выше (<) максимальной цены (<) минимальной цены предыдущего дня, то считается надежным прорывом.

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

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

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

  2. В сочетании с K-линейной формой фильтрации вводят в заблуждение, чтобы избежать ненужного риска торговли.

  3. Установка точек остановки и эффективного контроля за единичными потерями.

Стратегический риск

  1. В условиях шока EMA дает большое количество ошибочных сигналов, которые не позволяют эффективно оценить движение рынка.

  2. Простые комбинации индикаторов приводят к плохому пониманию сложных ситуаций.

  3. Не учитывая стоимость сделки, вы не сможете получить прибыль на рынке с высокими комиссионными.

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

  1. Можно ввести другие показатели, такие как MACD, KDJ, чтобы сформировать портфель показателей, повышая точность суждения.

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

  3. Можно ввести индикатор объема сделок, чтобы избежать низкого количества ошибочных сигналов.

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

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

Исходный код стратегии
/*backtest
start: 2022-12-21 00:00:00
end: 2023-12-27 00:00:00
period: 1d
basePeriod: 1h
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=5
strategy("GHG RETRACEMENT MODE 1", overlay=true)

entryLevel1 = input(0.5, "ENTRY LEVEL 1")
entryLevel2 = input(0.25, "ENTRY LEVEL 2")
entryLevel3 = input(0.0, "ENTRY LEVEL 3")

stopLevel = input(-0.35, "STOP LEVEL")
tpLevel = input(0.88, "TP LEVEL")
dontUseEma = input(false, "Don't Use EMA")


get_level(level, level100, level0) =>
    level * (level100 - level0) + level0

buySignal = close[2] < open[2] and close[1] > open[1] and close[0] > open[0] and high[0] > open[2] and high[1] < high[2]
sellSignal = close[2] > open[2] and close[1] < open[1] and close[0] < open[0] and low[0] < open[2] and low[1] > low[2]

if buySignal and (close[0] > ta.ema(close, 200) or dontUseEma)
    l = label.new(bar_index, na)
    entryPrice1 = get_level(entryLevel1, high[0], low[2])
    entryPrice2 = get_level(entryLevel2, high[0], low[2])
    entryPrice3 = get_level(entryLevel3, high[0], low[2])
    
    exitPrice = get_level(tpLevel, high[0], low[2])
    stopPrice = get_level(stopLevel, high[0], low[2])
    
    strategy.order("BUY 1", strategy.long, comment="BUY 1", limit=entryPrice1)
    strategy.exit("exit", "BUY 1", limit=high[0], stop=stopPrice)
    strategy.order("BUY 2", strategy.long, comment="BUY 2", limit=entryPrice2)
    strategy.exit("exit", "BUY 2", limit=high[0], stop=stopPrice)

    label.set_text(l, "Buy => " + str.tostring(close[2]) + "\nSL=> " + str.tostring(stopPrice) + "\nTP => " + str.tostring(exitPrice) )
    label.set_color(l, color.green)
    label.set_yloc(l, yloc.belowbar)
    label.set_style(l, label.style_label_up)
    
if sellSignal and (close[0] < ta.ema(close, 200) or dontUseEma)
    a = label.new(bar_index, na)
    entryPrice1 = get_level(entryLevel1, low[0], high[2])
    entryPrice2 = get_level(entryLevel2, low[0], high[2])
    entryPrice3 = get_level(entryLevel3, low[0], high[2])
    
    exitPrice = get_level(tpLevel, low[0], high[2])
    stopPrice = get_level(stopLevel,low[0], high[2])
    
    strategy.order("SELL 1", strategy.short, comment="SELL 1", limit=entryPrice1)
    strategy.exit("exit", "SELL 1", limit=low[0], stop=stopPrice) 
    strategy.order("SELL 2", strategy.short, comment="SELL 2", limit=entryPrice2)
    strategy.exit("exit", "SELL 2", limit=low[0], stop=stopPrice) 

    label.set_text(a,"Sell => " + str.tostring(close[2]) + "\nSL=> " + str.tostring(stopPrice) + "\nTP => " + str.tostring(exitPrice) )
    label.set_color(a, color.red)
    label.set_yloc(a, yloc.abovebar)
    label.set_style(a, label.style_label_down)