В процессе загрузки ресурсов... загрузка...

Стратегия торговли с адаптивным разрывом стандартов: многоциклическая оптимизация на основе динамической волатильности

Автор:Чао Чжан, Дата: 2024-07-30 16:09:04
Тэги:М.А.SMAЗПППSLТП

自适应标准差突破交易策略:基于动态波动率的多周期优化系统

Обзор

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

Принципы стратегии

  1. Вычислить движущуюся среднюю (MA): использовать простую движущуюся среднюю (SMA) для вычисления средней линии за указанный период.

  2. Стандартные расхождения: стандартные расхождения, основанные на одном и том же цикле расчетов цен.

  3. Построить трассу вверх и вниз:

    • Вверх по траектории = MA + (стандартное отклонение * кратность)
    • Понижение траектории = MA - (стандартное отклонение * кратность)
  4. Создание сигнала покупки: когда цена переходит вниз по трассе, она вызывает сигнал покупки.

  5. Управление рисками:

    • Установка стоп-цены: входная цена * (1 + стоп-процент)
    • Установка стоп-лосса: входная цена * (1 - процент стоп-лосса)
  6. Срок отсчёта: Политика позволяет пользователю установить конкретный срок отсчёта и выполнить транзакцию только в указанный промежуток времени.

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

  1. Сильная адаптивность: с помощью стандартного разрыва стратегия может автоматически корректировать торговые диапазоны в соответствии с волатильностью рынка и адаптироваться к различным рыночным условиям.

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

  3. Высокая гибкость: позволяет пользователям настроить несколько параметров, таких как стандартный дефицитный цикл, кратность, коэффициент остановки и стоп-потери, и т. д., которые могут быть изменены в соответствии с различными рынками и индивидуальными предпочтениями риска.

  4. Хорошая визуализация: стратегия изображает на графике движущиеся средние, восходящие и нисходящие траектории, а также сигналы покупки для интуитивного понимания и анализа.

  5. Мощные функции ретро-проверки: пользователи могут точно устанавливать временной диапазон ретро-проверки, что позволяет оценивать стратегическую производительность в конкретной рыночной среде.

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

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

  2. Тенденции следуют за задержкой: из-за стратегии, основанной на движущихся средних и стандартных пороках, можно пропустить некоторые ранние возможности для входа в сильные трендовые рынки.

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

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

  5. Зависимость от рыночной среды: стратегия может лучше работать на криптовалютном рынке с высокой волатильностью и низким объемом торговли, но может иметь разные эффекты в других рыночных условиях.

Оптимизация стратегии

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

  2. Динамическая корректировка параметров: автоматическое корректирование параметров, таких как коэффициент стандартного отклонения, коэффициент предотвращения и прекращения убытков в зависимости от условий рынка, повышение адаптивности стратегии.

  3. Анализ многочасовых рамок: объединение данных с более длинными и более короткими временными циклами повышает надежность сигнала и точность времени входа.

  4. Добавление фильтрации торгов: внедрение индикаторов торгов, фильтрация ложных сигналов прорыва при низких объемах торгов, повышение качества торгов.

  5. Оптимизация механизмов сдерживания потерь: реализация динамических сдерживаний потерь, таких как внедрение отслеживания потерь или настройки сдерживания потерь на основе ATR, для лучшего адаптации к колебаниям рынка.

  6. Дополнительные условия фильтрации: в сочетании с другими техническими показателями или фундаментальными данными устанавливаются дополнительные условия торговли, чтобы уменьшить ложные сигналы.

  7. Осуществление управления капиталом: внедрение логики управления позициями и корректировка пропорции капитала на каждую сделку в зависимости от размера счета и динамики волатильности рынка.

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

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

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

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


/*backtest
start: 2024-06-01 00:00:00
end: 2024-06-30 23:59:59
period: 1h
basePeriod: 15m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=5
strategy("MikEy Scali 3 STD Dev Buy Strategy with TP and SL", overlay=true)

// Input parameters for the strategy
length = input.int(20, title="Standard Deviation Length", minval=1)
src = input(close, title="Source")
mult = input.float(3.0, title="Standard Deviation Multiplier", step=0.1)

// Input for the take profit and stop loss percentages
takeProfitPerc = input.float(1.0, title="Take Profit Percentage", step=0.1) / 100
stopLossPerc = input.float(0.5, title="Stop Loss Percentage", step=0.1) / 100

// Input parameters for the backtesting range
testStartYear = input.int(2023, title="Backtest Start Year", minval=2000)
testStartMonth = input.int(1, title="Backtest Start Month", minval=1, maxval=12)
testStartDay = input.int(1, title="Backtest Start Day", minval=1, maxval=31)

testEndYear = input.int(2024, title="Backtest End Year", minval=2000)
testEndMonth = input.int(12, title="Backtest End Month", minval=1, maxval=12)
testEndDay = input.int(31, title="Backtest End Day", minval=1, maxval=31)

// Define the backtesting range
testStartTime = timestamp(testStartYear, testStartMonth, testStartDay, 00, 00)
testEndTime = timestamp(testEndYear, testEndMonth, testEndDay, 23, 59)

// Determine if the current bar is within the backtesting range
inBacktestRange = (time >= testStartTime) and (time <= testEndTime)

// Calculate the moving average and standard deviation
ma = ta.sma(src, length)
std_dev = ta.stdev(src, length)

// Calculate upper and lower bands
upper_band = ma + (std_dev * mult)
lower_band = ma - (std_dev * mult)

// Buy condition within the backtesting range
buyCondition = inBacktestRange and ta.crossover(src, lower_band)

// Plot the buy signal on the chart
plotshape(series=buyCondition, location=location.belowbar, color=color.green, style=shape.labelup, text="BUY")

// Execute buy orders based on the condition within the backtesting range
if (buyCondition)
    strategy.entry("Buy", strategy.long)

// Calculate the take profit and stop loss prices when a position is opened
entryPrice = na(strategy.opentrades.entry_price(0)) ? src : strategy.opentrades.entry_price(0)
takeProfitPrice = entryPrice * (1 + takeProfitPerc)
stopLossPrice = entryPrice * (1 - stopLossPerc)

// Take profit condition
takeProfitCondition = strategy.position_size > 0 and close >= takeProfitPrice

// Stop loss condition
stopLossCondition = strategy.position_size > 0 and close <= stopLossPrice

// Execute sell order when take profit condition is met within the backtesting range
if (takeProfitCondition and inBacktestRange)
    strategy.close("Buy", "Take Profit")

// Execute sell order when stop loss condition is met within the backtesting range
if (stopLossCondition and inBacktestRange)
    strategy.close("Buy", "Stop Loss")

// Plot the moving average and the bands
plot(ma, color=color.blue, title="Moving Average")
plot(upper_band, color=color.red, title="Upper Band (3 STD)")
plot(lower_band, color=color.green, title="Lower Band (3 STD)")

// Optional: Plot the source
plot(src, color=color.gray, title="Source")

// Add labels for clarity
bgcolor(buyCondition ? color.new(color.green, 90) : na, offset=-1, title="Buy Signal Background")

// Optional: Highlight the backtesting range on the chart
bgcolor(inBacktestRange ? color.new(color.blue, 90) : na, title="Backtest Range Background")

// Plot the take profit and stop loss levels if a position is open
plot(strategy.position_size > 0 ? takeProfitPrice : na, color=color.orange, title="Take Profit Level")
plot(strategy.position_size > 0 ? stopLossPrice : na, color=color.red, title="Stop Loss Level")

Содержание

Больше информации