Эта стратегия устанавливает точки остановки потери на основе недавних максимумов и минимумов, чтобы быстро войти в тенденции и строго контролировать риски. Она входит в длинные позиции, когда цены растут последовательно, и короткие позиции, когда цены падают последовательно. При удержании позиций уровень остановки потери для длинных позиций является самым низким из нескольких последних баров, а уровень остановки потери для коротких позиций является самым высоким. Этот динамический подход к остановке потери может эффективно улавливать тенденции, строго ограничивая потери.
input
Функция настройки периодов просмотраhiLen
иloLen
для самых высоких максимумов и самых низких минимумов, дефолт до 20.hiHighs
до предыдущей строки с использованиемta.highest(high, hiLen)[1]
, и самый низкий низloLows
использованиеta.lowest(low, loLen)[1]
.loLows
для длинных позиций иhiHighs
Не граф, когда плоский для легкого подтверждения.higherCloses
: последние 3 бара имеют последовательно более высокие закрытияlowerCloses
: последние 3 бара имеют последовательно более низкие закрытияisFlat
: нет текущей позицииisFlat
иhigherCloses
, ввести короткий, когдаisFlat
иlowerCloses
.loLows
; для коротких позиций - остановка наhiHighs
.Короче говоря, эта стратегия использует последние максимумы и минимумы для установки остановок, быстро входящих в сильные тренды и строго ограничивающих потери, таким образом эффективно захватывая прибыль от тренда.
Эта стратегия устанавливает динамические остановки на основе самих цен, чтобы эффективно улавливать сильные тенденции и строго контролировать риски. Ее преимущества заключаются в простоте, эффективности, быстрых входах, строгих остановках и высокой адаптивности. Однако она плохо работает на неуравновешенных рынках, концах тренда и экстремальных движениях и требует внимания к настройкам параметров. Будущие улучшения могут добавить подтверждение тренда и импульса, оптимизировать остановки и размещение позиций. В целом, это простая и эффективная стратегия сбалансированного улавливания тренда и контроля рисков, которая заслуживает глубоких исследований и оптимизации на практике.
/*backtest start: 2023-03-02 00:00:00 end: 2024-03-07 00:00:00 period: 1d basePeriod: 1h exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}] */ //@version=5 strategy(title="Highest high/lowest low stop", overlay=true) // STEP 1: // Make inputs for length of highest high and lowest low hiLen = input.int(20, title="Highest High Lookback", minval=2) loLen = input.int(20, title="Lowest Low Lookback", minval=2) // STEP 2: // Calculate recent extreme high and low hiHighs = ta.highest(high, hiLen)[1] loLows = ta.lowest(low, loLen)[1] // Plot stop values for visual confirmation plot(strategy.position_size > 0 ? loLows : na, style=plot.style_circles, color=color.green, linewidth=3, title="Lowest Low Stop") plot(strategy.position_size < 0 ? hiHighs : na, style=plot.style_circles, color=color.red, linewidth=3, title="Highest High Stop") // Trading conditions for this example strategy higherCloses = close > close[1] and close[1] > close[2] and close[2] > close[3] lowerCloses = close < close[1] and close[1] < close[2] and close[2] < close[3] isFlat = strategy.position_size == 0 // Submit entry orders if isFlat and higherCloses strategy.entry("EL", strategy.long) if isFlat and lowerCloses strategy.entry("ES", strategy.short) // STEP 3: // Submit stops based on highest high and lowest low if strategy.position_size > 0 strategy.exit("XL HH", stop=loLows) if strategy.position_size < 0 strategy.exit("XS LL", stop=hiHighs)