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

Адаптивная динамическая стратегия торговли на основе стандартизированной логарифмической отдачи

Автор:Чао Чжан, Дата: 2024-12-27 14:39:32
Тэги:SZISMAЛОГЗППП

img

Обзор

Эта стратегия является адаптивной торговой системой, основанной на индексе Ширяева-Чжоу (SZI). Она определяет перекупленные и перепроданные рыночные условия путем расчета стандартизированных баллов логарифмической доходности, направленной на захват средних возможностей реверсии.

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

В основе стратегии лежит построение стандартизированного показателя с использованием переменных статистических свойств логарифмических результатов.

  1. Вычислить логарифмические результаты для нормализации
  2. Вычислить среднее значение и стандартное отклонение с использованием 50-периодного окна
  3. Создать SZI: (логарифмическое возвращение - среднее значение по колебанию) / стандартное отклонение по колебанию
  4. Сгенерировать длинные сигналы, когда SZI падает ниже -2,0 и короткие сигналы, когда выше 2,0
  5. Установка уровня стоп-лосса 2% и уровня получения прибыли 4% на основе входной цены

Преимущества стратегии

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

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

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

Руководство по оптимизации

  1. Динамические пороги: рассмотреть вопрос о корректировке порогов сигналов на основе волатильности рынка
  2. Многократные временные рамки: внедрение механизмов подтверждения сигнала в нескольких временных рамках
  3. Фильтрация волатильности: приостановка торговли или корректировка позиций в периоды крайней волатильности
  4. Подтверждение сигнала: Добавление объема, импульса и других вспомогательных показателей для подтверждения сигнала
  5. Управление позициями: внедрение динамического размещения позиций на основе волатильности

Резюме

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


/*backtest
start: 2019-12-23 08:00:00
end: 2024-12-25 08:00:00
period: 1d
basePeriod: 1d
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=5
strategy("Jalambi Paul model", overlay=true)

// Define the length for the rolling window
window = input.int(50, title="Window Length", minval=1)
threshold = 2.0 // Fixed threshold value
risk_percentage = input.float(1.0, title="Risk Percentage per Trade", step=0.1) / 100

// Calculate the logarithmic returns
log_return = math.log(close / close[1])

// Calculate the rolling mean and standard deviation
rolling_mean = ta.sma(log_return, window)
rolling_std = ta.stdev(log_return, window)

// Calculate the Shiryaev-Zhou Index (SZI)
SZI = (log_return - rolling_mean) / rolling_std

// Generate signals based on the fixed threshold
long_signal = SZI < -threshold
short_signal = SZI > threshold

// Plot the signals on the main chart (overlay on price)
plotshape(series=long_signal, location=location.belowbar, color=color.green, style=shape.labelup, title="Buy Signal", text="BUY", offset=-1)
plotshape(series=short_signal, location=location.abovebar, color=color.red, style=shape.labeldown, title="Sell Signal", text="SELL", offset=-1)

// Strategy logic: Buy when SZI crosses below the negative threshold, Sell when it crosses above the positive threshold
if (long_signal)
    strategy.entry("Buy", strategy.long, comment="Long Entry")
    
if (short_signal)
    strategy.entry("Sell", strategy.short, comment="Short Entry")

// Calculate the stop loss and take profit levels based on the percentage of risk
stop_loss_pct = input.float(2.0, title="Stop Loss (%)") / 100
take_profit_pct = input.float(4.0, title="Take Profit (%)") / 100

// Set the stop loss and take profit levels based on the entry price
strategy.exit("Take Profit / Stop Loss", "Buy", stop=close * (1 - stop_loss_pct), limit=close * (1 + take_profit_pct))
strategy.exit("Take Profit / Stop Loss", "Sell", stop=close * (1 + stop_loss_pct), limit=close * (1 - take_profit_pct))

// Plot the stop loss and take profit levels for visualization (optional)
plot(stop_loss_pct != 0 ? close * (1 - stop_loss_pct) : na, color=color.red, linewidth=1, title="Stop Loss Level")
plot(take_profit_pct != 0 ? close * (1 + take_profit_pct) : na, color=color.green, linewidth=1, title="Take Profit Level")


Связанные

Больше