Стратегия кругового стоп-лосса на прорыве сопротивления


Дата создания: 2023-12-11 11:44:49 Последнее изменение: 2023-12-11 11:44:49
Копировать: 1 Количество просмотров: 573
1
Подписаться
1621
Подписчики

Стратегия кругового стоп-лосса на прорыве сопротивления

Обзор

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

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

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

  1. Используйте среднюю линию, чтобы определить направление тренда. В стратегии устанавливается быстрая и медленная средняя линия, проход медленной линии на быстрой линии означает повышение длинной линии, а снижение - снижение длинной линии.

  2. Прорыв устойчивости - это сигнал, когда цена превышает недавний максимум. Когда цена превышает недавний максимум, это считается сигналом прорыва устойчивости.

  3. Поддержка - это сигнал к прорыву поддержки. Когда цена снижается и прорывает недавние минимумы, это считается сигналом к прорыву поддержки.

  4. Настройка круговой остановки. Настройка стоп-линии после входа и корректировка в зависимости от колебаний цены, чтобы вокруг стоп-линии была цена.

  5. Стоп-убыток и стоп-выход. Стоп-убыток эффективно контролирует риск, а стоп-выход блокирует прибыль.

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

Анализ преимуществ

Эта стратегия имеет следующие преимущества:

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

  2. Хорошее управление рисками. Установка круговой остановки и остановки, чтобы вовремя остановить убытки и выйти.

  3. Сигнал точный. Прорыв в сопротивлении и прорыв в поддержке, сигнал точный и надежный.

  4. Простая и простая эксплуатация. Указатели и правила сигналов просты и понятны, параметры не сложны.

  5. Приспособность к рынку. Способность работать в различных сортах и в любых рыночных условиях.

Анализ рисков

В этой стратегии также есть некоторые риски, о которых следует помнить:

  1. Риск неудачи прорыва. После прорыва сопротивления может возникнуть отклонение и повторная попытка, что приводит к остановке.

  2. Риски оптимизации параметров. Неправильная настройка параметров может привести к частому или недостаточному сигналу. Процесс оптимизации требует осторожности.

  3. Риск отмены показателей. В особых условиях рынка показатели EMA могут быть отменены или отложены.

  4. Риск обратного тренда. При увеличении количества дискортированных позиций, которые отклоняются от рынка, убытки могут увеличиться.

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

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

Эта стратегия может быть улучшена в следующих аспектах:

  1. Оптимизация временных циклов. Корректировка параметров временных циклов для расчета средней линии и ценовой формы в поисках оптимального сочетания.

  2. Оптимизация адаптивности по разновидностям. Настройка параметров в зависимости от особенностей разных сортов.

  3. Оптимизация стратегии остановки убытков. Использование более стабильных и точных методов остановки, таких как движущаяся остановка, колебательная остановка и т. д.

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

  5. Добавление фильтров. Добавление фильтров, таких как объем торгов, волатильность, исключение ложных прорывов.

  6. Усиление входного сигнала. Добавление дополнительных показателей или форм в качестве подтверждения входного сигнала.

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

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

Исходный код стратегии
/*backtest
start: 2023-12-03 00:00:00
end: 2023-12-10 00:00:00
period: 30m
basePeriod: 15m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

// This source code is subject to the terms of the Mozilla Public License 2.0 at https://mozilla.org/MPL/2.0/
// © EduardoMattje

//@version=4
strategy("Reversal closing price", overlay=true, default_qty_type=strategy.percent_of_equity, default_qty_value=10, initial_capital=10000)

src = input(hl2, "Price source")
order_direction = input("Both", "Order direction", options=["Both", "Long", "Short"])

// EMA calculation and plot

ema_long_period = input(80, "EMA long period")
ema_short_period = input(8, "EMA short period")
ema_long = ema(src, ema_long_period)
ema_short = ema(src, ema_short_period)
ema_bull = ema_short > ema_long
ema_bear = ema_short < ema_long
plot(ema_long, "EMA long", ema_bull ? color.green : color.red, 3)
plot(ema_short, "EMA short", ema_bull ? color.green : color.red, 3)

// Settings

risk_reward_ratio = input(2.0, "Risk to reward ratio", minval=1.0, step=0.1)
stop_lookback = input(3, "Stoploss candle lookback", minval=1)
ema_cross_stop = input(true, "Close if EMA crosses in oposite direction")
allow_retracing = input(true, "Allow price retracing")

// RCP calculation

rcp_bull = low[0] < low[1] and low[0] < low[2] and close[0] > close[1]
rcp_bear = high[0] > high[1] and high[0] > high[2] and close[0] < close[1]

// Order placement

in_market = strategy.position_size != 0

long_condition = rcp_bull and ema_bull and not in_market and order_direction != "Short"
short_condition = rcp_bear and ema_bear and not in_market and order_direction != "Long"

bought = strategy.position_size[0] > strategy.position_size[1] and strategy.position_size[1] == 0
sold = strategy.position_size[0] < strategy.position_size[1] and strategy.position_size[1] == 0
closed = not in_market and in_market[1]

long_position = strategy.position_size > 0
short_position = strategy.position_size < 0

buy_price = high + syminfo.mintick
sell_price = low - syminfo.mintick

if long_condition
    strategy.entry("Long", true, stop=buy_price)
if short_condition
    strategy.entry("Short", false, stop=sell_price)
    
if allow_retracing
    better_price_long = barssince(closed) > barssince(long_condition) and barssince(long_condition) >= 1 and not in_market and ema_bull and buy_price < valuewhen(long_condition, buy_price, 0) and buy_price[0] < buy_price[1]
    if better_price_long
        strategy.cancel("Long")
        strategy.entry("Long", true, stop=buy_price)
    
    better_price_short = barssince(closed) > barssince(short_condition) and barssince(short_condition) >= 1 and not in_market and ema_bear and sell_price > valuewhen(short_condition, sell_price, 0) and sell_price[0] > sell_price[1]
    if better_price_short
        strategy.cancel("Short")
        strategy.entry("Short", false, stop=sell_price)

// Stoploss orders

stop_price = long_position ? valuewhen(bought, lowest(stop_lookback)[1] - syminfo.mintick, 0) : short_position ? valuewhen(sold, highest(3)[1] + syminfo.mintick, 0) : na
stop_comment = "Stoploss triggered"
strategy.close("Long", low <= stop_price, stop_comment)
strategy.close("Short", high >= stop_price, stop_comment)
plot(stop_price, "Stop price", color.red, 2, plot.style_linebr)

// EMA cross close orders

if ema_cross_stop
    if long_position and ema_bear
        strategy.close("Long", comment=stop_comment)
    if short_position and ema_bull
        strategy.close("Short", comment=stop_comment)

// Take profit orders

stop_ticks = abs(strategy.position_avg_price - stop_price)
take_profit_price = long_position ? valuewhen(bought, strategy.position_avg_price + stop_ticks * risk_reward_ratio, 0) : short_position ? valuewhen(sold, strategy.position_avg_price  - (stop_ticks * risk_reward_ratio), 0) : na
target_comment = "Take profit"
strategy.close("Long", high >= take_profit_price, target_comment)
strategy.close("Short", low <= take_profit_price, target_comment)
plot(take_profit_price, "Target price", color.green, 2, plot.style_linebr)