Stratégie d'achat à deux indicateurs

Auteur:ChaoZhang est là., Date: 2024-01-04 17h39 et 13h
Les étiquettes:

img

Résumé

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 logique de la stratégie

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.

Analyse des avantages

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

  1. L'utilisation d'indicateurs doubles empêche de fausses ruptures.

  2. Prendre des bénéfices par lots permet de maximiser les petites captures à la hausse dans les plages.

  3. Il excelle sur les marchés limités par la fourchette, en particulier ceux qui sont bloqués autour des zones inachevées institutionnelles.

  4. 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.

Analyse des risques

Les principaux risques sont les suivants:

  1. 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.

  2. L'optimisation des niveaux de prise de profit et des ratios de position aide.

  3. Les grands arrêts entraînent des pertes potentiellement importantes sur une seule transaction.

  4. Les marchés à forte tendance présentent des risques de biais directionnel.

  5. Une fréquence de négociation élevée augmente les coûts de transaction.

Directions d'optimisation

Les directions d'optimisation possibles comprennent:

  1. Optimiser les combinaisons de volume et de RSI pour réduire les faux signaux, ajouter des confirmations comme MACD et KDJ.

  2. Tester des niveaux de profit et des ratios de position différents pour des configurations idéales, potentiellement avec des mécanismes dynamiques.

  3. 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.

  4. Incorporer des indicateurs de tendance pour détecter les renversements pour des arrêts de pertes en temps opportun.

  5. Utiliser le backtesting algorithmique pour itérer rapidement les paramètres pour obtenir les meilleures configurations.

  6. 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é.

Conclusion

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


Plus de