Stratégie d'évolution du volume des prix

Auteur:ChaoZhang est là., Date: 2023-12-25 13:09:48 Je suis désolé
Les étiquettes:

img

Résumé

Cette stratégie utilise des indicateurs de dynamique pour suivre les mouvements de prix à court terme et déterminer les directions de tendance du marché pour les opérations d'achat et de vente.

Principaux

La stratégie calcule d'abord la dynamique des prix. En calculant la différence entre le prix de la période en cours et le prix de la période précédente, elle peut refléter l'évolution absolue des prix au cours de la dernière période. Une valeur positive indique une augmentation des prix et une valeur négative indique une baisse des prix. Ensuite, la moyenne mobile de cette valeur de différence est calculée pour le filtrage afin d'obtenir l'indicateur de dynamique moyenne.

Lorsque le dernier prix est supérieur à la dynamique moyenne, cela indique que le prix est en hausse. Lorsque le dernier prix est inférieur à la dynamique moyenne, cela indique que le prix est en baisse. Déterminez la direction de la tendance des prix en fonction de cet indicateur. Combiné avec le filtrage par amplification de volume, seuls les signaux avec des volumes de trading relativement importants sont sélectionnés dans le trading réel.

Selon les tendances de hausse et de baisse des prix identifiées, des opérations d'achat et de vente correspondantes sont effectuées.

Analyse des avantages

  • La stratégie juge rapidement les tendances et peut rapidement capturer les mouvements de prix à court terme, ce qui convient aux opérations à court terme.
  • Évitez de vous laisser induire en erreur par de fausses fuites grâce au filtrage du volume
  • Mettre en œuvre la logique de fonctionnement de la poursuite des montées et de la mort des chutes
  • Une fréquence de négociation élevée, adaptée aux investisseurs agressifs

Analyse des risques

  • Vulnérables à l'impact de fluctuations anormales du marché, avec certains risques de faux signaux
  • Risques de dérapage causés par des opérations fréquentes
  • Peut manquer les tendances à moyen et à long terme, et la rentabilité à long terme doit être vérifiée

Directions d'optimisation

  • Ajuster les paramètres des indicateurs de dynamique pour optimiser les effets de jugement
  • Optimiser les paramètres de filtrage du volume pour améliorer la qualité du signal
  • Améliorer les mécanismes de stop-loss pour contrôler les pertes uniques
  • Incorporer plus de facteurs pour assurer une

Conclusion

La stratégie complète suit les tendances à court terme des changements de prix à travers des indicateurs de dynamique, et détermine rapidement les temps d'entrée et de sortie. Les avantages sont l'opération rapide, la poursuite des hausses et la destruction des chutes. Les inconvénients sont la qualité du signal et la rentabilité à long terme doivent être examinées.


/*backtest
start: 2022-12-18 00:00:00
end: 2023-12-24 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/
// © russtic

//@version=2

strategy("HA smoothed eliminator v2  ",pyramiding=1, slippage=10, default_qty_type=strategy.percent_of_equity, 
     commission_type=strategy.commission.percent, commission_value=0.075, overlay=true, 
     default_qty_value=100, initial_capital=1000)

FromMonth1 = input(defval=1, title="From Month", minval=1, maxval=12)
FromDay1 = input(defval=1, title="From Day", minval=1, maxval=31)
FromYear1 = input(defval=2019, title="From Year", minval=2010)
ToMonth1 = input(defval=12, title="To Month", minval=1, maxval=12)
ToDay1 = input(defval=31, title="To Day", minval=1, maxval=31)
ToYear1 = input(defval=2020, title="To Year", minval=2010)
start1 = timestamp(FromYear1, FromMonth1, FromDay1, 00, 00)
finish1 = timestamp(ToYear1, ToMonth1, ToDay1, 23, 59)
window1() => true
    
t1 = time(timeframe.period, "0300-1200")
t2 = time(timeframe.period, "0930-1700")
London = na(t1) ? na : green
NY = na(t2) ? na : red

bgcolor(London, title="London")
bgcolor(NY, title="New York")
///////////////////////////
// HA smoothed

len=(1 )
o=ema(open,len)
c=ema(close,len)
h=ema(high,len)
l=ema(low,len)

haclose = (o+h+l+c)/4
haopen = na(haopen[1]) ? (o + c)/2 : (haopen[1] + haclose[1]) / 2
hahigh = max (h, max(haopen,haclose))
halow = min (l, min(haopen,haclose))

len2=(len)
o2=ema(haopen, len2)
c2=ema(haclose, len2)
h2=ema(hahigh, len2)
l2=ema(halow, len2)

buy= (o2<c2) 

closebuy= (o2>c2)

sell= (o2>c2)

closesell= (o2<c2)

//
/// END NEW SCRIPT 

//
//
//                  MERGE SCRIPTS
a1= o2<c2
b1=o2>c2
is_uptrend = (a1)// and (p> 0)
is_downtrend =  (b1)// and (p <0)
barcolor(b1 ? red: a1 ? lime : blue)

//end


// =========================start     PVT -GIVES EACH BAR A VALUE
facton = (true)//, title="arrow elimination (factor) on ")
Length1 = 2//input(2, title="PVT Length", minval=1)

xPrice = close//input(title="Source", type=source, defval=close)
xsma = wma(xPrice, Length1) 
nRes = xPrice - xsma  
pos = iff(nRes > 0, 1,
	     iff(nRes < 0, -1, nz(pos[1], 0))) 
forex= input(true, title = 'strength toggle ')
forexyes = (forex == true)? 10000 : (forex == false)? 1: na

plot(nRes*forexyes , color=aqua, title="strength", transp=100)
// =========================         end pvt
//
//=============================     start factor // ELIMINATES  weak signals
//                  start trend
//
factor = input(600.00, title = "strength elimination") 
factor1 = factor - (factor*2)//input(-100.00, title = "sell strength elimination ") 
facton1 = (facton == true) and is_uptrend == 1 and nRes*forexyes>factor ? 1 : (facton == true) and is_downtrend == 1 and nRes*forexyes<factor1 ? -1 : (facton == false)
// ==================== =====
// 
//===========================    end factor
nRestrend = (nRes*forexyes)
//=========================== plot arrows 
plot1 = iff(is_uptrend[1] == 1, 0 , 1)  
plot2 = iff(is_downtrend[1]  == 1, 0 , 1)
uparrowcond =  is_downtrend ? false : nz(uparrowcond[1], false) == true ? uparrowcond[1] : (facton1 and is_uptrend and nRes*forexyes>factor)
downarrowcond =  is_uptrend ? false : nz(downarrowcond[1], false) == true ? downarrowcond[1] : (facton1 and is_downtrend and nRes*forexyes<factor1)
//prevarrowstate = uparrowcond  ? 1 : downarrowcond ? -1 : nz(prevarrowstate[1], 0)


candledir = (open < close)? 1: (open>close)? -1 : na // ONLY OPENS ON SAME BAR DIRECTION AS SIGNAL



up=nz(uparrowcond[1], false) == false and ( is_uptrend and nRes*forexyes>factor) and candledir ? 1:na
dn=nz(downarrowcond[1], false) == false and ( is_downtrend and nRes*forexyes<factor1) and candledir? -1:na



sig=0
if up==1 
    sig:=1
else
    if dn==-1
        sig:=-1
    else
        sig:=sig[1]
plotarrow(sig[1]!=1 and sig==1?1:na, title="BUY ARROW", colorup=lime, maxheight=80, minheight=50, transp=0)// up arrow 
plotarrow(sig[1]!=-1 and sig==-1?-1:na, title="SELL ARROW", colordown=red, maxheight=80, minheight=50, transp=0)// down arrow

//========================= alert condition
alertcondition(sig[1]!=1 and sig==1?1:na, title="BUY eliminator", message="BUY " ) 
alertcondition(sig[1]!=-1 and sig==-1?-1:na, title="SELL eliminator",  message="SELL ") 


strategy.entry("B", true, when=(sig[1]!=1 and sig==1?1:na) and window1())
strategy.entry("S", false,when=(sig[1]!=-1 and sig==-1?-1:na) and window1())








Plus de