Stratégie axée sur le volume énergétique

Auteur:ChaoZhang est là., Date: 2024-01-04 15h38:54 Pour les personnes âgées
Les étiquettes:

img

Résumé

La stratégie basée sur l'énergie de volume juge les changements de sentiment des participants au marché en analysant les changements de volume des transactions. Elle divise le volume des transactions en volume haussier et volume baissier, calcule leur moyenne mobile pondérée, génère des signaux haussiers lorsque le volume haussier domine et génère des signaux baissiers lorsque le volume baissier domine.

La logique de la stratégie

La stratégie divise d'abord le volume de négociation de chaque chandelier en volume haussier et volume baissier en fonction de la relation entre le prix de clôture et le prix d'ouverture. Si le prix de clôture est supérieur au prix d'ouverture, l'ensemble du volume de négociation du chandelier est un volume haussier. Si le prix de clôture est inférieur au prix d'ouverture, le volume haussier est calculé selon le rapport (prix le plus élevé - prix d'ouverture) / (prix le plus élevé - prix le plus bas), et le reste est un volume baissier.

Ensuite, il calcule la moyenne mobile pondérée du volume haussier et baissier des derniers n chandeliers respectivement. Si la moyenne mobile du volume haussier est supérieure au volume baissier et que leur différence divisée par le volume haussier est supérieure à un seuil prédéfini, un signal haussier est généré.

Il établit également une référence avec le volume moyen des transactions pour identifier les zones de consolidation.

Analyse des avantages

  • Utiliser les informations sur le volume pour juger du sentiment des acteurs du marché sur une base théorique
  • Identifier automatiquement les zones de consolidation pour éviter de manquer des signaux importants
  • Les paramètres personnalisables s'adaptent aux différents produits et délais de négociation
  • Peut identifier les signaux haussiers et baissiers séparément ou suivre un seul côté

Analyse des risques

  • Les données relatives au volume des transactions peuvent être manipulées
  • Les paramètres par défaut peuvent ne pas convenir à tous les produits, une optimisation est nécessaire
  • Les paramètres d'identification de la consolidation incorrects peuvent manquer des signaux
  • Des signaux erronés peuvent apparaître à court terme

Des méthodes telles que l'optimisation des paramètres et la combinaison avec d'autres indicateurs peuvent aider à réduire les risques.

Directions d'optimisation

  • Tester différentes méthodes de calcul du volume des transactions
  • Essayez différents types de moyennes mobiles, comme EMA, SMMA etc.
  • Optimiser la période de calcul du volume moyen
  • Optimiser les paramètres pour identifier la consolidation
  • Combiner avec d'autres indicateurs techniques pour filtrer les signaux

Résumé

La stratégie axée sur l'énergie de volume juge intelligemment la distribution du volume de négociation haussier et baissier pour déterminer le sentiment du marché et les changements de tendance.


/*backtest
start: 2022-12-28 00:00:00
end: 2024-01-03 00:00:00
period: 1d
basePeriod: 1h
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/
// © Shuttle_Club
//@version=5

strategy('Volume fight strategy', default_qty_type=strategy.cash, default_qty_value=10000, currency='USD', commission_value=0.04, calc_on_order_fills=false, calc_on_every_tick=false, initial_capital=10000)

direction = input.string('ANY', 'Direction', options=['LONG', 'SHORT', 'ANY'], tooltip='Select the direction of trade.\n\nВыберите направление торговли.')
ma = input.int(11, 'Search_range', minval=1, tooltip='The range of estimation of the predominance of bullish or bearish volume (quantity bars). The smaller the TF, the higher the range value should be used to filter out false signals.\n\nДиапазон оценки преобладания бычьего или медвежьего объема (количество баров). Чем меньше ТФ, тем выше следует использовать значение диапазона, чтобы отфильтровать ложные сигналы.')
delta = input.float(15, 'Smoothing_for_flat,%', step=0.5, minval=0, tooltip='Smoothing to reduce false signals and highlight the flat zone. If you set the percentage to zero, the flat zones will not be highlighted, but there will be much more false signals, since the indicator becomes very sensitive when the smoothing percentage decreases.\n\nСглаживание для уменьшения ложных сигналов и выделения зоны флета. Если выставить процент равным нулю, то зоны флета выделяться не будут, но будет гораздо больше ложных сигналов, так как индикатор становится очень чувствительным при снижении процента сглаживания')
bgshow = input.bool(true, 'Show background zones', tooltip='Show the color background of the current trading zone.\n\nПоказывать цветовой фон текущей торговой зоны.')
all_signal_show = input.bool(false, 'Show each setup in zone', tooltip='Show every signals into trading zone.\n\nПоказывать каждый сигнал внутри торговой зоны.')

/////   CALCULATION
bull_vol = open < close ? volume : volume * (high - open) / (high - low)  //determine the share of bullish volume
bear_vol = open > close ? volume : volume * (open - low) / (high - low)  //determine the share of bearish volume
avg_bull_vol = ta.vwma(bull_vol, ma)  //determine vwma
avg_bear_vol = ta.vwma(bear_vol, ma)
diff_vol = ta.sma(avg_bull_vol / volume - 1 - (avg_bear_vol / volume - 1), ma)  //normalize and smooth the values
vol_flat = math.abs(avg_bull_vol + avg_bear_vol) / 2  //determine average value for calculation flat-filter

/////   SIGNALS
up = int(na), up := nz(up[1])
dn = int(na), dn := nz(dn[1])
bull = avg_bull_vol > avg_bear_vol and vol_flat / avg_bull_vol < 1 - delta / 100  //determine up zones
bear = avg_bull_vol < avg_bear_vol and vol_flat / avg_bear_vol < 1 - delta / 100  //determine dn zones

if bull
    up += 1, dn := 0
    dn
if bear
    dn += 1, up := 0
    up
if not bull and not bear and all_signal_show
    up := 0, dn := 0
    dn

/////   PLOTTING
plotshape(bull and up == 1, 'UP', location=location.bottom, style=shape.triangleup, color=color.new(color.green, 0), size=size.tiny)
plotshape(bear and dn == 1, 'DN', location=location.top, style=shape.triangledown, color=color.new(color.red, 0), size=size.tiny)
bgcolor(title='Trading zones', color=bgshow and avg_bull_vol > avg_bear_vol and vol_flat / avg_bull_vol < 1 - delta / 100 ? color.new(color.green, 85) : bgshow and avg_bull_vol < avg_bear_vol and vol_flat / avg_bear_vol < 1 - delta / 100 ? color.new(color.red, 85) : na)
plot(diff_vol, 'Volume difference', style=plot.style_area, color=avg_bull_vol > avg_bear_vol and vol_flat / avg_bull_vol < 1 - delta / 100 ? color.new(color.green, 0) : avg_bull_vol < avg_bear_vol and vol_flat / avg_bear_vol < 1 - delta / 100 ? color.new(color.red, 0) : color.new(color.gray, 50))

strategy.close('Short', comment='close', when=bull and up == 1)
strategy.close('Long', comment='close', when=bear and dn == 1)
strategy.entry('Long', strategy.long, when=direction != 'SHORT' and bull and up == 1)
strategy.entry('Short', strategy.short, when=direction != 'LONG' and bear and dn == 1)

if bull and up==1
    alert('Bullish movement! LONG trading zone', alert.freq_once_per_bar_close)
if bear and dn==1
    alert('Bearish movement! SHORT trading zone', alert.freq_once_per_bar_close)
    

Plus de