Внутридневная синтетическая опционная стратегия на основе сессионного VWMA: адаптивная торговая система для длинных и коротких сигналов

VWMA ATM IST
Дата создания: 2025-02-24 10:07:39 Последнее изменение: 2025-02-27 16:46:17
Копировать: 0 Количество просмотров: 354
2
Подписаться
319
Подписчики

Внутридневная синтетическая опционная стратегия на основе сессионного VWMA: адаптивная торговая система для длинных и коротких сигналов Внутридневная синтетическая опционная стратегия на основе сессионного VWMA: адаптивная торговая система для длинных и коротких сигналов

Обзор

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

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

Основная логика стратегии основана на следующих пунктах:

  1. Использование VWMA с повседневным перемещением в качестве динамического трендового индикатора
  2. Построение позиционного портфеля (покупка опционов на позицию + продажа опционов на позицию), когда цена пересекает VWMA выше
  3. Построение падежного портфеля, когда цена опускается ниже VWMA ((покупка опциона на падение + продажа опциона на снижение)
  4. Обязательная ликвидация всех позиций в 15:29 (IST)
  5. Введение переменной hasExited для контроля за частотой набора запасов, чтобы избежать чрезмерной торговли
  6. Поддержка пирамидального наращивания позиций при одностороннем прорыве

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

  1. Динамично адаптируемая - ежедневная перестановка VWMA обеспечивает то, что индикатор всегда отражает текущие рыночные условия
  2. Баланс риска и прибыли - сокращение риска и сохранение потенциала прибыли с помощью портфеля синтетических опционов
  3. Строгая торговая дисциплина - четкие механизмы входа, набора и принудительного устранения позиций
  4. Гибкость размещения позиций - поддержка управления процентными позициями
  5. Ясная логика работы - условия для создания сигнала просты и интуитивны

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

  1. Риск рыночных потрясений - прорыв VWMA может привести к частым ложным сигналам на рынке криптовалют
  2. Риск пробелов - значительные колебания в одночасье могут привести к большим потерям
  3. Риск портфеля опционов - синтетические опционы имеют нейтральную дельта-склонность
  4. Выполнение скольжения - высокочастотные сделки могут столкнуться с большим скольжением
  5. Эффективность капитала - ежедневная принудительная ликвидация увеличивает стоимость сделки

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

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

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

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

Исходный код стратегии
/*backtest
start: 2025-02-16 00:00:00
end: 2025-02-23 00:00:00
period: 1m
basePeriod: 1m
exchanges: [{"eid":"Binance","currency":"SOL_USDT"}]
*/

//@version=5
strategy("Session VWMA Synthetic Options Strategy", overlay=true, initial_capital=100000, 
     default_qty_type=strategy.percent_of_equity, default_qty_value=10, pyramiding=10, calc_on_every_tick=true)

//──────────────────────────────
// Session VWMA Inputs
//──────────────────────────────
vwmaLen   = input.int(55, title="VWMA Length", inline="VWMA", group="Session VWMA")
vwmaColor = input.color(color.orange, title="VWMA Color", inline="VWMA", group="Session VWMA", tooltip="VWMA resets at the start of each session (at the opening of the day).")

//──────────────────────────────
// Session VWMA Calculation Function
//──────────────────────────────
day_vwma(_start, s, l) =>
    bs_nd = ta.barssince(_start)
    v_len = math.max(1, bs_nd < l ? bs_nd : l)
    ta.vwma(s, v_len)

//──────────────────────────────
// Determine Session Start
//──────────────────────────────
// newSession becomes true on the first bar of a new day.
newSession = ta.change(time("D")) != 0

//──────────────────────────────
// Compute Session VWMA
//──────────────────────────────
vwmaValue = day_vwma(newSession, close, vwmaLen)
plot(vwmaValue, color=vwmaColor, title="Session VWMA")

//──────────────────────────────
// Define Signal Conditions (only on transition)
//──────────────────────────────
bullCond = low > vwmaValue      // Bullish: candle low above VWMA
bearCond = high < vwmaValue     // Bearish: candle high below VWMA

// Trigger signal only on the bar where the condition first becomes true
bullSignal = bullCond and not bullCond[1]
bearSignal = bearCond and not bearCond[1]

//──────────────────────────────
// **Exit Condition at 15:29 IST**
//──────────────────────────────
sessionEnd = hour == 15 and minute == 29

// Exit all positions at 15:29 IST
if sessionEnd
    strategy.close_all(comment="Closing all positions at session end")

//──────────────────────────────
// **Trade Control Logic**
//──────────────────────────────
var bool hasExited = true  // Track if an exit has occurred since last entry

// Reset exit flag when a position is exited
if strategy.position_size == 0
    hasExited := true

//──────────────────────────────
// **Position Management: Entry & Exit**
//──────────────────────────────
if newSession
    hasExited := true  // Allow first trade of the day

// On a bullish signal: 
//   • If currently short, close the short position and then enter long
//   • Otherwise, add to any existing long position **only if an exit happened before**
if bullSignal and (hasExited or newSession)
    if strategy.position_size < 0
        strategy.close("Short", comment="Exit Short on Bull Signal")
        strategy.entry("Long", strategy.long, comment="Enter Long: Buy Call & Sell Put at ATM")
    else
        strategy.entry("Long", strategy.long, comment="Add Long: Buy Call & Sell Put at ATM")
    hasExited := false  // Reset exit flag

// On a bearish signal: 
//   • If currently long, close the long position and then enter short
//   • Otherwise, add to any existing short position **only if an exit happened before**
if bearSignal and (hasExited or newSession)
    if strategy.position_size > 0
        strategy.close("Long", comment="Exit Long on Bear Signal")
        strategy.entry("Short", strategy.short, comment="Enter Short: Buy Put & Sell Call at ATM")
    else
        strategy.entry("Short", strategy.short, comment="Add Short: Buy Put & Sell Call at ATM")
    hasExited := false  // Reset exit flag

//──────────────────────────────
// **Updated Alert Conditions**
//──────────────────────────────
// Alerts for valid trade entries
alertcondition(bullSignal and (hasExited or newSession), 
     title="Long Entry Alert", 
     message="Bullish signal: BUY CALL & SELL PUT at ATM. Entry allowed.")

alertcondition(bearSignal and (hasExited or newSession), 
     title="Short Entry Alert", 
     message="Bearish signal: BUY PUT & SELL CALL at ATM. Entry allowed.")