Trend nach Strategie auf der Grundlage von Preisschwemmungszonen

Schriftsteller:ChaoZhang, Datum: 2023-09-20 16:46:17
Tags:

Übersicht

Diese Strategie misst die Zeit, in der sich der Preis in verschiedenen Zonen befindet, um geringe Reibungszonen zu identifizieren und Trades Breakouts in diesen Zonen.

Strategie Logik

  1. Berechnen Sie die Preisverhältnisse um die aktuellen Niveaus in den letzten N Perioden als Preisreibung.

  2. Identifizieren Sie, ob der Preis in letzter Zeit in Niedrigreibungszonen mit minimalem Aufenthaltszeitraum eintritt.

  3. Verwenden Sie schnell gewichtete MA, um die aktuelle Trendrichtung zu bestimmen.

  4. Gewinn machen, wenn der Preis wieder in die Hochreibungszonen eintritt und eine Trendumkehr erwartet.

  5. Anpassbare Parameter einschließlich Reibungsrückblick, Ausbruchszone usw.

Vorteile

  1. Die Preisspannung vermeidet unterschiedliche Märkte und findet Trend-Ausbruchszonen.

  2. Schnelle MA kombiniert sich mit Reibung, um die Richtung zu bestimmen.

  3. Intuitive Grafiken, die die Preisspannung anzeigen.

  4. Standardparameter für den Krypto-Hochfrequenzhandel optimiert.

  5. Einfache und klare Logik, leicht zu verstehen und anzupassen.

Risiken

  1. Preisreibung, die zukünftige Bewegungen nicht vollständig vorhersagen kann.

  2. Schnelle MA kann zu ungenauen Zeitpunkten führen.

  3. Unwirksame Ausgleiche in und aus den Geschäften.

  4. Die Optimierung birgt die Gefahr einer Überanpassung.

  5. Bei volatilen Märkten können feste Parameter unterdurchschnittlich funktionieren.

Erweiterung

  1. Testen Sie verschiedene Zeiträume, um die Preisreibung zu berechnen.

  2. Bewertet verschiedene MA-Typen, um den jüngsten Trend zu ermitteln.

  3. Optimieren Sie die Parameter der Ausbruchszone für höhere Stabilität.

  4. Fügen Sie Stop Loss und Take Profit zum Risikomanagement hinzu.

  5. Dynamische Parameter zur Anpassung an sich verändernde Märkte.

  6. Backtest über mehr Symbole und Zeitrahmen.

Schlussfolgerung

Diese Strategie handelt mit Preistrieben mit hoher Wahrscheinlichkeit des Ausbruchspotenzials, mit Vor- und Nachteilen.


/*backtest
start: 2023-08-20 00:00:00
end: 2023-09-19 00:00:00
period: 1h
basePeriod: 15m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=4
//made for 30m chart with BTCUSD or other cryptocurrency
strategy("LUBE",overlay=false )
friction=0.0
barsback=input(500,"bars back to measure friction",step=100)
flevel=input(50,"0-100 friction level to stop trade",step=2)
tlevel=input(-10,"pic lower than 0 to number selected above to initiate trade",step=2)
fl=flevel/100
tl=tlevel/100

for i = 1 to barsback
    friction := if high[i] >= close and low[i] <= close 
        friction+(1+barsback)/(i+barsback)
    else
        friction

range=input(100,"bars back to measure lowest friction",step=10)
lowf = lowest(friction,range)
highf = highest(friction,range)
midf = (lowf*(1-fl)+highf*fl)
lowf2 = (lowf*(1-tl)+highf*tl)
plot(friction)
m=plot(midf[5],color=color.red)
l=plot(lowf2[5],color=color.white)
h=plot(highf[5],color=color.white)
fill(l,h,color.white)

src = input(title="Source", type=input.source, defval=close)

//FIR Filter
_fir(src) =>
    (4 * src + 3 * nz(src[1]) + 2 * nz(src[2]) + nz(src[3])) / 10

fir = _fir(src)

trend =  fir > fir[1]? 1:-1

//bgcolor(trend==1?color.lime:color.red,transp=50)

long=friction<lowf2[5] and trend == 1
short=friction<lowf2[5] and trend == -1
end=friction > midf[5]

keeplong=0
keeplong:=long?1:nz(keeplong[1])
keeplong:=short or end?0:keeplong

keepshort=0
keepshort:=short?1:nz(keepshort[1])
keepshort:=long or end?0:keepshort

bgcolor(keeplong==1?color.lime:keepshort==1?color.red:na,transp=50)

leverage=input(2,"leverage",step=.5)
enableshort=input(true,"enable shorts?")

barcount=0
barcount:=nz(barcount[1])+1

contracts=min(max(.000001,(strategy.equity/close)*leverage),50000)
strategy.entry("Long",strategy.long,when=long and barcount>20, qty=contracts)

strategy.close("Long",when=short or end )

strategy.entry("Short",strategy.short,when=short and enableshort==true and barcount>20, qty=contracts)

strategy.close("Short",when=(long or end) and enableshort==true)

alertcondition(keeplong==1 and keeplong[1]==0,"LONG")
alertcondition(keepshort==1 and keepshort[1]==0,"SHORT")
alertcondition((keeplong[1]==1 or keepshort[1]==1) and (keeplong==0 and keepshort==0),"CLOSE TRADE")


Mehr