
Diese Strategie verwendet die Kombination von PSAR-Indikatoren, um Preistrends zu bestimmen, ADX-Indikatoren, um Trendstärken zu bestimmen, RSI-Indikatoren, um Überkauf-Überverkaufszonen zu bestimmen, und CMF-Indikatoren, um Kapitalströme zu bestimmen, um eine quantitative Handelsstrategie zu erstellen, die über einen Zyklus reicht. Die Strategie orientiert sich schnell an der Bestimmung der neuen Trendrichtung, wenn die Preise einen Ausgleichsbruch erfahren, und verfolgt die nachfolgende Tendenz kontinuierlich, während gleichzeitig die Prozessüberbrückungsbedingungen festgelegt werden, um das Positionsrisiko zu verringern, um die Erträge der Hauptrend zu gewährleisten.
Die wichtigsten Kriterien dieser Strategie sind:
Der PSAR-Indikator wird verwendet, um zu beurteilen, ob der Preis in einem Aufwärtstrend ist, wobei ein PSAR-Abbruch als ein Ende des Aufwärtstrends und eine Umkehrung in einen Absturz angesehen wird.
Der RSI-Indikator verlangt, dass der Wert über der Mittellinie 50 liegt, um falsche Durchbrüche zu filtern, die in Überverkaufszonen entstehen.
Der ADX verlangt eine höhere als die eigene EMA-Mittellinie, was ein anhaltendes Signal für die Ergebnisse der Trendanalyse bedeutet;
Die CMF-Anforderung ist größer als 0 und wird als Kapitalzufluss beurteilt.
Wenn die oben genannten vier Bedingungen erfüllt sind, wird ein Kaufsignal erzeugt. Wenn der RSI unter 50 liegt, die ADX unter der eigenen EMA-Mittellinie liegt und die CMF unter 0 liegt, wird ein Verkaufsignal erzeugt.
Die Strategie berücksichtigt die Richtung des Preistrends, die Trendstärke, den Überkauf-Überverkaufszustand und den Kapitalfluss in mehrere Dimensionen, um die Handelsregeln einzurichten. Sie setzt strenge logische Urteile bei der Entscheidung, ob ein Handelssignal erzeugt wird, um falsche Durchbrüche wirksam zu filtern und sicherzustellen, dass die Richtung eines Trends, der mit hoher Wahrscheinlichkeit nachhaltig ist, erfasst wird.
Diese Strategie hat folgende Vorteile:
In Kombination mit einer Vielzahl von Indicator-Set-Trading-Regeln kann eine effektive Verhinderung von False-Breaks und die Sicherstellung der Qualität von Handelssignalen gewährleistet werden.
Schnelle Orientierung und Nachverfolgung neuer Trends, um die Vorteile des Trendprozesses zu nutzen;
Einrichtung von Prozessen, die die Filterbedingungen verfolgen, um Risiken effektiv zu kontrollieren und die Verfolgung zu gewährleisten;
In Kombination mit einer Bewertung der Trendstärke können Sie eine Ausgleichssituation vermeiden.
Diese Strategie birgt folgende Risiken:
Eine einzelne Strategie kann zu einem hohen Risiko führen und erfordert eine angemessene Anpassung der Positionen, um das Gesamtrisiko zu kontrollieren.
Die Verfolgung der Änderungen der Filterbedingungen muss sorgfältig verfolgt werden, um einen Verlustschnitt zu vermeiden, wenn die Bedingungen aufgehoben werden.
Diese Strategie basiert auf der mittleren und langen Linie, wobei kurzfristige Inhalte von Schwankungen betroffen sind und ein Stop-Loss-Risiko darstellen.
Entsprechende Risikomanagement-Maßnahmen umfassen: Optimierung der Positionsmanagement-Regeln, Einstellung von Risikowarnlinien, angemessene Lockerung der Stop-Loss-Distanz usw.
Die Strategie bietet folgende Optimierungsmöglichkeiten:
Optimierung der Parameter-Einstellungen, die derzeit eher subjektiv sind und automatisch optimiert werden können, indem eine Machine-Learning-Methode eingeführt wird;
Ein zusätzliches Modul zur Positionsverwaltung, mit dem Positionen dynamisch an die Risikostellung angepasst werden können.
Optimierung von Stop-Loss-Mechanismen wie Tracking-Stop, Time-Stop und Break-Stop.
Die Strategie umfasst mehrere Richtlinien für die Beurteilung von Indikatoren, ermöglicht die schnelle Identifizierung und kontinuierliche Verfolgung neu auftretender Trends und bestätigt die Wirksamkeit von multidimensionalen Analysen wie der Kombination von Trends und Kapital in quantifizierten Transaktionen. Die Strategie kann als Basisstrategie für die Verfolgung von Trends über die Perioden hinweg als Index verwendet werden oder nach Optimierung von Parametern und Modulen zu einer stabilen mittelfristigen linearen Quantifizierungsstrategie aufgebaut werden.
/*backtest
start: 2023-11-14 00:00:00
end: 2023-12-14 00:00:00
period: 1d
basePeriod: 1h
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/
//@version=4
strategy("psar+ adx + cmf + rsi Strategy", overlay=true,initial_capital = 1000, default_qty_type=strategy.percent_of_equity, default_qty_value=100, commission_type=strategy.commission.percent , commission_value=0.1 )
start = input(1.02)
increment = input(1.02)
maximum = input(1.2)
var bool uptrend = na
var float EP = na
var float SAR = na
var float AF = start
var float nextBarSAR = na
if bar_index > 0
firstTrendBar = false
SAR := nextBarSAR
if bar_index == 1
float prevSAR = na
float prevEP = na
lowPrev = low[1]
highPrev = high[1]
closeCur = close
closePrev = close[1]
if closeCur > closePrev
uptrend := true
EP := high
prevSAR := lowPrev
prevEP := high
else
uptrend := false
EP := low
prevSAR := highPrev
prevEP := low
firstTrendBar := true
SAR := prevSAR + start * (prevEP - prevSAR)
if uptrend
if SAR > low
firstTrendBar := true
uptrend := false
SAR := max(EP, high)
EP := low
AF := start
else
if SAR < high
firstTrendBar := true
uptrend := true
SAR := min(EP, low)
EP := high
AF := start
if not firstTrendBar
if uptrend
if high > EP
EP := high
AF := min(AF + increment, maximum)
else
if low < EP
EP := low
AF := min(AF + increment, maximum)
if uptrend
SAR := min(SAR, low[1])
if bar_index > 1
SAR := min(SAR, low[2])
else
SAR := max(SAR, high[1])
if bar_index > 1
SAR := max(SAR, high[2])
nextBarSAR := SAR + AF * (EP - SAR)
//rsi strat
length = input( 50 )
middle_RSI=input(49)
price = close
vrsi = rsi(price, length)
//cmf
lengthCMF = input(20, minval=1)
ad = close==high and close==low or high==low ? 0 : ((2*close-low-high)/(high-low))*volume
mf = sum(ad, lengthCMF) / sum(volume, lengthCMF)
//ADX
adxlen = input(14, title="ADX Smoothing")
dilen = input(14, title="DI Length")
dirmov(len) =>
up = change(high)
down = -change(low)
plusDM = na(up) ? na : (up > down and up > 0 ? up : 0)
minusDM = na(down) ? na : (down > up and down > 0 ? down : 0)
truerange = rma(tr, len)
plus = fixnan(100 * rma(plusDM, len) / truerange)
minus = fixnan(100 * rma(minusDM, len) / truerange)
[plus, minus]
adx(dilen, adxlen) =>
[plus, minus] = dirmov(dilen)
sum = plus + minus
adx = 100 * rma(abs(plus - minus) / (sum == 0 ? 1 : sum), adxlen)
sig = adx(dilen, adxlen)
ema_length=input(10)
ema_sig= ema(sig,ema_length)
long = not uptrend and vrsi > middle_RSI and sig > ema_sig and mf>0
short= uptrend and vrsi < middle_RSI and sig<ema_sig and mf<0
strategy.entry("long",1,when=long)
strategy.close('long',when=short)