
Трехкратная стратегия свертывания с прорывами использует третий индекс для определения направления рыночной тенденции, вступая в точку прорыва. Эта стратегия одновременно сочетает в себе K-линейную форму для определения сигнала.
Эта стратегия основана на следующих принципах:
Используйте три линии EMA с различными периодами ((200-дневная линия, 50-дневная линия, 20-дневная линия), чтобы определить основные тенденции рынка, среднесрочные тенденции и краткосрочные тенденции.
Сигнал покупать возникает, когда краткосрочная тенденция EMA ((20-дневная линия) пересекает среднюю EMA ((50-дневная линия) вверх; сигнал продавать возникает, когда она пересекает вниз.
В сочетании с формой K-линии, рассматривается надежность прорыва. Только если цена закрытия второй K-линии выше (<) максимальной цены (<) минимальной цены предыдущего дня, то считается надежным прорывом.
Устанавливается точка остановки, чтобы избежать риска, выходящего за пределы разумного диапазона колебаний
Использование нескольких показателей EMA для определения тенденций повышает точность оценки.
В сочетании с K-линейной формой фильтрации вводят в заблуждение, чтобы избежать ненужного риска торговли.
Установка точек остановки и эффективного контроля за единичными потерями.
В условиях шока EMA дает большое количество ошибочных сигналов, которые не позволяют эффективно оценить движение рынка.
Простые комбинации индикаторов приводят к плохому пониманию сложных ситуаций.
Не учитывая стоимость сделки, вы не сможете получить прибыль на рынке с высокими комиссионными.
Можно ввести другие показатели, такие как MACD, KDJ, чтобы сформировать портфель показателей, повышая точность суждения.
Тестирование может быть оптимизировано в зависимости от разных сортов и периодов, чтобы параметры стратегии были более соответствующими характеристикам данной породы.
Можно ввести индикатор объема сделок, чтобы избежать низкого количества ошибочных сигналов.
Тройная 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)