Стратегия комбинирования многовременных прорывов EMA и свечных паттернов


Дата создания: 2024-02-21 15:00:06 Последнее изменение: 2024-02-21 15:00:06
Копировать: 0 Количество просмотров: 585
1
Подписаться
1617
Подписчики

Стратегия комбинирования многовременных прорывов EMA и свечных паттернов

Обзор

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

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

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

  1. EMA средняя линия: используется 13-циклическая, 21-циклическая группа 2 EMA, чтобы определить, что цена прорыв формирует торговый сигнал.

  2. Форма K-линии: определяет направление K-линии, используется в сочетании с индикатором EMA, фильтрует ложные прорывы.

  3. Поддержка сопротивления: используется недавняя 10-циклическая highest высокая точка построена, чтобы оценить прорыв через эту область для повышения надежности сигнала.

  4. Повышение цены: 120 циклов, когда цена закрытия закрытия оценивается как повышение цены открытия открытия, в качестве вспомогательного решения.

Правила генерации торговых сигналов:

  1. Многоголовый сигнал: быстрая EMA вверх, прорыв медленной EMA, и для солнечной линии K-линии, закрытие пустого склада открыто.

  2. Поверхностный сигнал: быстрая EMA падает ниже медленной EMA, а также на K-линию, чтобы сгладить позиции.

  3. Стоп-убыток выхода: Стоп-убыток выхода из текущей позиции при появлении обратного сигнала.

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

  1. Многократные временные рамки EMA позволяют более надежно оценивать тенденции и избегать ложных прорывов.
  2. Фильтрация в сочетании с направлением K-линии позволяет более точно идентифицировать тенденции.
  3. Повышение частоты и поддержка резистентности для обеспечения качества сигнала.
  4. Применение обратной руки в качестве метода остановки убытков снижает риск убытков.

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

  1. Недействительный прорыв влечет за собой риск убытков. Даже если ввести многократные временные рамки EMA и суждения субъектов K-линии, влияние недействительного прорыва на стратегию не может быть полностью исключено.
  2. Риск выбора параметров. Неправильная настройка параметров, таких как цикл EMA, цикл K-линии, может привести к снижению качества сигнала.
  3. Риск отказа от сопротивления поддержки. Исторический отказ от сопротивления поддержки является обычным явлением, которое также может привести к недостаточному импульсу при создании сигнала.
  4. Временный риск неисправности. Временные обстоятельства меняются, и нельзя полностью полагаться на временные суждения.

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

Направление оптимизации стратегии

  1. Внедрение вспомогательных моделей машинного обучения. Можно обучить классификационную модель определению направления K-линейных объектов, повышая точность определения.
  2. Добавление адаптивных стоп-механизмов, таких как trailing stop или stop-loss на основе волатильности.
  3. Вместе с эмоциональным анализом. Внедрение определённых механизмов оценки мнения в СМИ, чтобы избежать влияния негативных новостей на стратегию.
  4. Добавление модулей управления позициями. Например, введение фиксированной пропорции позиций или модулей регулирования позиций на основе управления капиталом.

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

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

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

//@version=2
strategy(title='ck - CryptoSniper Longs Only (Strategy)', shorttitle='ck - CryptoSniper Longs (S) v1', overlay=true, precision=2, commission_value=0.25, default_qty_type=strategy.percent_of_equity, pyramiding=0, default_qty_value=100, initial_capital=100)

open_long = 0
close_position = 0
last_long=close
last_short=close

//Candle body resistance Channel-----------------------------//
len = 34
src = input(close, title="Candle body resistance Channel")
out = sma(src, len)
last8h = highest(close, 13)
lastl8 = lowest(close, 13)
bearish = cross(close,out) == 1 and falling(close, 1)
bullish = cross(close,out) == 1 and rising(close, 1)
channel2=false

//-----------------Support and Resistance 
RST = input(title='Support / Resistance length:', defval=10) 
RSTT = valuewhen(high >= highest(high, RST), high, 0)
RSTB = valuewhen(low <= lowest(low, RST), low, 0)

//--------------------Trend colour ema------------------------------------------------// 
src0 = close, len0 = input(13, minval=1, title="EMA 1")
ema0 = ema(src0, len0)
direction = rising(ema0, 2) ? +1 : falling(ema0, 2) ? -1 : 0

//-------------------- ema 2------------------------------------------------//
src02 = close, len02 = input(21, minval=1, title="EMA 2")
ema02 = ema(src02, len02)
direction2 = rising(ema02, 2) ? +1 : falling(ema02, 2) ? -1 : 0

//=============Hull MA//
show_hma = false
hma_src = input(close, title="HullMA Source:")
hma_base_length = input(8, minval=1, title="HullMA Base Length:")
hma_length_scalar = input(5, minval=0, title="HullMA Length Scalar:")
hullma(src, length)=>wma(2*wma(src, length/2)-wma(src, length), round(sqrt(length)))

//============ signal Generator ==================================//
Period=input(title='Period', defval='120')
ch1 = request.security(syminfo.tickerid, Period, open)
ch2 = request.security(syminfo.tickerid, Period, close)

// Signals//
long = crossover(request.security(syminfo.tickerid, Period, close),request.security(syminfo.tickerid, Period, open))
short = crossunder(request.security(syminfo.tickerid, Period, close),request.security(syminfo.tickerid, Period, open))
last_long := long ? time : nz(last_long[1])
last_short := short ? time : nz(last_short[1])
long_signal = crossover(last_long, last_short) ? 1 : -1
short_signal = crossover(last_short, last_long) ? -1 : 1

if (long_signal == 1)
    strategy.entry("Long Open", strategy.long)

if (short_signal == -1)
    strategy.close("Long Open")
    
if (long_signal[1] == 1 and short_signal[1] == 1)
    open_long := 1
    close_position := 0

if (short_signal[1] == -1 and long_signal[1] == -1)
    open_long := 0
    close_position := 1

plotshape(open_long == 1, title="Open Long", location=location.belowbar, style=shape.triangleup, size=size.small, color=green, transp=10)
plotshape(close_position == 1, title="Close Long", location=location.abovebar, style=shape.triangledown, size=size.small, color=red, transp=10)
//plot(0, title="Trigger", color=white)

///////////////////////////////////////////////////////////////////////////////////////////