Indicateur de momentum qui suit la stratégie de changement de prix à court terme


Date de création: 2023-12-25 13:09:48 Dernière modification: 2023-12-25 13:09:48
Copier: 0 Nombre de clics: 554
1
Suivre
1623
Abonnés

Indicateur de momentum qui suit la stratégie de changement de prix à court terme

Aperçu

Cette stratégie utilise des indicateurs de dynamique pour suivre les variations de prix à court terme, déterminer la direction des tendances du marché et effectuer des opérations d’achat et de vente. La stratégie est appelée Price Volume Trend Strategy, qui reflète la stratégie d’utilisation des variations de prix et des variations de transaction pour déterminer les tendances.

Principe de stratégie

La stratégie commence par calculer la dynamique des prix. En calculant la différence entre le prix du cycle actuel et le prix du cycle précédent, on peut refléter la variation absolue des prix au cours du dernier cycle. Une valeur positive indique une hausse des prix et une valeur négative une baisse des prix.

Lorsque le prix le plus récent est supérieur à la dynamique moyenne, le prix est en hausse; lorsque le prix le plus récent est inférieur à la dynamique moyenne, le prix est en baisse. En fonction de cet indicateur, la direction de la tendance des prix est déterminée.

Les prix sont évalués en fonction des tendances à la hausse et à la baisse, et les opérations d’achat et de vente sont effectuées en conséquence.

Analyse des avantages

  • Les stratégies permettent d’évaluer rapidement les tendances et de capturer rapidement les variations de prix à court terme, ce qui est approprié pour les opérations de courte durée.
  • Évitez d’être induit en erreur par de fausses avancées grâce à des filtres de volume
  • La logique de la chasse à l’échec est mise en œuvre
  • La fréquence des transactions est élevée et convient aux investisseurs actifs.

Analyse des risques

  • Facile à être affecté par des fluctuations anormales du marché, avec un certain risque de faux signaux
  • Le risque de dérapage lié à la fréquence des transactions
  • La rentabilité à long terme est à vérifier

Direction d’optimisation

  • Ajuster les paramètres de l’indicateur de mouvement pour optimiser les résultats des jugements
  • Optimisation des paramètres de filtrage de la quantité de transfert et amélioration de la qualité du signal
  • Augmentation des mécanismes de prévention des pertes et maîtrise des pertes individuelles
  • Le fait d’avoir plus de facteurs d’appréciation assure une motivation multifonctionnelle

Résumer

La stratégie overall trace les tendances à court terme des prix à l’aide d’indicateurs dynamiques, permettant de juger rapidement du moment de l’achat et de la vente. L’avantage est d’opérer rapidement et de suivre la baisse; les inconvénients sont la qualité du signal et la rentabilité à long terme.

Code source de la stratégie
/*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())