Стратегия торговли спредом волатильности с двойной временной осью


Дата создания: 2024-02-18 15:31:32 Последнее изменение: 2024-02-18 15:31:32
Копировать: 0 Количество просмотров: 608
1
Подписаться
1617
Подписчики

Стратегия торговли спредом волатильности с двойной временной осью

Обзор

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

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

Ключевыми показателями стратегии являются shortTermXtrender и longTermXtrender. shortTermXtrender рассчитывает разницу в цене RSI на короткой временной оси, longTermXtrender рассчитывает разницу в цене RSI на долгосрочной временной оси.

Краткосрочная временная ось использует 7-дневную ЭМА и 4-дневную LMA для расчета RSI, а затем разрыв с 50, образуя ShortTermXtrender. Долгосрочная временная ось использует 4-дневную ЭМА с RSI и разрыв с 50, образуя LongTermXtrender.

Когда на shortTermXtrender носят 0, делают больше; когда на longTermXtrender носят 0, также делают больше. Принцип остановки после большего дела - это остановка, когда на shortTermXtrender носят 0, также остановка, когда на longTermXtrender носят 0.

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

Анализ преимуществ

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

Кроме того, стратегия предоставляет пространство для оптимизации параметров. Пользователь может оптимизировать эффективность стратегии в зависимости от разных сортов и временных периодов, корректировать циклы SMA, параметры RSI и т. Д.

Анализ рисков

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

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

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

Эта стратегия может быть оптимизирована в следующих аспектах:

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

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

  3. Тестирование параметров различных сортов. Пользователь может тестировать оптимальную комбинацию параметров, исходя из различных временных циклов, таких как солнечный свет, 60 минут и т. д.

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

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

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

Исходный код стратегии
/*backtest
start: 2024-01-18 00:00:00
end: 2024-02-17 00:00:00
period: 2h
basePeriod: 15m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=4
//study("MavXtrender")
strategy("MavXtrender")

ShortTermSMA = input(7)
ShortTermLMA = input(4)
ShortTermRSI = input(2)

LongTermMA  = input(4)
LongTermRSI  = input(2)

UseFactors = input(true)
TradeShortTerm = input(true)
TradeLongTerm = input(true)

count = TradeShortTerm == true ? 1 : 0
count := TradeLongTerm == true ? count + 1 : count
// set position size
Amount = strategy.equity / (close * count)

ShortTermLMA := UseFactors == true ? round(ShortTermSMA * ShortTermLMA) : ShortTermLMA
ShortTermRSI := UseFactors == true ? round(ShortTermSMA * ShortTermRSI) : ShortTermRSI
LongTermMA := UseFactors == true ? round(ShortTermSMA * LongTermMA) : LongTermMA
LongTermRSI := UseFactors == true ? round(ShortTermSMA * LongTermRSI) : LongTermRSI

shortTermXtrender = rsi(ema(close, ShortTermSMA) - ema(close, ShortTermLMA), ShortTermRSI ) - 50
longTermXtrender  = rsi( ema(close, LongTermMA), LongTermRSI ) - 50

// === INPUT BACKTEST RANGE ===
FromDay   = input(defval = 1, title = "From Day", minval = 1, maxval = 31)
FromMonth = input(defval = 1, title = "From Month", minval = 1, maxval = 12)
FromYear  = input(defval = 2018, title = "From Year", minval = 2012)
ToDay     = input(defval = 1, title = "To Day", minval = 1, maxval = 31)
ToMonth   = input(defval = 1, title = "To Month", minval = 1, maxval = 12)
ToYear    = input(defval = 2020, title = "To Year", minval = 2012)

// === FUNCTION EXAMPLE ===
start     = timestamp(FromYear, FromMonth, FromDay, 00, 00)  // backtest start window
finish    = timestamp(ToYear, ToMonth, ToDay, 23, 59)        // backtest finish window
window()  => true

strategy.entry("ShortTerm", strategy.long, qty = Amount, when = window() and crossover(shortTermXtrender,0) and TradeShortTerm)
strategy.entry("LongTerm", strategy.long, qty = Amount, when = window() and crossover(longTermXtrender,0) and TradeLongTerm)

strategy.close("ShortTerm", when = crossunder(shortTermXtrender,0) or time > finish)
strategy.close("LongTerm", when = crossunder(longTermXtrender,0) or time > finish)

shortXtrenderCol = shortTermXtrender > 0 ? shortTermXtrender > shortTermXtrender[1] ? color.lime : #228B22 : shortTermXtrender > shortTermXtrender[1] ? color.red : #8B0000
plot(shortTermXtrender, color=shortXtrenderCol, style=plot.style_columns, linewidth=1, title="B-Xtrender Osc. - Histogram", transp = 50)

longXtrenderCol = longTermXtrender> 0 ? longTermXtrender > longTermXtrender[1] ? color.lime : #228B22 : longTermXtrender > longTermXtrender[1] ? color.red : #8B0000
plot(longTermXtrender , color=longXtrenderCol, style=plot.style_histogram, linewidth=2, title="B-Xtrender Trend - Histogram", transp = 80)
plot(longTermXtrender , color=color.white,     style=plot.style_line,      linewidth=1, title="B-Xtrender Trend - Line",      transp = 80)