Стратегия последовательности трендов цикла позиций - это количественная стратегия торговли, которая определяет направление тренда на основе 200-дневной простой скользящей средней (SMA). Она предоставляет два режима -
Основным показателем этой стратегии является 200-дневная SMA. Стратегия имеет два режима:
Следуйте режиму восходящего тренда: займите длинную позицию, когда закрытие превышает 200-дневную SMA; закрыть позицию, когда активируется стоп-лосс или прибыль.
Следуйте режиму нисходящего тренда: займите длинную позицию, когда закрытие находится ниже 200-дневной SMA; закрыть позицию, когда активируется стоп-лосс или прибыль.
Долгое условие определено вlongCondition
Условие закрытия определяется вcloseCondition
переменная, основанная на стоп-лосс, take profit и SMA.
В частности,strategy.entry
используется для открытия длинных позиций при выполнении длинного условия.strategy.exit
используется для закрытия позиций при запуске условия закрытия.
Преимущества этой стратегии включают:
Простая и понятная логика, которую легко понять.
Предоставляет два дополнительных режима для различных рыночных условий.
Настраиваемые стоп-лосс и прибыль позволяют настраивать профиль риска и прибыли.
Использует известный 200-дневный индикатор SMA для определения направления тренда.
Создает автоматические торговые сигналы без ручного вмешательства.
Риски этой стратегии включают:
Слишком зависимо от одного индикатора, склонны к ложным сигналам, добавление других индикаторов, таких как MACD, KDJ для подтверждения может помочь.
Стоп-лосс и уровни прибыли слишком узкие или слишком широкие могут привести к преждевременной остановке или отсутствию идеальных точек выхода.
Использование ценового закрытия для сигналов имеет предвзятое отношение к цене закрытия.
Не учитывает затраты на торговлю. Нужно сохранить затраты при запуске.
Некоторые способы улучшения стратегии:
Добавить другие индикаторы для подтверждения сигналов и избежать ложных сигналов, например MACD.
Оптимизируйте параметры стоп-лосса и прибыли, чтобы найти оптимальную комбинацию с помощью обратного тестирования.
Добавить фильтр тренда, чтобы торговать только в хорошо определенных тенденциях, например, ADX.
Улучшить способ входа, рассмотрев тело свечи или добавив подтверждение.
Для проверки надежности сигнала необходимо учитывать объем торговли.
Испытать различные периоды SMA, чтобы найти оптимальный параметр.
В заключение, стратегия имеет четкую и понятную логику с практической ценностью. Но зависимость от одного индикатора имеет ограничения. Для подтверждения необходимо добавить больше условий. Параметры также нуждаются в тестировании и оптимизации для лучшей производительности в режиме реального времени. Кроме того, в режиме реального времени необходимо учитывать торговые издержки, такие как скольжение и комиссии.
/*backtest start: 2022-11-10 00:00:00 end: 2023-11-16 00:00:00 period: 1d basePeriod: 1h 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/ // © I11L //@version=5 strategy("Cycle Position Trading", overlay=true, pyramiding=1, default_qty_value=100000, initial_capital=100000, default_qty_type=strategy.cash, process_orders_on_close=false, calc_on_every_tick=false) // Input for selecting the mode mode = input.string("Buy Uptrend", options = ["Buy Uptrend", "Buy Downtrend"]) // Input for customizing stop loss and take profit levels stopLoss = input.float(0.9, title="Stop Loss (SL) level", step=0.01) takeProfit = input.float(1.1, title="Take Profit (TP) level", step=0.01) // Calculate the 200-day Simple Moving Average (SMA) sma = ta.sma(close, 200) // Plot the SMA on the chart plot(sma) // Define the conditions for entering a long position based on the selected mode longCondition = mode == "Buy Uptrend" ? close > sma and close[5] > sma : close < sma // Define the conditions for closing a position based on the selected mode closeCondition = mode == "Buy Uptrend" ? (strategy.position_avg_price * stopLoss > close or strategy.position_avg_price * takeProfit < close or close < sma * 0.95) : (strategy.position_avg_price * stopLoss > close or strategy.position_avg_price * takeProfit < close or close > sma * 1.05) // Execute a long position if the longCondition is met if (longCondition) strategy.entry("My Long Entry Id", strategy.long) // Close the position if the closeCondition is met if (closeCondition) strategy.exit("Exit", limit = close)