
L’idée centrale de cette stratégie est de combiner les indicateurs techniques relativement faibles (RSI) et Brin pour filtrer les signaux de double trading, minimiser les interférences de faux signaux et améliorer la qualité des signaux.
L’indicateur RSI crée des opportunités de négociation lorsque le prix dépasse ou recule la courbe de Boer. Il intègre les avantages de deux indicateurs différents, prenant en compte les caractéristiques statistiques des fluctuations du marché et la situation de plus d’espace des acteurs du marché, pour former une base de jugement globale.
Dans la section RSI, nous regardons simultanément deux indicateurs RSI de différentes périodes, un cycle plus court est utilisé pour capturer les signaux de survente et de survente, et un cycle plus long est utilisé pour confirmer le renversement de tendance. Lorsque le RSI de courte période montre un survente et un renversement de RSI de longue période, il est considéré comme une opportunité de négociation.
Dans la section des courbes de Brin, nous regardons si le prix a franchi une trajectoire ascendante ou descendante. La rupture de la courbe de Brin est un point de vente et la rupture de la courbe descendante est un point d’achat. Nous regardons également si le prix a rétabli la courbe de Brin, afin de saisir les opportunités de reprise en temps opportun.
Lorsque les signaux RSI et les signaux Brin sont présentés simultanément, nous considérons que l’opportunité est formée et émettons des ordres de négociation.
Les risques peuvent être évités et contrôlés par l’optimisation des paramètres, la réduction appropriée des positions, l’intervention humaine, etc.
Le RSI et la double stratégie de la ceinture de Brin utilisent pleinement les avantages des deux indicateurs pour générer des signaux de haute qualité, ce qui permet d’obtenir un retour sur investissement stable, à condition que les paramètres soient optimisés et que la gestion des risques soit en place. La combinaison de plus de signaux et de modèles est également une direction possible pour l’avenir.
/*backtest
start: 2023-11-11 00:00:00
end: 2023-12-04 00:00:00
period: 1h
basePeriod: 15m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/
//@version=4
strategy("Ezieh Str.v2", shorttitle="Ezieh Str.v2", overlay=true, pyramiding=10, currency=currency.USD, slippage=3, commission_type=strategy.commission.cash_per_order, commission_value=0.04, initial_capital=1000)
UseDateFilter = input(title="Enable Date Filter" ,type=input.bool ,defval=false ,group="Date & Time" ,tooltip="Turns on/off date filter")
StartDate = input(title="Start Date Filter" ,type=input.time ,defval=timestamp("1 Jan 2000 00:00 +0000") ,group="Date & Time" ,tooltip="Date & time to start excluding trades")
EndDate = input(title="End Date Filter" ,type=input.time ,defval=timestamp("1 Jan 2100 00:00 +0000") ,group="Date & Time" ,tooltip="Date & time to stop excluding trades")
UseTimeFilter = input(title="Enable Time Session Filter" ,type=input.bool ,defval=false ,group="Date & Time" ,tooltip="Turns on/off time session filter")
TradingSession = input(title="Trading Session" ,type=input.session ,defval="1000-2200:1234567" ,group="Date & Time" ,tooltip="No trades will be taken outside of this range")
In(t) => na(time(timeframe.period, t)) == false
TimeFilter = (UseTimeFilter and not In(TradingSession)) or not UseTimeFilter
DateFilter = time >= StartDate and time <= EndDate
DateTime = (UseDateFilter ? not DateFilter : true) and (UseTimeFilter ? In(TradingSession) : true)
///////////// RSI
L_RSI_Length = input(7 , title="L_Length")
L_RSI_OverSold = input(45 , title="L_OverSold")
S_RSI_Length = input(14 , title="S_Length")
S_RSI_OverBought = input(65 , title="S_OverBought")
price = close
Lvrsi = rsi(price, L_RSI_Length)
Svrsi = rsi(price, S_RSI_Length)
///////////// Bollinger Bands
BBlength = input(title="Bollinger Period Length", type=input.integer, defval=100, minval=2)
BBmult = 2.1 // input(2.0, minval=0.001, maxval=50,title="Bollinger Bands Standard Deviation")
BBbasis = sma(price, BBlength)
BBdev = BBmult * stdev(price, BBlength)
BBupper = BBbasis + BBdev
BBlower = BBbasis - BBdev
source = close
plot(BBbasis, color=color.aqua,title="Bollinger Bands SMA Basis Line")
p1 = plot(BBupper, color=color.silver,title="Bollinger Bands Upper Line")
p2 = plot(BBlower, color=color.silver,title="Bollinger Bands Lower Line")
fill(p1, p2)
///////////// Colors
switch1=input(true, title="Enable Bar Color?")
switch2=input(true, title="Enable Background Color?")
///////////// Condition
LongCondition = crossover(Lvrsi, L_RSI_OverSold) and crossover(close ,BBlower)
ShortCondition = crossunder(Svrsi, S_RSI_OverBought) and crossunder(close,BBupper)
Longexcon = crossunder(low, BBupper)
Shortexcon = crossover(low, BBlower)
qt = round(strategy.equity/price, 3)
///////////// RSI + Bollinger Bands Strategy
if (not na(Lvrsi))
if LongCondition and DateTime
strategy.entry("RSI_BB_L", strategy.long, qty=qt, comment="Long")
else
strategy.cancel(id="RSI_BB_L")
if Longexcon
strategy.close("RSI_BB_L", qty_percent = 100, comment = "L_exit")
if ShortCondition and DateTime
strategy.entry("RSI_BB_S", strategy.short, qty=qt, comment="Short")
else
strategy.cancel(id="RSI_BB_S")
if Shortexcon
strategy.close("RSI_BB_S", qty_percent = 100, comment = "S_exit")
//plot(strategy.equity, title="equity", color=red, linewidth=2, style=areabr)