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

Автор:Чао Чжан, Дата: 2024-02-18 15:31:32
Тэги:

img

Обзор

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

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

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

Краткосрочные временные рамки используют ценовую разницу между 7-дневным EMA и 4-дневным LMA для расчета RSI, а затем ценовая разница с 50 составляет shortTermXtrender.

Когда shortTermXtrender пересекает предел 0, перейти на long; когда longTermXtrender пересекает предел 0, также перейти на long. Принцип стоп-лосса после длинного перехода заключается в том, чтобы остановить потерю, когда 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)


Больше