Stratégie de trading robotisée BTC à plusieurs niveaux avec prise de bénéfices par lots


Date de création: 2023-10-18 11:12:39 Dernière modification: 2023-10-18 11:12:39
Copier: 0 Nombre de clics: 707
1
Suivre
1617
Abonnés

Stratégie de trading robotisée BTC à plusieurs niveaux avec prise de bénéfices par lots

Aperçu

Cette stratégie est une stratégie de trading robot de BTC avec un stop-loss en plusieurs niveaux. Il effectue une entrée d’achat en trouvant le point le plus bas, puis définit un stop-loss en plusieurs niveaux pour effectuer une sortie de stop-loss en plusieurs niveaux.

Principe de stratégie

  1. Trouver le moment d’entrée: un signal d’achat est généré lorsque l’indicateur CC passe sous l’axe 0, à ce point il est possible d’acheter des lots.

  2. Réglage de point d’arrêt: Réglage d’un pourcentage d’arrêt en entrée, converti en prix.

  3. Configuration de points d’arrêt à plusieurs niveaux: divisé en 4 points de sortie, le pourcentage d’arrêt de chaque point de sortie est converti en prix par entrée.

  4. Contrôle des risques: définir le montant maximal de la position, en définissant le pourcentage de sortie de chaque point d’entrée, pour la dispersion des risques.

Analyse des avantages

Cette stratégie présente les avantages suivants:

  1. Les signaux d’entrée sont plus fiables, cherchez les points les plus bas pour acheter et évitez les points élevés.

  2. Le multi-stop permet de verrouiller une partie des bénéfices tout en conservant une partie des bénéfices pour continuer à fonctionner.

  3. Il est possible de contrôler les pertes dans une certaine mesure en définissant des points de stop-loss pour le contrôle des risques.

  4. Le risque peut être réparti en plusieurs lots, ce qui permet d’éviter les pertes totales en une seule fois.

  5. Les retraits peuvent être contrôlés dans une certaine mesure.

Analyse des risques

La stratégie présente également les risques suivants:

  1. L’indicateur CC ne peut pas déterminer à 100% le point le plus bas, ce qui peut entraîner une perte d’opportunités d’achat.

  2. Une mauvaise configuration du point d’arrêt peut entraîner des pertes inutiles.

  3. Une mauvaise configuration des lots peut également entraîner des pertes de bénéfices.

  4. Il est plus difficile d’arrêter les secousses.

  5. Il est difficile de s’arrêter quand les choses tournent mal.

Direction d’optimisation

L’optimisation peut être réalisée dans les domaines suivants:

  1. Optimiser les signaux d’entrée, ajouter plus d’indicateurs ou de jugements d’apprentissage automatique pour déterminer le moment de l’achat.

  2. Optimiser les stratégies d’arrêt des pertes pour les rendre plus résilientes et plus réactives.

  3. L’optimisation de la stratégie de sortie pour mieux s’adapter aux chocs et aux tendances.

  4. L’ajout de stratégies telles que le trailing stop rend la suspension plus flexible.

  5. Testez les paramètres de différentes variétés pour trouver la meilleure combinaison de paramètres.

Résumer

Cette stratégie est globalement une stratégie de trading de BTC basée sur la recherche de signaux d’achat au point le plus bas et sur la mise en place de plusieurs niveaux de stop-loss et de stop-loss. Elle présente certains avantages, mais il existe également des directions qui peuvent être optimisées.

Code source de la stratégie
/*backtest
start: 2023-09-17 00:00:00
end: 2023-10-17 00:00:00
period: 2h
basePeriod: 15m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
args: [["v_input_1",2]]
*/

// This source code is subject to the terms of the Mozilla Public License 2.0 at https://mozilla.org/MPL/2.0/
// © RafaelZioni


// © theCrypster 2020

//@version=4
// strategy(title = "BTC bot", overlay = true, pyramiding=1,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.075)
strat_dir_input = input(title="Strategy Direction", defval="long", options=["long", "short", "all"])
strat_dir_value = strat_dir_input == "long" ? strategy.direction.long : strat_dir_input == "short" ? strategy.direction.short : strategy.direction.all
strategy.risk.allow_entry_in(strat_dir_value)
//INPUTS
higherTF = input("W", type=input.resolution)
pc = security(syminfo.tickerid, higherTF, close[1], lookahead=true)
ph = security(syminfo.tickerid, higherTF, high[1], lookahead=true)
pl = security(syminfo.tickerid, higherTF, low[1], lookahead=true)

PP = 0.0,R1 = 0.0, R2 = 0.0, R3 = 0.0,S1 = 0.0, S2 = 0.0, S3 = 0.0

PP := (ph + pl + pc) / 3
R1 := PP     + (PP   - pl)
S1 := PP     - (ph - PP)
R2 := PP     + (ph - pl)
S2 := PP     - (ph - pl)
factor=input(2)
R3 := ph  + factor * (PP   - pl) 
S3 := pl   - 2 * (ph - PP) 

// 
length=input(21)
//
p = close
vrsi = rsi(p, length)
pp=ema(vrsi,length)
d=(vrsi-pp)*5
cc=(vrsi+d+pp)/2
//
low1=crossover(cc,0)

sell=crossover(close[1],R3) 
//
l = low1
s=sell
if l 
    strategy.entry("buy", strategy.long)
if s 
    strategy.entry("sell", strategy.short)
per(pcnt) =>
    strategy.position_size != 0 ? round(pcnt / 100 * strategy.position_avg_price / syminfo.mintick) : float(na)
stoploss=input(title=" stop loss", defval=15, minval=0.01)
los = per(stoploss)
q1=input(title=" qty_percent1", defval=25, minval=1)
q2=input(title=" qty_percent2", defval=25, minval=1)
q3=input(title=" qty_percent3", defval=25, minval=1)
tp1=input(title=" Take profit1", defval=3, minval=0.01)
tp2=input(title=" Take profit2", defval=5, minval=0.01)
tp3=input(title=" Take profit3", defval=7, minval=0.01)
tp4=input(title=" Take profit4", defval=10, minval=0.01)
strategy.exit("x1", qty_percent = q1, profit = per(tp1), loss = los)
strategy.exit("x2", qty_percent = q2, profit = per(tp2), loss = los)
strategy.exit("x3", qty_percent = q3, profit = per(tp3), loss = los)
strategy.exit("x4", profit = per(tp4), loss = los)