Отслеживание тренда SMA в нескольких временных масштабах и динамическая стратегия стоп-лосса

SMA Trend
Дата создания: 2024-06-03 10:57:05 Последнее изменение: 2024-06-03 10:57:05
Копировать: 3 Количество просмотров: 553
1
Подписаться
1617
Подписчики

Отслеживание тренда SMA в нескольких временных масштабах и динамическая стратегия стоп-лосса

Обзор

Эта стратегия основана на простых движущихся средних (SMA) в разных временных масштабах, чтобы захватить рыночные тенденции. Она генерирует сигналы покупки и продажи, сравнивая относительное положение краткосрочных и долгосрочных SMA. В то же время, стратегия использует условия подтверждения тенденции, чтобы отфильтровать фальшивые сигналы и повысить точность торговли. Кроме того, стратегия также имеет функции остановки и остановки потерь для управления рисками.

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

  1. Вычисление краткосрочных и долгосрочных SMA для определения направления рыночных тенденций.
  2. Когда краткосрочный SMA попадает в долгосрочный SMA, генерируется сигнал покупки; когда краткосрочный SMA попадает в долгосрочный SMA, генерируется сигнал продажи.
  3. Используйте условия подтверждения тренда для фильтрации фальшивых сигналов, выполняя покупку только в случае, если основной тренд является многоголовым, и выполняя продажу только в случае, если основной тренд является пустым.
  4. Настройка функций стоп-стоп и стоп-лосс, чтобы контролировать риск торгов. Когда цена достигнет заданного уровня стоп-стоп или стоп-лосса, выйти из позиции.
  5. Динамически корректируйте позиции в соответствии с условиями подтверждения тренда. Во время изменения основного тренда своевременно ликвидируйте позиции, чтобы предотвратить убытки, вызванные обратным трендом.

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

  1. Тренд-трек: стратегия основана на SMA в разных временных масштабах, которая эффективно улавливает основные тенденции рынка и адаптируется к различным состояниям рынка.
  2. Подтверждение тренда: повышение надежности торговых сигналов, уменьшение недействительных сделок путем введения условий подтверждения тренда, фильтрации фальшивых сигналов.
  3. Управление рисками: встроенная функция остановки и прекращения убытков, помогающая контролировать риски торговли и защищать безопасность средств инвесторов.
  4. Динамическая корректировка: Динамическая корректировка позиций в соответствии с условиями подтверждения тенденции, своевременное реагирование на изменения рынка, уменьшение убытков, вызванных обратным трендом.

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

  1. Риск оптимизации параметров: эффективность стратегии зависит от выбора параметров SMA и Stop Loss Level. Неправильная настройка параметров может привести к неэффективности стратегии.
  2. Риск шокирующего рынка: в условиях шокирующего рынка, частота торговых сигналов может привести к чрезмерной торговле, увеличению стоимости торговли и риска.
  3. Риск внезапных событий: в случае внезапных крупных событий рынок может сильно колебаться, и эта стратегия может быть не в состоянии своевременно реагировать, что приведет к большим потерям.

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

  1. Введение большего количества технических показателей: в сочетании с другими техническими показателями, такими как MACD, RSI и т. Д., повышение точности и устойчивости определения тенденций.
  2. Выбор оптимальных параметров: поиск оптимального SMA-цикла с помощью отслеживания исторических данных и оптимизации параметров, комбинация параметров стоп-стоп-лосс-водное равновесие, повышение эффективности стратегии.
  3. Улучшение управления рисками: внедрение более продвинутых технологий управления рисками, таких как динамическая остановка, управление позицией и т. д., для дальнейшего контроля рисковых выходов.
  4. Приспосабливание к различным рыночным условиям: в зависимости от волатильности рынка и силы тренда, динамически корректируется параметр стратегии, чтобы стратегия могла адаптироваться к различным рыночным условиям.

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

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

Исходный код стратегии
/*backtest
start: 2024-05-01 00:00:00
end: 2024-05-31 23:59:59
period: 6h
basePeriod: 15m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=5
strategy("market slayer v3", overlay=true)

// Input parameters
showConfirmationTrend = input(title='Show Trend', defval=true)
confirmationTrendTimeframe = input.timeframe(title='Main Trend', defval='240')
confirmationTrendValue = input(title='Main Trend Value', defval=2)
showConfirmationBars = input(title='Show Confirmation Bars', defval=true)
topCbarValue = input(title='Top Confirmation Value', defval=60)
short_length = input.int(10, minval=1, title="Short SMA Length")
long_length = input.int(20, minval=1, title="Long SMA Length")
takeProfitEnabled = input(title="Take Profit Enabled", defval=false)
takeProfitValue = input.float(title="Take Profit (points)", defval=20, minval=1)
stopLossEnabled = input(title="Stop Loss Enabled", defval=false)
stopLossValue = input.float(title="Stop Loss (points)", defval=50, minval=1)

// Calculate SMAs
short_sma = ta.sma(close, short_length)
long_sma = ta.sma(close, long_length)

// Generate buy and sell signals based on SMAs
buy_signal = ta.crossover(short_sma, long_sma)
sell_signal = ta.crossunder(short_sma, long_sma)

// Plot SMAs
plot(short_sma, color=color.rgb(24, 170, 11), title="Short SMA")
plot(long_sma, color=color.red, title="Long SMA")

// Confirmation Bars
f_confirmationBarBullish(cbValue) =>
    cBarClose = close
    slowConfirmationBarSmaHigh = ta.sma(high, cbValue)
    slowConfirmationBarSmaLow = ta.sma(low, cbValue)
    slowConfirmationBarHlv = int(na)
    slowConfirmationBarHlv := cBarClose > slowConfirmationBarSmaHigh ? 1 : cBarClose < slowConfirmationBarSmaLow ? -1 : slowConfirmationBarHlv[1]
    slowConfirmationBarSslDown = slowConfirmationBarHlv < 0 ? slowConfirmationBarSmaHigh : slowConfirmationBarSmaLow
    slowConfirmationBarSslUp = slowConfirmationBarHlv < 0 ? slowConfirmationBarSmaLow : slowConfirmationBarSmaHigh
    slowConfirmationBarSslUp > slowConfirmationBarSslDown

fastConfirmationBarBullish = f_confirmationBarBullish(topCbarValue)
fastConfirmationBarBearish = not fastConfirmationBarBullish
fastConfirmationBarClr = fastConfirmationBarBullish ? color.green : color.red

fastConfirmationChangeBullish = fastConfirmationBarBullish and fastConfirmationBarBearish[1]
fastConfirmationChangeBearish = fastConfirmationBarBearish and fastConfirmationBarBullish[1]

confirmationTrendBullish = request.security(syminfo.tickerid, confirmationTrendTimeframe, f_confirmationBarBullish(confirmationTrendValue), lookahead=barmerge.lookahead_on)
confirmationTrendBearish = not confirmationTrendBullish
confirmationTrendClr = confirmationTrendBullish ? color.green : color.red

// Plot trend labels
plotshape(showConfirmationTrend, style=shape.square, location=location.top, color=confirmationTrendClr, title='Trend Confirmation Bars')
plotshape(showConfirmationBars and (fastConfirmationChangeBullish or fastConfirmationChangeBearish), style=shape.triangleup, location=location.top, color=fastConfirmationChangeBullish ? color.green : color.red, title='Fast Confirmation Bars')
plotshape(showConfirmationBars and buy_signal and confirmationTrendBullish, style=shape.triangleup, location=location.top, color=color.green, title='Buy Signal')
plotshape(showConfirmationBars and sell_signal and confirmationTrendBearish, style=shape.triangledown, location=location.top, color=color.red, title='Sell Signal')

// Generate trade signals
buy_condition = buy_signal and confirmationTrendBullish and not (strategy.opentrades > 0)
sell_condition = sell_signal and confirmationTrendBearish and not (strategy.opentrades > 0)

strategy.entry("Buy", strategy.long, when=buy_condition, comment ="BUY CALLS")
strategy.entry("Sell", strategy.short, when=sell_condition, comment ="BUY PUTS")

// Take Profit
if (takeProfitEnabled)
    strategy.exit("Take Profit Buy", from_entry="Buy", profit=takeProfitValue)
    strategy.exit("Take Profit Sell", from_entry="Sell", profit=takeProfitValue)

// Stop Loss
if (stopLossEnabled)
    strategy.exit("Stop Loss Buy", from_entry="Buy", loss=stopLossValue)
    strategy.exit("Stop Loss Sell", from_entry="Sell", loss=stopLossValue)

// Close trades based on trend confirmation bars
if strategy.opentrades > 0
    if strategy.position_size > 0
        if not confirmationTrendBullish
            strategy.close("Buy", comment ="CLOSE CALLS")
    else
        if not confirmationTrendBearish
            strategy.close("Sell", comment ="CLOSE PUTS")

// Define alert conditions as booleans
buy_open_alert = buy_condition
sell_open_alert = sell_condition
buy_closed_alert = strategy.opentrades < 0
sell_closed_alert = strategy.opentrades > 0

// Alerts
alertcondition(buy_open_alert, title='Buy calls', message='Buy calls Opened')
alertcondition(sell_open_alert, title='buy puts', message='buy Puts Opened')
alertcondition(buy_closed_alert, title='exit calls', message='exit calls ')
alertcondition(sell_closed_alert, title='exit puts', message='exit puts Closed')