Estratégia de negociação de variações de volatilidade de duplo prazo

Autora:ChaoZhang, Data: 2024-02-18 15:31:32
Tags:

img

Resumo

A estratégia de negociação de spread de volatilidade de dois prazos avalia o estado de sobrecompra/supervenda do mercado através do cálculo do spread entre os indicadores RSI de dois ciclos de tempo diferentes para implementar a negociação de tendências de baixo risco.

Princípio da estratégia

Os principais indicadores desta estratégia são shortTermXtrender e longTermXtrender. shortTermXtrender calcula o spread do RSI no período de curto prazo e longTermXtrender calcula o spread do RSI no período de longo prazo.

O intervalo de tempo de curto prazo adota a diferença de preço entre a EMA de 7 dias e a LMA de 4 dias para calcular o RSI e, em seguida, a diferença de preço com 50 constitui o shortTermXtrender. O intervalo de tempo de longo prazo adota a diferença de preço entre o RSI da EMA de 4 dias e 50 para constituir o longTermXtrender.

Quando o shortTermXtrender cruza acima de 0, vá para longo; quando o longTermXtrender cruza acima de 0, vá também para longo.

Desta forma, julgando em dois prazos, mais falsas fugas podem ser filtradas.

Análise das vantagens

A maior vantagem desta estratégia é que o julgamento da tendência é preciso. A combinação de quadros de tempo duplos pode efetivamente filtrar o ruído e bloquear a direção da tendência alvo. Isso fornece uma garantia para a negociação de rastreamento de tendência de baixo risco.

Além disso, a estratégia fornece espaço para otimização de parâmetros. Os usuários podem ajustar parâmetros como o ciclo SMA e os parâmetros RSI de acordo com diferentes variedades e ciclos de tempo para otimizar os resultados da estratégia.

Análise de riscos

O principal risco desta estratégia é o julgamento errado de longo e curto. Em mercados oscilantes, é fácil gerar sinais errados. Se a posição ainda estiver aberta neste momento, haverá o risco de perda.

Além disso, configurações incorretas de parâmetros também podem levar a resultados ruins. Se o parâmetro do ciclo de tempo for definido muito curto, a probabilidade de julgamento errado aumentará; se o parâmetro do ciclo de tempo for definido muito longo, a oportunidade para a tendência será perdida. Isso requer que os usuários testem e otimizem parâmetros para diferentes mercados.

Orientações de otimização

A estratégia pode ser otimizada nos seguintes aspectos:

  1. Aumentar o mecanismo de captação de lucro. Atualmente, não há configuração de captação de lucro na estratégia. O lucro pode ser tomado no tempo após atingir o lucro alvo.

  2. Aumentar a gestão das posições, podendo as posições ser ajustadas dinamicamente com base no tamanho do capital, na volatilidade e noutros indicadores.

  3. Testar configurações de parâmetros para diferentes variedades. Os usuários podem testar a combinação ideal de parâmetros testando diferentes prazos, como diários e 60 minutos.

  4. Aumentar o julgamento assistido pelo aprendizado de máquina. Os modelos podem ser treinados para determinar as condições do mercado e ajustar dinamicamente os parâmetros da estratégia para melhorar a taxa de vitória.

Resumo

A estratégia de negociação de spread de volatilidade de quadro de tempo duplo alcança uma captura de tendência eficiente através da construção de indicadores de quadro de tempo duplo. A estratégia tem grande espaço de otimização. Os usuários podem otimizar através do ajuste de parâmetros, gerenciamento de lucro, gerenciamento de posição, etc. para obter melhores resultados de estratégia. Esta estratégia é adequada para usuários com alguma experiência de negociação.


/*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)


Mais.