Эта стратегия использует сигналы прорыва цены и колеблющийся механизм остановки потери для управления рисками. Она длится, когда цена выходит из сопротивления, и становится короткой, когда цена выходит из поддержки. В то же время для лучшего контроля риска применяются колеблющиеся остановки потери и остановки получения прибыли.
Стратегия основана на следующих ключевых моментах:
Использование MA для определения направления тренда. Быстрые и медленные MA на графике, быстрые MA, пересекающие над медленными MA, сигнализируют бычий тренд, а пересекающие ниже сигналы медленный тренд.
Когда цена поднимается и прерывает недавний высокий показатель, это считается прорывом уровня сопротивления, длинным.
Когда цена падает и прорывает недавнее низкое положение, это считается прорывом уровня поддержки, коротким.
Оциллирующий стоп-лосс. После входа в линию стоп-лосса устанавливается и продолжает корректироваться на основе колебаний цен, образуя колеблющийся механизм стоп-лосса.
Стоп-потеря контролирует риск, а стоп-потеря блокирует прибыль.
В частности, он использует средний показатель высоких и низких цен в качестве источника, графики быстрых и медленных EMA для определения тенденций. Когда быстрая EMA выходит выше медленной EMA и появляется сигнал прорыва сопротивления, она идет на длинный. Когда быстрая EMA падает ниже медленной EMA и появляется прорыв поддержки, она идет на короткий. После входа, самая низкая цена в определенные периоды устанавливается как линия остановки потери, продолжает корректироваться по мере роста цены. Линия получения прибыли графикуется для блокировки прибыли. Стратегия эффективно контролирует риск, в то время как прибыль от тенденций.
Преимущества этой стратегии включают:
Последование тенденциям может привести к стабильной прибыли от долгосрочных тенденций.
Отличный контроль рисков, колеблющаяся остановка и защитная остановка быстро сокращают потери.
Сигналы точные. длинный прорыв сопротивления и короткий прорыв поддержки обеспечивают надежные сигналы.
Простые правила, указатели и сигналы просты, легко следовать.
Хорошо работает с различными продуктами и условиями рынка.
Некоторые риски для этой стратегии:
Риск неудачного прорыва. После первоначального прорыва цена может вернуться или отступить, запустив стоп-лосс.
Риск оптимизации параметров. Плохая настройка параметров приводит к слишком большому количеству или слишком малому количеству сигналов. Оптимизация требует осторожности.
В экстремальных условиях EMA могут перестать работать или отставать от цены.
Риск отмены тренда. Хранение позиции против тренда приводит к накоплению потерь при изменении тренда.
Правильная настройка параметров, большая потеря стопа, строгое соблюдение правил могут значительно смягчить вышеперечисленные риски.
Стратегия может быть улучшена в следующих аспектах:
Оптимизация временных рамок, корректировка периодов расчета МА и ценовых моделей, поиск лучших комбинаций.
Оптимизация адаптивности, настройка параметров для различных продуктов.
Оптимизация стоп-лосса. Проверьте более продвинутые методы стоп-лосса, такие как стоп-остановка, стоп-люстра.
Возьмите оптимизацию прибыли. Примите адаптивную или экспоненциальную прибыль, выходящую на выходы для лучшей награды.
Добавьте фильтры. Добавьте фильтры громкости и волатильности, чтобы избежать ложных вырывов.
Усилить входные сигналы, объединить больше индикаторов или моделей для подтверждения входов.
Это эффективная стратегия выхода с хорошим контролем рисков, стабильной моделью прибыли и простым логическим потоком.
/*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)