Cette stratégie identifie les opportunités d'achat en combinant le volume des transactions et les indicateurs RSI. Elle gère les positions en utilisant des objectifs de profit par étapes pour verrouiller les gains progressivement.
La stratégie utilise deux indicateurs pour identifier les signaux d'achat - le volume des transactions et le RSI. Plus précisément, elle est longue lorsque le volume dépasse 2,5 fois le volume moyen de 70 jours, avec un RSI en dessous de 30 (niveaux de survente).
Une fois qu'une position longue est établie, la stratégie fixe 5 objectifs de profit à 0,4%, 0,6%, 0,8%, 1,0% et 1,2%. Elle ferme progressivement les positions en fonction du ratio de position (20%, 40%, 60%, 80% et 100%) jusqu'à la sortie complète. Un stop loss de 5% est également défini.
En prenant des bénéfices par étapes, il vise à verrouiller les gains au milieu de mouvements haussiers mineurs, au lieu d'attendre des courses plus importantes qui peuvent ne pas se matérialiser.
Les principaux avantages de cette stratégie sont les suivants:
L'utilisation d'indicateurs doubles empêche de fausses ruptures.
Prendre des bénéfices par lots permet de maximiser les petites captures à la hausse dans les plages.
Il excelle sur les marchés limités par la fourchette, en particulier ceux qui sont bloqués autour des zones inachevées institutionnelles.
Le large stop loss permet aux marchés de faire des whipsaws avant de s'arrêter et d'éviter une sortie prématurée des retraits à court terme.
Les principaux risques sont les suivants:
L'erreur d'interprétation du double signal entraînant de fausses entrées peut être atténuée par l'optimisation des paramètres.
L'optimisation des niveaux de prise de profit et des ratios de position aide.
Les grands arrêts entraînent des pertes potentiellement importantes sur une seule transaction.
Les marchés à forte tendance présentent des risques de biais directionnel.
Une fréquence de négociation élevée augmente les coûts de transaction.
Les directions d'optimisation possibles comprennent:
Optimiser les combinaisons de volume et de RSI pour réduire les faux signaux, ajouter des confirmations comme MACD et KDJ.
Tester des niveaux de profit et des ratios de position différents pour des configurations idéales, potentiellement avec des mécanismes dynamiques.
Introduction de règles de dimensionnement des positions pour réduire le risque maximal par transaction par le biais de systèmes de gestion des risques.
Incorporer des indicateurs de tendance pour détecter les renversements pour des arrêts de pertes en temps opportun.
Utiliser le backtesting algorithmique pour itérer rapidement les paramètres pour obtenir les meilleures configurations.
Apprendre des modèles institutionnels de contrôle du dérapage/des coûts des HFT pour améliorer l'efficacité malgré un roulement élevé.
Cette stratégie identifie les signaux inférieurs avec des augmentations de volume et des RSI survendus pour l'achat, en tirant des bénéfices progressifs au milieu des gammes via des sorties par étapes. Elle profite fréquemment sans nécessiter d'énormes runs. Les inconvénients incluent les risques d'interprétation erronée du signal et un chiffre d'affaires élevé. L'optimisation de la confirmation et les contrôles de risque / coût améliorent la robustesse. Excellent pour récolter des gains à court terme sur des marchés agités.
/*backtest start: 2023-12-27 00:00:00 end: 2024-01-03 00:00:00 period: 1m basePeriod: 1m exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}] */ // This source code is subject to the terms of the Mozilla Public License 2.0 at https://mozilla.org/MPL/2.0/ // © wielkieef //@version=5 strategy(title='BTFD strategy [3min]', overlay=true, pyramiding=5, initial_capital=10000, default_qty_type=strategy.percent_of_equity, default_qty_value=100, calc_on_order_fills=false, slippage=0, commission_type=strategy.commission.percent, commission_value=0.03) // Volume vol_sma_length = input.int(70, title='Volume lenght ', minval=1) Volume_condt = volume > ta.sma(volume, vol_sma_length) * 2.5 // Rsi rsi_lenght = input.int(20, title='RSI lenght', minval=0) rsi_up = ta.rma(math.max(ta.change(close), 0), rsi_lenght) rsi_down = ta.rma(-math.min(ta.change(close), 0), rsi_lenght) rsi_value = rsi_down == 0 ? 100 : rsi_up == 0 ? 0 : 100 - 100 / (1 + rsi_up / rsi_down) rsi_overs = rsi_value <= 30 rsi_overb = rsi_value >= 70 // logic tp_1 = input.float(0.4," TP 1", minval=0.1, step=0.1) tp_2 = input.float(0.6," TP 2", minval=0.2, step=0.1) tp_3 = input.float(0.8," TP 3", minval=0.3, step=0.1) tp_4 = input.float(1.0," TP 4", minval=0.4, step=0.1) tp_5 = input.float(1.2," TP 5", minval=0.5, step=0.1) q_1 = input.int(title=' % TP 1 Q ', defval=20, minval=1, step=10) q_2 = input.int(title=' % TP 2 Q ', defval=40, minval=1, step=10) q_3 = input.int(title=' % TP 3 Q ', defval=60, minval=1, step=10) q_4 = input.int(title=' % TP 4 Q ', defval=80, minval=1, step=10) q_5 = input.int(title=' % TP 5 Q ', defval=100, minval=1, step=10) sl = input.float(5.0, '% Stop Loss', step=0.1) long_cond = Volume_condt and rsi_overs // this code is from author RafaelZioni, modified by wielkieef per(procent) => strategy.position_size != 0 ? math.round(procent / 100 * strategy.position_avg_price / syminfo.mintick) : float(na) // -------------------------------------------------------------------------------------------------------------------- if long_cond strategy.entry('BUY', strategy.long) strategy.exit('TP 1', qty_percent=q_1, profit=per(tp_1), loss=per(sl) ) strategy.exit('TP 2', qty_percent=q_2, profit=per(tp_2), loss=per(sl) ) strategy.exit('TP 3', qty_percent=q_3, profit=per(tp_3), loss=per(sl) ) strategy.exit('TP 4', qty_percent=q_4, profit=per(tp_4), loss=per(sl) ) strategy.exit('TP 5', qty_percent=q_5, profit=per(tp_5), loss=per(sl) ) // by wielkieef