Адаптивная система количественной торговли волатильностью и импульсом (AVMQTS)

ATR MACD SMA TP SL
Дата создания: 2024-11-27 14:20:24 Последнее изменение: 2024-11-27 14:20:24
Копировать: 1 Количество просмотров: 459
1
Подписаться
1617
Подписчики

Адаптивная система количественной торговли волатильностью и импульсом (AVMQTS)

Обзор

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

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

Стратегия в основном опирается на трехмерную систему показателей в качестве основной логики торговли: во-первых, используется ATR для измерения состояния волатильности рынка, чтобы обеспечить волатильность для принятия торговых решений; во-вторых, используется MACD-индикатор для фиксации перелома тренда, где перекрестные линии MACD используются в качестве основного сигнала для торговли; в-третьих, перепроверка использует индикатор динамики цены для подтверждения силы тренда путем наблюдения за изменениями цены за сравнительно короткий период времени. Система также включает 50-дневную среднюю линию в качестве фильтрации тренда, и только на среднюю линию цены разрешается делать больше, и наоборот разрешается делать больше.

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

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

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

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

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

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

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

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

Исходный код стратегии
/*backtest
start: 2019-12-23 08:00:00
end: 2024-11-25 08:00:00
period: 1d
basePeriod: 1d
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=5
strategy("[ETH] Volatility & Momentum Adaptive Strategy", shorttitle="Definitive 1 day Ethereum Signal", overlay=true, initial_capital=10000, currency=currency.USD)

// === Input Parameters === //
trade_size = input.float(5, title="Trade Size (ETH)")
atr_length = input.int(8, minval=1, title="ATR Length")
macd_fast = input.int(8, minval=1, title="MACD Fast Length")
macd_slow = input.int(7, minval=1, title="MACD Slow Length")
macd_signal = input.int(9, minval=1, title="MACD Signal Length")
momentum_length = input.int(37, title="Momentum Length")
stop_loss_percent = input.float(9.9, title="Stop Loss Percentage (%)")
take_profit_percent = input.float(9.0, title="Take Profit Percentage (%)")
alternate_signal = input.bool(true, title="Alternate Buy/Sell Signals")

// === Indicators === //
// ATR to measure volatility
atr = ta.atr(atr_length)

// MACD for trend momentum
[macd_line, signal_line, _] = ta.macd(close, macd_fast, macd_slow, macd_signal)
macd_cross_up = ta.crossover(macd_line, signal_line)
macd_cross_down = ta.crossunder(macd_line, signal_line)

// Momentum
momentum = ta.mom(close, momentum_length)

// === Signal Control Variables === //
var bool last_signal_long = na
var int last_trade_bar = na
min_bars_between_trades = 5 // Adjust for minimal trade frequency control
time_elapsed = na(last_trade_bar) or (bar_index - last_trade_bar) >= min_bars_between_trades

// === Buy and Sell Conditions === //
// Buy when:
buy_signal = (macd_cross_up and momentum > 0 and close > ta.sma(close, 50) and time_elapsed)

// Sell when:
sell_signal = (macd_cross_down and momentum < 0 and close < ta.sma(close, 50) and time_elapsed)

// Enforce alternate signals if selected
if alternate_signal
    buy_signal := buy_signal and (na(last_signal_long) or not last_signal_long)
    sell_signal := sell_signal and (not na(last_signal_long) and last_signal_long)

// === Trade Execution === //
// Buy Position
if (buy_signal)
    if strategy.position_size < 0
        strategy.close("Short")
    strategy.entry("Long", strategy.long, qty=trade_size)
    last_signal_long := true
    last_trade_bar := bar_index

// Sell Position
if (sell_signal)
    if strategy.position_size > 0
        strategy.close("Long")
    strategy.entry("Short", strategy.short, qty=trade_size)
    last_signal_long := false
    last_trade_bar := bar_index

// === Stop Loss and Take Profit === //
if strategy.position_size > 0
    long_take_profit = strategy.position_avg_price * (1 + take_profit_percent / 100)
    long_stop_loss = strategy.position_avg_price * (1 - stop_loss_percent / 100)
    strategy.exit("TP/SL Long", from_entry="Long", limit=long_take_profit, stop=long_stop_loss)

if strategy.position_size < 0
    short_take_profit = strategy.position_avg_price * (1 - take_profit_percent / 100)
    short_stop_loss = strategy.position_avg_price * (1 + stop_loss_percent / 100)
    strategy.exit("TP/SL Short", from_entry="Short", limit=short_take_profit, stop=short_stop_loss)

// === Visual Signals === //
plotshape(series=buy_signal and time_elapsed, title="Buy Signal", location=location.belowbar, color=color.green, style=shape.labelup, text="BUY")
plotshape(series=sell_signal and time_elapsed, title="Sell Signal", location=location.abovebar, color=color.red, style=shape.labeldown, text="SELL")