
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.
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.
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:
Les principaux risques de cette stratégie sont les suivants:
La réponse:
La stratégie vise à optimiser les aspects suivants:
L’optimisation de ces éléments peut rendre les stratégies plus stables, plus contrôlables et plus extensibles.
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.
/*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)