Stratégie TTM pour une percée de l'élan

Auteur:ChaoZhang est là., Date: le 21 janvier 2023 à 15h07
Les étiquettes:

img

Résumé

Il s'agit d'une stratégie de trading de rupture d'options binaires qui utilise l'indicateur de dynamique RSI combiné à l'indicateur Bollinger Bands BB. En termes de rapidité, l'indicateur TTM est utilisé pour déterminer si le marché est en consolidation, améliorant ainsi la fiabilité de l'entrée.

Principe

La logique de base de la stratégie est de déterminer la direction de la percée basée sur les bandes de Bollinger et l'indicateur RSI à la condition que l'ensemble de l'indicateur TTM forme une percée. Plus précisément, la stratégie utilise 20 périodes de BB et 30 périodes de RSI. Lorsque le marché traverse la pression, elle détermine la direction d'ouverture lorsque le RSI se situe dans une certaine plage de fluctuation (30-70) et que le BB a une grande percée (0,15 fois la plage de fluctuation).

Les avantages

Les principaux avantages de cette stratégie sont les suivants:

  1. L'utilisation de l'indicateur TTM pour juger de l'état des transactions sur le marché et éviter les transactions inutiles sur le marché en consolidation.

  2. La combinaison de RSI et BB peut rendre les positions d'ouverture plus fiables. L'indicateur RSI juge si les prix sont surachetés ou survendus; tandis que l'indicateur BB juge si les prix ont connu une percée majeure.

  3. La logique de la stratégie prend en compte certaines optimisations telles que l'évitement d'ouvertures répétées.

Analyse des risques

Les principaux risques de cette stratégie sont les suivants:

  1. Risque d'échec de rupture. Lorsque l'indicateur TTM ne juge pas avec précision la tendance, le RSI et le BB peuvent toujours avoir de fausses ruptures. À ce moment-là, la stratégie ouvre des positions basées sur les indicateurs et peut éventuellement être piégée. Pour contrôler ce risque, envisagez de réduire la taille de la position.

  2. Il est facile de perdre lorsque le marché oscille. Lorsque le marché est dans un état d'oscillation, la performance de l'indicateur TTM n'est pas idéale. Les indicateurs RSI et BB peuvent également donner plusieurs faux signaux. À ce moment-là, il est très facile de former des pertes. Pour contrôler ce risque, évitez d'utiliser cette stratégie sur des marchés oscillants évidents.

Optimisation

La stratégie peut être optimisée dans les aspects suivants:

  1. Optimiser les paramètres de l'indicateur TTM afin d'ajuster la longueur et les facteurs de l'indicateur.

  2. Optimiser les paramètres RSI et BB. En raccourcissant correctement le nombre de cycles, vous pouvez obtenir des signaux de rupture plus rapides et plus précis.

  3. Étant donné que la stratégie ne définit pas de stop loss, pour éviter qu'une seule perte ne soit trop importante, envisagez d'ajouter un stop loss mobile ou un stop loss attendu.

  4. Il est possible de tester différentes variétés de paramètres. La stratégie actuelle fonctionne sur des graphiques de 1 minute. Pour d'autres variétés de paramètres (comme 5 minutes), les paramètres de l'indicateur peuvent être retestés et optimisés pour obtenir de meilleures combinaisons de paramètres.

Conclusion

Cette stratégie utilise le TTM pour déterminer la précision de la tendance et utilise le RSI et le BB pour déterminer les directions de rupture. Par rapport aux stratégies de rupture simples, son timing d'entrée et l'optimisation des paramètres d'indicateur sont plus avantageux, ce qui peut augmenter la rentabilité. Mais cette stratégie pose également certains risques d'échec et de problèmes d'adaptabilité sur les marchés oscillants. Cela nous oblige à ajuster la taille des positions pendant l'utilisation et à éviter de l'utiliser sur les marchés oscillants.


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

Plus de