Stratégie pyramidale basée sur l'indicateur OBV


Date de création: 2023-12-08 15:58:29 Dernière modification: 2023-12-08 15:58:29
Copier: 0 Nombre de clics: 705
1
Suivre
1621
Abonnés

Stratégie pyramidale basée sur l’indicateur OBV

Aperçu

Cette stratégie est appelée la “pyramide de l’OBV” et repose sur l’indicateur de l’OBV pour la conception de la stratégie d’ouverture de position et sur la méthode de mise en position pyramidale, qui consiste à mettre en place plusieurs mises en position par lots et à suivre la tendance pour réaliser des bénéfices.

Principe de stratégie

Cette stratégie utilise l’indicateur OBV pour déterminer la direction de la tendance. L’indicateur OBV est basé sur la variation du volume de transactions pour déterminer la tendance des prix, et la variation du volume de transactions reflète l’attitude des acteurs du marché.

La stratégie permet de déterminer si l’OBV a traversé l’axe 0 et de confirmer la formation d’une tendance à plusieurs têtes. Lorsqu’une tendance à plusieurs têtes se forme, la règle de mise en position pyramidale peut être mise en place jusqu’à 7 fois.

Analyse des avantages

Le plus grand avantage de cette stratégie est qu’elle permet de capturer la tendance, de suivre la tendance en fonction de la méthode de mise en bourse de la pyramide, et de générer un potentiel de profit. De plus, la stratégie de contrôle des risques est en place et dispose d’un paramètre de stop-loss.

En particulier, les avantages se reflètent dans:

  1. L’utilisation de l’OBV pour déterminer la direction de la tendance est précise.
  2. La pyramide de mise en position permet de suivre les tendances et les bénéfices.
  3. Régler le risque de perte de capacité de freinage;
  4. La logique de la stratégie est simple, claire et compréhensible.

Analyse des risques

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

  1. Une erreur de jugement de l’OBV qui a entraîné une perte d’opportunité ou un mauvais positionnement;
  2. Il y a trop d’hypothèses et le risque augmente.

La réponse:

  1. Optimiser les paramètres OBV pour assurer une précision de jugement;
  2. Le nombre de prises de position doit être bien contrôlé pour que les risques soient maîtrisés.

Direction d’optimisation

La stratégie vise à optimiser les aspects suivants:

  1. Optimisation des paramètres OBV pour une meilleure précision de jugement;
  2. Optimisation du nombre et du montant des placements;
  3. Optimisation du point de rupture de l’arrêt;
  4. Les OBV peuvent être combinés avec d’autres indicateurs afin d’éviter une évaluation unique du risque.

L’optimisation de ces éléments peut rendre les stratégies plus stables, plus contrôlables et plus extensibles.

Résumer

La stratégie est très pratique dans l’ensemble. Elle utilise les indicateurs OBV pour déterminer la direction de la tendance, puis pour suivre la tendance via la pyramide de mise en position. La logique de la stratégie est concise et claire, facile à comprendre et à réévaluer.

Code source de la stratégie
/*backtest
start: 2023-11-07 00:00:00
end: 2023-12-07 00:00:00
period: 1h
basePeriod: 15m
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/
// © RafaelZioni

//@version=4

strategy(title = " OBV Pyr", overlay = true, pyramiding=5,initial_capital = 10000, default_qty_type= strategy.percent_of_equity, default_qty_value = 20, 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)

//
fastLength = input(250, title="Fast filter length ", minval=1)
slowLength = input(500,title="Slow filter length",  minval=1)
source=close
v1=ema(source,fastLength)
v2=ema(source,slowLength)
 
//
 
filter=true 
src = close


LengthOBV = input(20)

nv = change(src) > 0 ? volume : change(src) < 0 ? -volume : 0*volume 
c = cum(nv) 
c_tb = c - sma(c,LengthOBV) 

// Conditions

longCond = crossover(c_tb,0)
//shortCond =crossunder(cnv_tb,0)

//

longsignal  = (v1 > v2 or filter == false ) and longCond
//shortsignal = (v1 < v2 or filter == false ) and shortCond 
 
//set take profit
 
ProfitTarget_Percent = input(3)
Profit_Ticks = close * (ProfitTarget_Percent / 100) / syminfo.mintick
 
//set take profit
 
LossTarget_Percent = input(10)
Loss_Ticks = close * (LossTarget_Percent / 100) / syminfo.mintick
 
 
////Order Placing
//
strategy.entry("Entry 1", strategy.long, when=strategy.opentrades == 0 and longsignal)
//
strategy.entry("Entry 2", strategy.long, when=strategy.opentrades == 1 and longsignal)
//
strategy.entry("Entry 3", strategy.long, when=strategy.opentrades == 2 and longsignal)
//
strategy.entry("Entry 4", strategy.long, when=strategy.opentrades == 3 and longsignal)
//
strategy.entry("Entry 5", strategy.long, when=strategy.opentrades == 4 and longsignal)
//
strategy.entry("Entry 6", strategy.long, when=strategy.opentrades == 5 and longsignal)
//
strategy.entry("Entry 7", strategy.long, when=strategy.opentrades == 6 and longsignal)
//
//
//
if strategy.position_size > 0
    strategy.exit(id="Exit 1", from_entry="Entry 1", profit=Profit_Ticks, loss=Loss_Ticks)
    strategy.exit(id="Exit 2", from_entry="Entry 2", profit=Profit_Ticks, loss=Loss_Ticks)
    strategy.exit(id="Exit 3", from_entry="Entry 3", profit=Profit_Ticks, loss=Loss_Ticks)
    strategy.exit(id="Exit 4", from_entry="Entry 4", profit=Profit_Ticks, loss=Loss_Ticks)
    strategy.exit(id="Exit 5", from_entry="Entry 5", profit=Profit_Ticks, loss=Loss_Ticks)
    strategy.exit(id="Exit 6", from_entry="Entry 6", profit=Profit_Ticks, loss=Loss_Ticks)
    strategy.exit(id="Exit 7", from_entry="Entry 7", profit=Profit_Ticks, loss=Loss_Ticks)