Trendfolgestrategie basierend auf Preisreibungszonen


Erstellungsdatum: 2023-09-20 16:46:17 zuletzt geändert: 2023-09-20 16:46:17
Kopie: 2 Klicks: 610
1
konzentrieren Sie sich auf
1617
Anhänger

Überblick

Diese Strategie erzeugt ein Trend-Tracking-Handelssignal in der Widerstandslosen Zone, indem sie die Zeit berechnet, die der Preis in verschiedenen Regionen verweilt, um zu bestimmen, ob der Preis in eine neue Widerstandslose Zone eintritt. Sie gehört zu den Strategien der Kategorie Trend-Tracking.

Strategieprinzip

  1. Der Prozentsatz, in dem die Preise in den letzten N-Zyklen in der Nähe des aktuellen Niveaus geblieben sind, wird als Preiswiderstand berechnet.

  2. Beurteilen Sie, ob der Preis in einen Bereich mit geringer Reibung, in dem er in der Vergangenheit weniger Zeit verbracht hat, ein Widerstandsloser Bereich ist, in dem ein Signal erzeugt wird.

  3. Die Verwendung einer schnellen gewichteten Moving Average zur Bestimmung der jüngsten Trendrichtung und zum Trendhandel bei einem Durchbruch der Widerstandslosigkeit.

  4. Der Vorurteil wird umgekehrt, wenn die Preise wieder in die Hochreibungszone zurückkehren.

  5. Die Parameter für den Handel sind individuell anpassbar, wie z. B. die Friktionszonen-Beschlussphase, die Zone des Durchbruchs usw.

Analyse der Stärken

  1. Der Preis-Freibung-Wert wird verwendet, um Widerstands-Zonen zu ermitteln und Schwingungs-Zonen zu vermeiden.

  2. Schnelle Durchschnittslinien verfolgen die jüngsten Trends, kombiniert mit den Richtungen der Beurteilung.

  3. Eine intuitive visuelle Oberfläche, die die Reibungszonen der Preise zeigt.

  4. Die Standardparameter wurden für den Hochfrequenzhandel mit Kryptowährungen optimiert.

  5. Die Regeln der Strategie sind einfach und klar, leicht zu verstehen und zu ändern.

Risikoanalyse

  1. Der Preiswiderstand ist keine vollständige Vorhersage der Preisentwicklung.

  2. Die schnelle Zeitmessung kann ungenau sein.

  3. Es ist unmöglich, den Markt effektiv zu betreten und zu verlassen.

  4. Es besteht die Gefahr, dass die Optimierung zu übertrieben ist.

  5. Bei starken Marktveränderungen können feste Parameter nicht wirken.

Optimierungsrichtung

  1. Tests mit verschiedenen Periodenparametern berechnen den Preiswiderstand.

  2. Beurteilung der verschiedenen Arten von Durchschnittskurven und der jüngsten Trends.

  3. Optimierung der Parameter für den Durchbruch der Widerstandslosen Zone und Steigerung der Strategie-Stabilität.

  4. Das Unternehmen hat eine neue Strategie entwickelt, um die Risiken des Handels zu verwalten.

  5. Erwägen Sie, dynamische Parameter zu verwenden, um sich an Marktveränderungen anzupassen.

  6. Nachprüfungen für weitere Sorten und Perioden.

Zusammenfassen

Die Strategie hat einige Vorteile, indem sie die Bereiche mit hoher Wahrscheinlichkeit für einen Ausbruch des Trends durch die Ermittlung der Preisreibung ausfindig macht. Es gibt jedoch auch festgelegte Parameterbeschränkungen. Die Strategie kann durch die Optimierung von dynamischen Parametern und die Erhöhung von Risikomanagementmechanismen stabiler und effizienter gestaltet werden.

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