Estratégia TTM de impulso

Autora:ChaoZhang, Data: 2023-11-21 15:07:38
Tags:

img

Resumo

Esta é uma estratégia de negociação de ruptura de opções binárias que utiliza o indicador de impulso RSI combinado com o indicador Bollinger Bands BB. Em termos de pontualidade, o indicador TTM é usado para determinar se o mercado está em um estado de consolidação, melhorando assim a confiabilidade da entrada.

Princípio

A lógica básica da estratégia é determinar a direção de ruptura com base nas Bandas de Bollinger e no indicador RSI sob a condição de que o conjunto de indicadores TTM forme uma ruptura. Especificamente, a estratégia usa 20 períodos de BB e 30 períodos de RSI. Quando o mercado atravessa o aperto, ela determina a direção de abertura quando o RSI está dentro de um certo intervalo de flutuação (30-70) e o BB tem uma grande ruptura (0,15 vezes o intervalo de flutuação). Além disso, a estratégia também verifica a direção de abertura da linha K anterior antes de abrir uma posição para evitar abertura repetida desnecessária.

Vantagens

As principais vantagens desta estratégia são:

  1. Utilizando o indicador TTM para julgar o estado de negociação do mercado e evitar negociações sem sentido no mercado de consolidação.

  2. A combinação de RSI e BB pode tornar as posições de abertura mais confiáveis. O indicador RSI julga se os preços estão sobrecomprados ou sobrevendidos; enquanto o indicador BB julga se os preços ocorreram um grande avanço. A combinação dos dois faz a estratégia lucrar com fortes tendências direcionais.

  3. A lógica da estratégia considera certas otimizações, como evitar a abertura repetida, o que pode reduzir até certo ponto a mudança desnecessária de lucro e perda.

Análise de riscos

Os principais riscos desta estratégia são:

  1. Risco de falha de quebra. Quando o indicador TTM não julga com precisão a tendência, o RSI e o BB ainda podem ter falhas. Nesse momento, a estratégia abre posições com base nos indicadores e pode eventualmente ficar presa. Para controlar esse risco, considere reduzir o tamanho da posição.

  2. É fácil perder quando o mercado oscila. Quando o mercado está em um estado oscilante, o desempenho do indicador TTM não é ideal. Os indicadores RSI e BB também podem dar vários sinais falsos. Neste momento é muito fácil formar perdas. Para controlar esse risco, evite usar essa estratégia em mercados oscilantes óbvios.

Optimização

A estratégia pode ser otimizada nos seguintes aspectos:

  1. Otimizar os parâmetros do indicador TTM para ajustar o comprimento e os fatores do indicador.

  2. Otimizar os parâmetros RSI e BB. A redução apropriada dos números de ciclos pode obter sinais de avanço mais oportunos e precisos. Ao mesmo tempo, a largura de banda do canal BB também pode testar diferentes valores.

  3. Aumentar a lógica de stop loss. Uma vez que a estratégia não define um stop loss, para evitar que uma única perda seja muito grande, considere adicionar um stop loss móvel ou stop loss esperado.

  4. A estratégia atual é executada em gráficos de 1 minuto. Para outras variedades de parâmetros (como 5 minutos), os parâmetros do indicador podem ser re-testados e otimizados para obter melhores combinações de parâmetros.

Conclusão

Esta estratégia utiliza o TTM para determinar a precisão da tendência e usa o RSI e BB para determinar as direções de ruptura. Em comparação com as estratégias de ruptura simples, seu tempo de entrada e otimização de parâmetros de indicadores são mais vantajosos, o que pode aumentar a lucratividade. Mas esta estratégia também apresenta certos riscos de falha e problemas de adaptabilidade em mercados oscilantes. Isso exige que ajustemos o tamanho da posição durante o uso e evitemos usá-la em mercados oscilantes. Com o uso de parâmetros e otimização de stop loss, esta estratégia pode se tornar uma estratégia de negociação de opções confiável.


/*backtest
start: 2022-11-14 00:00:00
end: 2023-11-20 00:00:00
period: 1d
basePeriod: 1h
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=4
strategy (title="EA_Binary Option Spfrat Strategy", shorttitle="Spyfrate_Binary Option 5min", overlay=false, pyramiding=1999, initial_capital=60000, currency=currency.USD)

// TTM Squeeze code
lengthttm = input(title="Length",  defval=20, minval=0) 
bband(lengthttm, mult) =>
	sma(close, lengthttm) + mult * stdev(close, lengthttm)
keltner(length, mult) =>
	ema(close, lengthttm) + mult * ema(tr, lengthttm)

e1 = (highest(high, lengthttm) + lowest(low, lengthttm)) / 2 + sma(close, lengthttm)
osc = linreg(close - e1 / 2, lengthttm, 0)
diff = bband(lengthttm, 2) - keltner(lengthttm, 1)
osc_color = osc[1] < osc[0] ? osc[0] >= 0 ? #00ffff : #cc00cc : osc[0] >= 0 ? #009b9b : #ff9bff
mid_color = diff >= 0 ? green : red
conso = diff >= 0?1:0

//plot(osc, color=osc_color, style=histogram, linewidth=2)
//plot(0, color=mid_color, style=circles, linewidth=3)

// BB Init
source = close
length = input(50, minval=1)
mult = input(0.2, title="Mult Factor", minval=0.001, maxval=50)
alertLevel=input(0.1)
impulseLevel=input(0.75)
showRange = input(false, type=bool)

//RSI CODE
src = close, 
up = rma(max(change(src), 0), 30)
down = rma(-min(change(src), 0), 30)
rsi = down == 0 ? 100 : up == 0 ? 0 : 100 - (100 / (1 + up / down))

//BB CODE
basis = sma(source, length)
dev = mult * stdev(source, length)
upper = basis + dev
lower = basis - dev
bbr = source>upper?(((source-upper)/(upper-lower))/10): source<lower?(((source-lower)/(upper-lower))/10) : 0.05
bbi = bbr - nz(bbr[1]) 
//Rule
long1 = rsi>50.5 and rsi<70 and  bbi>0.15  and osc>0.00100 and conso>0
short1 = rsi<49.5 and rsi>30 and  bbi<-0.15 and osc<-0.00100 and conso>0
//
long = long1[1] == 0 and long1 == 1
short = short1[1] == 0 and short1 == 1
longclose = long[5] == 1
shortclose = short[5] == 1

//Alert

strategy.entry("short", strategy.short, when=short)
strategy.entry("long", strategy.long, when=long)
plot(long,"long",color=green,linewidth=1)
plot(short,"short",color=red,linewidth=1)
strategy.close("long",when=longclose)
strategy.close("short",when=shortclose)

//strategy.exit(id="long",qty = 100000,when=longclose)
//strategy.exit(id="short",qty = 100000,when=shortclose)
plot(longclose,"close",color=blue,linewidth=1)
plot(shortclose,"close",color=orange,linewidth=1)
//strategy.exit(id="Stop", profit = 20, loss = 100)

Mais.