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

Стратегия торговли дивергенцией в системе цен на волатильность, основанной на ИИ

Автор:Чао Чжан, Дата: 2024-12-27 13:51:33
Тэги:VPSРСИATRУх ты!А.Л.

img

Обзор

Эта стратегия является передовой торговой системой, использующей технологии искусственного интеллекта, в основном интегрирующей индикаторы дивергенции VPS (система волатильности цен) и методологию тренда WOW. Она использует VPS для выявления волатильности рынка и силы тренда при сочетании дивергенции RSI для обнаружения потенциальных точек переворота цен. Стратегия может предоставлять точные сигналы входа как для длинных, так и для коротких сделок, повышая точность прогнозирования рынка, используя как импульс тренда, так и анализ дивергенции.

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

Стратегия базируется на трех основных компонентах:

  1. Индикатор тренда WOW для подтверждения изменений тренда (от бычьего к медвежьему или наоборот)
  2. Условия VPS для проверки волатильности и силы тренда
  3. Анализ дивергенции РСИ для выявления потенциальных точек перелома

Система сначала рассчитывает динамические каналы поддержки и сопротивления на основе ATR, в сочетании с параметром длины VPS (по умолчанию 11) для оценки рыночных условий. Когда цена проходит через уровни перекупленности (78) или перепроданности (27), система запускает торговые сигналы. Кроме того, стратегия отслеживает расхождение между ценой и индикатором VPS, чтобы еще больше подтвердить направление торговли.

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

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

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

  1. Рыночный шум: может генерировать ложные сигналы в боковой или низковолатильной среде
  2. Чувствительность параметров: эффективность стратегии в значительной степени зависит от настроек параметров индикатора (например, длина VPS, уровни перекупленности/перепроданности)
  3. Риск скольжения: может иметь значительное влияние скольжения в короткие сроки (например, 5 минут)
  4. Задержка подачи сигнала: многочисленные механизмы подтверждения могут привести к относительно задержке времени ввода
  5. Управление деньгами: метод распределения основного капитала может работать по-разному в различных рыночных условиях

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

  1. Динамическая корректировка параметров: внедрение адаптивных механизмов параметров для динамической корректировки длины VPS и порогов перекупки/перепродажи на основе рыночных условий
  2. Фильтрация рыночной среды: Добавление модуля распознавания рыночной среды для приостановки торговли при неблагоприятных рыночных условиях
  3. Оптимизация стоп-лосса: разработать более гибкие механизмы стоп-лосса на основе ATR для улучшения точности контроля риска
  4. Оптимизация временного периода: корректировка параметров стратегии и правил торговли для различных торговых сессий
  5. Оптимизация управления капиталом: внедрение динамического управления позициями для корректировки размера торгов на основе волатильности рынка и состояния прибыли/убытка

Резюме

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


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

//@version=6
strategy("AI+VPS Vijay Prasad Strategy", overlay=true)

// --- VPS Divergence Strategy Inputs ---
vps_length = input.int(11, title="VPS Length")
vps_overbought = input.int(78, title="VPS Overbought Level")  // Overbought level for VPS
vps_oversold = input.int(27, title="VPS Oversold Level")  // Oversold level for VPS

// Calculate VPS (Relative Strength Index alternative) - here using a custom divergence condition
vps = ta.rsi(close, vps_length)

// Plot VPS on the chart
plot(vps, title="VPS", color=color.blue, linewidth=2)
hline(vps_overbought, "Overbought", color=color.red, linewidth=1)
hline(vps_oversold, "Oversold", color=color.green, linewidth=1)

// Define Buy and Sell Conditions based on Overbought/Oversold VPS
vps_buy_condition = vps < vps_oversold  // Buy signal when VPS is oversold
vps_sell_condition = vps > vps_overbought  // Sell signal when VPS is overbought

// Define Bullish and Bearish Divergence conditions
bullish_divergence = (low[1] < low[2] and vps[1] > vps[2] and low < low[1] and vps > vps[1])
bearish_divergence = (high[1] > high[2] and vps[1] < vps[2] and high > high[1] and vps < vps[1])

// Combine Buy and Sell signals: 
// Buy when VPS is oversold or Bullish Divergence occurs
vps_buy_condition_final = vps_buy_condition or bullish_divergence
// Sell when VPS is overbought or Bearish Divergence occurs
vps_sell_condition_final = vps_sell_condition or bearish_divergence

// Plot Buy and Sell Signals
plotshape(series=vps_buy_condition_final, title="VPS Buy Signal", location=location.belowbar, color=color.green, style=shape.triangleup, text="BUY")
plotshape(series=vps_sell_condition_final, title="VPS Sell Signal", location=location.abovebar, color=color.red, style=shape.triangledown, text="SELL")

// VPS Divergence Highlight
bgcolor(bullish_divergence ? color.new(color.green, 90) : na)  // Highlight background for Bullish Divergence
bgcolor(bearish_divergence ? color.new(color.red, 90) : na)  // Highlight background for Bearish Divergence

// Strategy: Buy and Sell with target
if vps_buy_condition_final
    strategy.entry("Buy", strategy.long)

if vps_sell_condition_final
    strategy.entry("Sell", strategy.short)

// Capital settings for the strategy (for backtesting purposes)
capital_per_trade = input.float(1000, title="Capital per Trade (INR)", minval=1)
buy_target_inr = 1500  // Profit target for Buy in INR
sell_target_inr = 1000  // Profit target for Sell in INR

trade_value = close * (capital_per_trade / close)  // Value of one contract at current price

// Profit threshold calculation
buy_profit_target = buy_target_inr / trade_value  // Profit in price movement for Buy
sell_profit_target = sell_target_inr / trade_value  // Profit in price movement for Sell

// Exit based on profit targets
if strategy.position_size > 0
    profit_inr = (close - strategy.position_avg_price) * strategy.position_size
    if profit_inr >= buy_target_inr
        strategy.close("Buy", comment="Profit Target Reached")

if strategy.position_size < 0
    profit_inr = (strategy.position_avg_price - close) * -strategy.position_size
    if profit_inr >= sell_target_inr
        strategy.close("Sell", comment="Profit Target Reached")

// --- WoW Trends + VPS (Vijay Prasad Strategy) Logic ---
Periods = input.int(title="ATR Period", defval=10)
src = input.source(close, title="Source")
Multiplier = input.float(title="ATR Multiplier", step=0.1, defval=1.7)
changeATR = input.bool(title="Change ATR Calculation Method ?", defval=true)
showsignals = input.bool(title="Show Buy/Sell Signals ?", defval=true)

// --- ATR Calculation ---
atr2 = ta.sma(ta.tr, Periods)
atr = changeATR ? ta.atr(Periods) : atr2
up = src - (Multiplier * atr)
up1 = na(up[1]) ? up : up[1]
up := close[1] > up1 ? math.max(up, up1) : up
dn = src + (Multiplier * atr)
dn1 = na(dn[1]) ? dn : dn[1]
dn := close[1] < dn1 ? math.min(dn, dn1) : dn

// --- WoW Trends Logic ---
var trend = 1
trend := na(trend[1]) ? 1 : trend
trend := trend == -1 and close > dn1 ? 1 : trend == 1 and close < up1 ? -1 : trend

// --- VPS Logic (Vijay Prasad Strategy) ---
vpsVolatilityCondition = (high - low) > (1.5 * ta.sma(ta.tr, 20))  // VPS condition based on volatility
vpsTrendCondition = trend == 1  // VPS condition to check if trend is up
vpsSignal = vpsVolatilityCondition and vpsTrendCondition  // Combine both VPS conditions

// --- Buy/Sell Signal Logic ---
buySignal = trend == 1 and trend[1] == -1  // Signal to Buy (when trend switches to up)
sellSignal = trend == -1 and trend[1] == 1  // Signal to Sell (when trend switches to down)

// --- Combined Buy/Sell Signal Logic (WoW Trends + VPS) ---
combinedBuySignal = buySignal and vpsSignal
combinedSellSignal = sellSignal and vpsSignal

// --- Plot WoW Trends Lines using plot() ---
plot(trend == 1 ? up : na, title="Up Trend", color=color.green, linewidth=2)
plot(trend == -1 ? dn : na, title="Down Trend", color=color.red, linewidth=2)

// --- Plot VPS Signals ---
plotshape(vpsSignal and showsignals, title="VPS Signal", text="VPS", location=location.abovebar, style=shape.triangledown, size=size.small, color=color.blue, textcolor=color.white)

// --- Plot Combined Buy/Sell Signals ---
plotshape(combinedBuySignal and showsignals, title="Combined Buy Signal", text="BUY", location=location.belowbar, style=shape.labelup, size=size.small, color=color.green, textcolor=color.white)
plotshape(combinedSellSignal and showsignals, title="Combined Sell Signal", text="SELL", location=location.abovebar, style=shape.labeldown, size=size.small, color=color.red, textcolor=color.white)

// --- Strategy Entries ---
if (combinedBuySignal)
    strategy.entry("BUY", strategy.long)

if (combinedSellSignal)
    strategy.entry("SELL", strategy.short)

// --- Highlight Bars for Buy/Sell Signals ---
barcolor(combinedBuySignal ? color.green : na, offset=-1)
barcolor(combinedSellSignal ? color.red : na, offset=-1)


Связанные

Больше