Momentum-Indikator zur Verfolgung kurzfristiger Preisänderungsstrategien


Erstellungsdatum: 2023-12-25 13:09:48 zuletzt geändert: 2023-12-25 13:09:48
Kopie: 0 Klicks: 554
1
konzentrieren Sie sich auf
1623
Anhänger

Momentum-Indikator zur Verfolgung kurzfristiger Preisänderungsstrategien

Überblick

Die Strategie nutzt Dynamikindikatoren, um kurzfristige Preisänderungen zu verfolgen, die Richtung der Markttrends zu bestimmen und Kauf- und Verkaufsaktionen durchzuführen. Die Strategie wird als Price Volume Trend Strategy bezeichnet und spiegelt die Idee der Strategie wider, die Preisänderungen und Transaktionsvolumen zu bestimmen.

Strategieprinzip

Die Strategie berechnet zunächst die Dynamik der Preise. Durch die Berechnung der Differenz zwischen den Preisen der aktuellen und der vorherigen Periode kann die absolute Veränderung der Preise in der jüngsten Periode reflektiert werden. Positive Werte bedeuten einen Preisanstieg, negative Werte bedeuten einen Preisrückgang.

Wenn der neueste Preis größer als die durchschnittliche Dynamik ist, bedeutet dies, dass der Preis steigt. Wenn der neueste Preis kleiner als die durchschnittliche Dynamik ist, bedeutet dies, dass der Preis fällt.

Die Beurteilung des Preisanstiegs und des Preisrückgangs, die entsprechenden Kauf- und Verkaufsaktionen.

Analyse der Stärken

  • Strategie, die schnell Trends beurteilt und kurzfristige Preisänderungen schnell erfasst, geeignet für kurzfristige Operationen
  • Vermeiden Sie, dass Sie durch falsche Durchbrüche in die Irre geführt werden, indem Sie die Transaktionsmenge filtern
  • Die Operationslogik für die Verfolgung des Absturzes
  • Hochfrequenz, geeignet für aktive Investoren

Risikoanalyse

  • Anfällig für außergewöhnliche Marktschwankungen mit einem gewissen Risiko für falsche Signale
  • Die Risiken eines häufigen Auslaufs
  • Das Unternehmen hat sich in der Vergangenheit mit der Entwicklung der Internet-Nutzung befasst.

Optimierungsrichtung

  • Anpassung der Parameter des Dynamikindikators zur Optimierung der Beurteilungseffekte
  • Optimierung der Übertragungsfilterparameter zur Verbesserung der Signalqualität
  • Erhöhung der Stop-Loss-Mechanismen zur Bekämpfung von Einzelschäden
  • Mehrfaktorische Beurteilungen in Kombination mit mehr Faktoren, um sicherzustellen, dass sie vorangetrieben werden

Zusammenfassen

Die Strategie überall verfolgt kurzfristige Preisentwicklungen durch dynamische Indikatoren, um schnell zu entscheiden, wann man kauft und verkauft. Der Vorteil ist, schnell zu handeln, um den Rückgang zu verhindern. Der Nachteil ist, dass die Signalqualität und die langfristige Profitabilität zu berücksichtigen sind. Durch die Parameteranpassung und die Erhöhung der Windkontrollmechanismen kann die Strategie ein wichtiger Bestandteil der Hochfrequenzstrategie sein und in Kombination mit anderen Lowfrequency-Strategien verwendet werden.

Strategiequellcode
/*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())