Cette stratégie identifie les tendances du marché bitcoin en calculant l'indice de force réelle (TSI) et entre dans des positions longues / courtes filtrées par l'indicateur RSI pour mettre en œuvre le trading algorithmique de bitcoin.
Le noyau de cette stratégie est l'indice de force réelle (ITS). TSI mesure l'ampleur absolue et la direction des variations de prix en doublant la variation en pourcentage des prix, identifiant ainsi la force absolue des mouvements de prix à la hausse et à la baisse.
Lorsque le TSI traverse sa ligne de signal tsi2, un signal long est généré. Lorsque le TSI traverse en dessous de tsi2, un signal court est généré. En outre, la stratégie filtre les signaux TSI avec RSI - ne prenant que des signaux longs lorsque le RSI est supérieur à 50 et des signaux courts lorsque le RSI est inférieur à 50, pour éviter certains faux signaux.
Les avantages de cette stratégie sont les suivants:
Les risques de cette stratégie comprennent:
L'effet de filtrage peut être réduit en assouplissant les règles de filtrage RSI et en raccourcissant les périodes EMA.
La stratégie peut être optimisée dans les aspects suivants:
Optimiser les paramètres TSI et RSI pour trouver la meilleure combinaison.
Introduire plus d'indicateurs techniques pour construire un modèle multifactoriel.
Optimiser les règles d'entrée pour éviter les longues tendances à la baisse et les courtes tendances à la hausse.
Optimiser les stratégies de stop-loss telles que le stop-loss à la traîne, le stop-loss basé sur le temps, le stop-loss de rupture, etc.
Optimisez les règles de sortie pour éviter les sorties prématurées ou tardives.
Optimiser les produits de trading, les sessions de trading pour se concentrer sur les plus efficaces.
Cette stratégie identifie les tendances à court terme du bitcoin avec le True Strength Index et filtre les signaux avec RSI pour le trading algorithmique du bitcoin. Elle a l'avantage de capturer sensiblement les tendances et de filtrer le bruit, mais présente également des problèmes et des risques commerciaux.
/*backtest start: 2022-09-30 00:00:00 end: 2023-10-06 00:00:00 period: 1d basePeriod: 1h exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}] */ // strategy("True Strength Indicator BTCUSD 15p", shorttitle="TSI BTCUSD 15p",initial_capital=1000, commission_value=0.15, commission_type =strategy.commission.percent, default_qty_value=100 , overlay = false, pyramiding=10, default_qty_type=strategy.percent_of_equity) //BASED ON True Strength Indicator MTF resCustom = input(title="Timeframe", defval="15" ) long = input(title="Long Length", defval=25) short = input(title="Short Length", defval=13) signal = input(title="Signal Length", defval=13) price = request.security(syminfo.tickerid,resCustom,close) double_smooth(src, long, short) => fist_smooth = ta.ema(src, long) ta.ema(fist_smooth, short) pc = ta.change(price) double_smoothed_pc = double_smooth(pc, long, short) double_smoothed_abs_pc = double_smooth(math.abs(pc), long, short) tsi_value = 100 * (double_smoothed_pc / double_smoothed_abs_pc) tsi2=ta.ema(tsi_value, signal) plot(tsi_value, color=color.lime,linewidth=2) plot(tsi2, color=color.red,linewidth=2) rsiserie = ta.rsi(price,7) cciserie = ta.cci(price,14) stochserie = ta.stoch(price,14,3,3) plot(rsiserie,color=color.purple) hline(30, title="Zero") hline(50, title="Zero",linestyle=hline.style_solid, linewidth=2) hline(70, title="Zero") buy = ta.crossover(tsi_value, tsi2) //and rsiserie[1]<25 //and cciserie<-100 and stochserie<20 sell = ta.crossunder(tsi_value, tsi2) //and rsiserie[1]>85 //and cciserie>100 and stochserie>80 alertcondition(buy, title='TSI system', message='Buy signal at!' ) alertcondition(sell, title='TSI system', message='Sell signal at!' ) strategy.entry("BUY", strategy.long, 1, when = buy) strategy.entry("SELL", strategy.short, 1, when = sell ) greentsi =tsi_value redtsi = tsi2 bgcolor( greentsi>redtsi and rsiserie > 50 ? color.lime : na, transp=90) bgcolor( greentsi<redtsi and rsiserie < 50 ? color.red : na, transp=90) yellow1= redtsi > greentsi and rsiserie > 50 yellow2 = redtsi < greentsi and rsiserie < 50 bgcolor( yellow1 ? yellow : na, transp=80) bgcolor( yellow2 ? yellow : na, transp=50) bgcolor( yellow1 and yellow1[1] ? yellow : na, transp=70) bgcolor( yellow2 and yellow2[2] ? yellow : na, transp=70) bgcolor( rsiserie > 70 ? color.lime : na, transp=60) bgcolor( rsiserie < 30 ? color.red : na, transp=60)