Эта стратегия объединяет несколько индикаторов EMA временных рамок и суждения о моделях K-линии для достижения относительно чувствительного долгосрочного захвата сигнала и выхода стоп-лосса.
Стратегия основывается на следующих показателях для оценки:
EMA: использует 2 набора из 13 и 21 цикла EMA для определения торгового сигнала при прорыве цены.
K-линейный шаблон: оценивает направление K-линейного объекта и использует его с индикатором EMA для фильтрации ложных прорывов.
Сопротивление поддержки: построено по самым высоким точкам в последние 10 циклов, чтобы определить, проходит ли прорыв через эту область для повышения надежности сигнала.
Возвышение в временном делении: 120 цикл закрытия выше открыт для суждения как возвышение в временном делении, как вспомогательное суждение.
Правила генерации торговых сигналов:
Бычий сигнал: Быстрая EMA прорывается через медленную EMA вверх с линией Ян K-линией, закрывает короткую позицию и открывает длинную.
Медвежий сигнал: Быстрая EMA переходит через медленную EMA с линией Yin-линией K, плоской длинной позицией.
Выход с остановкой потери: выход с остановкой потери на текущем положении при появлении обратного сигнала.
Вышеперечисленные риски могут быть смягчены с помощью таких методов, как избегание чрезмерной оптимизации, тщательный выбор параметров, строгое управление размером позиции.
Стратегия интегрирует несколько временных рамок 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) ///////////////////////////////////////////////////////////////////////////////////////////