Die Strategie verwendet mehrere technische Indikatoren zur Identifizierung von Trendrichtungen und Überkauf-Überverkauf-Bereichen, um Handelssignale zu erzeugen.
Die wichtigsten Kennzahlen sind:
Durchschnittliche Richtungsindex ((ADX): Beurteilung der Trendstärke
Relativ schwacher RSI: Überkauf und Überverkauf
Schmalen Mittelwert (SMA): Beurteilung von kurzfristigen Trends
Der Extreme SAR-Indikator: Beurteilung von langfristigen Trends
Ein Durchbruch: Eintritt durch den Trend
Die spezifische Transaktionslogik:
Die ADX hält den Trend für vorhanden und stark genug.
SAR: Lang- und kurzfristige Trends in einheitlicher Richtung
Der RSI identifiziert überkaufte und überverkaufte Bereiche
Eintritt, wenn der Preis die SMA-Mittellinie durchbricht
Eintritt bei Preisbruch
Mehrere Indikatoren, die sich gegenseitig verifizieren, erhöhen die Genauigkeit der Beurteilung, verschiedene Strategien kombinieren sich zu einem systematischen Handelssystem.
Mehrindikator-Kombination zur Verbesserung der Signalqualität
Verschiedene Kombinationen von Strategien, systematische Aufnahme
Der ADX erkennt Trends, der RSI beurteilt Überkäufe
SAR-Trends, SMA und ein Durchbruch der Kanäle
Mehrparameter-Einstellungen, Optimierung durch Wiederholungstests
Kombinationsbedingungen mit geringer Häufigkeit
Schwierigkeiten bei Konfliktsignalisierung
Die Strategie nutzt die Vorzüge verschiedener Indikatoren, um ein stabiles Handelssystem zu schaffen. Die Parameter müssen jedoch optimiert werden, um sicherzustellen, dass die Handelsfrequenz angemessen ist.
/*backtest
start: 2023-09-12 00:00:00
end: 2023-09-13 00:00:00
period: 45m
basePeriod: 5m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/
//@version=5
// strategy("Combined Strategy", overlay=true, default_qty_value=100, initial_capital=1000, margin_long=0.1)
adxlen = input(7, title="ADX Smoothing")
dilen = input(7, title="DI Length")
dirmov(len) =>
up = ta.change(high)
down = -ta.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 = ta.rma(ta.tr, len)
plus = fixnan(100 * ta.rma(plusDM, len) / truerange)
minus = fixnan(100 * ta.rma(minusDM, len) / truerange)
[plus, minus]
adx(dilen, adxlen) =>
[plus, minus] = dirmov(dilen)
sum = plus + minus
adx = 100 * ta.rma(math.abs(plus - minus) / (sum == 0 ? 1 : sum), adxlen)
sig = adx(dilen, adxlen)
// The same on Pine Script™
pine_supertrend(factor, atrPeriod) =>
src = hl2
atr = ta.atr(atrPeriod)
upperBand = src + factor * atr
lowerBand = src - factor * atr
prevLowerBand = nz(lowerBand[1])
prevUpperBand = nz(upperBand[1])
lowerBand := lowerBand > prevLowerBand or close[1] < prevLowerBand ? lowerBand : prevLowerBand
upperBand := upperBand < prevUpperBand or close[1] > prevUpperBand ? upperBand : prevUpperBand
int direction = na
float superTrend = na
prevSuperTrend = superTrend[1]
if na(atr[1]) and ta.rsi(close, 21) < 66 and ta.rsi(close,3) > 80 and ta.rsi(close, 28) > 49 and sig > 20
direction := 1
else if prevSuperTrend == prevUpperBand
direction := close > upperBand ? -1 : 1
else
direction := close < lowerBand ? 1 : -1
superTrend := direction == -1 ? lowerBand : upperBand
[superTrend, direction]
[pineSupertrend, pineDirection] = pine_supertrend(3, 10)
upTrend = pineDirection < 0
downTrend = pineDirection > 0
// Define the 20-period SMA
sma20 = ta.sma(close, 20)
a = ta.rsi(close,14)
OB = input(70)
OS = input(30)
os = a > OB
ob = a < OS
if upTrend and close > pineSupertrend and close > sma20 and os
strategy.entry("Buy", strategy.long)
if ta.crossunder(close, sma20) or ob
strategy.close_all()
//define when to breakout of channel
//("ChannelBreakOutStrategy", overlay=true)
length = input.int(title="Length", minval=1, maxval=1000, defval=5)
upBound = ta.highest(high, length)
downBound = ta.lowest(low, length)
if (not na(close[length]))
strategy.entry("ChBrkLE", strategy.long, stop=upBound + syminfo.mintick, comment="ChBrkLE")
strategy.entry("ChBrkSE", strategy.short, stop=downBound - syminfo.mintick, comment="ChBrkSE")