Diese Strategie verwendet eine Kombination aus Doppel-Mittellinien, Zufallsindikatoren und MACD-Indikatoren, um Short-Line-Handelsmöglichkeiten zu identifizieren. Sie gehört zu den eher klassischen Short-Line-Handelsstrategien.
Die Strategie basiert auf folgenden Prinzipien:
Die EMA-Mittellinie mit 50 und 100 Perioden wird verwendet, um die Richtung der Tendenz zu bestimmen. Die EMA-Mittellinie ist kürzer und reagiert schnell auf Preisänderungen. Ein Durchschnittswert von 100 Perioden auf der 50-Perioden-Linie bedeutet, dass Sie mehr eingekauft haben. Ein Durchschnittswert von 100 Perioden unter der 50-Perioden-Linie bedeutet, dass Sie leer sind.
Der MACD-Indikator wird verwendet, um die Abweichung zu bestimmen. Wenn die Abweichung von 0 nach oben geht, wird die Mehrkopf-Kraft erhöht, und wenn die Abweichung von 0 nach unten geht, wird die Leerkopf-Kraft erhöht, und es wird frei gemacht.
In Kombination mit dem Stochastic RSI-Indikator kann überkauft und überverkauft werden. Dieser Indikator kombiniert die Vorteile des KDJ-Indikators und des RSI-Indikators, um die Überkaufe und Überverkäufe des Marktes zu zeigen. Wenn der Indikator unter 20 liegt, ist er überverkauft, kombiniert mit anderen Indikatoren; wenn der Indikator über 80 liegt, ist er überkauft, kombiniert mit anderen Indikatoren.
Nach der Bestimmung der Positionöffnungsrichtung kann eine Position eröffnet werden, wenn 4 der letzten 5 K-Linien die Mittellinie berühren, was eine Unterstützung oder einen Druck in der Nähe der Mittellinie anzeigt.
Risikomanagement mit Stop-Loss-Punkten
Diese Strategie hat folgende Vorteile:
Die Kombination von mehreren Indikatoren, die kombinierte Verwendung von Durchschnittslinien, Überkauf-Überverkauf-Indikatoren und Energie-Indikatoren erhöht die Gewinnrate.
Kurze Durchschnittszyklen, schnelle Trend-Erfassung und Umkehrung. Optimierung der MACD-Parameter, genaue Erkennung von Kauf- und Verkaufszeiten.
Die Stochastic RSI-Parameter wurden optimiert, um Überkauf und Überverkauf zu erkennen.
Das Tempo wird durch den Druck in der Nähe der Durchschnittlinie gesteuert, um zu vermeiden, dass man bei unwirksamen Durchbrüchen eingeklemmt wird.
Rationaler Stop-Loss und wirksame Kontrolle des Risikos eines einzelnen Handels.
Die Strategie birgt auch einige Risiken:
Es ist noch nicht möglich, den Verlust durch die Falsche-Bruche vollständig zu vermeiden.
Es kann zu Abweichungen kommen, die zu unübereinstimmenden Handelssignalen führen.
Der feste Stop-Loss-Punkt kann sich nicht an Veränderungen am Markt anpassen.
Die Implementierung des Codes ist kompliziert, mit vielen Parametern, und nicht leicht zu optimieren.
Die Risikolösungen sind wie folgt:
Optimierung der Parameter, Verbesserung der Signalqualität und Verringerung der Wahrscheinlichkeit einer falschen Durchbruch.
Es ist wichtig, die Prioritäten zwischen den Indikatoren festzulegen, um Signalkonflikte zu vermeiden.
Stopp-Stop-Loss-Dynamik wird über ATR und anderen Kennzahlen erfasst.
Vereinfacht die Code-Logik und extrahiert Kernparameter für Tests und Optimierungen.
Die Strategie kann in folgenden Richtungen optimiert werden:
Tests mit der Durchschnittslinie und den MACD-Parametern werden durchgeführt, um die optimale Kombination von Parametern zu finden.
Verschiedene Überkauf-Überverkauf-Indikatoren als Alternative zum stochastischen RSI testen.
Versuchen Sie mit dynamischen Stop-Loss- und Mobile-Stop-Methoden, um die Verlustverwaltung intelligenter zu gestalten.
Das Hinzufügen von Filterbedingungen, wie z. B. Anstieg des Handelsvolumens, verbessert die Signalqualität.
Optimierung der Positionsöffnungslogik und Verhinderung von unwirksamen Durchbrüchen.
Setzen Sie eine Stop-Loss-Begrenzung für die Größe des Kontos, die Anzahl der täglichen Transaktionen usw., um das Gesamtrisiko zu kontrollieren.
Diese Strategie integriert die Vorteile verschiedener Indikatoren und ist für den Short-Line-Handel von großer praktischer Bedeutung. Durch die weitere Optimierung der Parameter, die strenge Positionslogik und die Verbesserung der Strategie zur Verlust- und Verlustverwaltung können die Stabilität und die Ertragsfähigkeit der Strategie weiter verbessert werden. Die Strategie ist für Short-Line-Händler mit einer gewissen Basis geeignet, muss jedoch auf Risikokontrolle achten, um größere Verluste zu vermeiden.
/*backtest
start: 2023-01-01 00:00:00
end: 2023-10-08 00:00:00
period: 1h
basePeriod: 15m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/
//@version=4
strategy(title="Forex scalper 2xEMA + SRSI + MACD", shorttitle="Forex scalper 5-15min", overlay=true)
src = input(title="Source", type=input.source, defval=close)
src_0 = src[0]
src_1 = src[1]
src_2 = src[2]
src_3 = src[3]
src_4 = src[4]
len50 = input(50, minval=1, title="Length")
src50 = input(close, title="Source")
out50 = ema(src50, len50)
len100 = input(100)
src100 = input(close, title="Source")
out100 = ema(src100, len100)
len1 = input(1, minval=1, title="Length")
src1 = input(close, title="Source")
out1 = sma(src1, len1)
length = input(4, minval=1)
OverBought = input(80)
OverSold = input(20)
smoothK = 3
smoothD = 3
k = sma(stoch(close, high, low, length), smoothK)
d = sma(k, smoothD)
cu = crossover(k,OverSold)
co = crossunder(k,OverBought)
sma_down = crossunder(out1, out50)
sma_up = crossover(out1,out50)
//if (not na(k) and not na(d))
// if (co and k < OverSold)
// strategy.entry("StochLE", strategy.long, comment="StochLE")
//if (cu and k > OverBought)
// strategy.entry("StochSE", strategy.short, comment="StochSE")
crossCandle_4 = crossover(src[4],out50)
crossCandleUnder_4= cross(src[4],out50)
crossCandle_3 = crossover(src[3],out50)
crossCandleUnder_3= crossunder(src[3],out50)
crossCandle_2 = crossover(src[2],out50)
crossCandleUnder_2= crossunder(src[2],out50)
crossCandle_1 = crossover(src[1],out50)
crossCandleUnder_1= crossunder(src[1],out50)
crossCandle_0 = crossover(src[0],out50)
crossCandleUnder_0= crossunder(src[0],out50)
conditionOver = (crossCandle_4 or crossCandle_3 or crossCandle_2 or crossCandle_1 or crossCandle_0)
conditionUnder =(crossCandleUnder_4 or crossCandleUnder_3 or crossCandleUnder_2 or crossCandleUnder_1 or crossCandleUnder_0)
touch4 = (cross(low[4],out50) or cross(high[4],out50))
touch3 = (cross(low[3],out50) or cross(high[3],out50))
touch2 = (cross(low[2],out50) or cross(high[2],out50))
touch1 = (cross(low[1],out50) or cross(high[1],out50))
touch = touch1 or touch2 or touch3 or touch4
//and sma_up
//and sma_down
// Getting inputs
fast_length = input(title="Fast Length", type=input.integer, defval=12)
slow_length = input(title="Slow Length", type=input.integer, defval=26)
src_macd = input(title="Source", type=input.source, defval=close)
signal_length = input(title="Signal Smoothing", type=input.integer, minval = 1, maxval = 50, defval = 10)
sma_source = input(title="Simple MA(Oscillator)", type=input.bool, defval=false)
sma_signal = input(title="Simple MA(Signal Line)", type=input.bool, defval=false)
// Plot colors
col_grow_above = #26A69A
col_grow_below = #FFCDD2
col_fall_above = #B2DFDB
col_fall_below = #EF5350
col_macd = #0094ff
col_signal = #ff6a00
// Calculating
fast_ma = sma_source ? sma(src_macd, fast_length) : ema(src_macd, fast_length)
slow_ma = sma_source ? sma(src_macd, slow_length) : ema(src_macd, slow_length)
macd = fast_ma - slow_ma
signal = sma_signal ? sma(macd, signal_length) : ema(macd, signal_length)
hist = macd - signal
//plot(hist, title="Histogram", style=plot.style_columns, color=(hist>=0 ? (hist[1] < hist ? col_grow_above : col_fall_above) : (hist[1] < hist ? col_grow_below : col_fall_below) ), transp=0 )
//plot(macd, title="MACD", color=col_macd, transp=0)
//plot(signal, title="Signal", color=col_signal, transp=0)
// plot((conditionOver or conditionUnder or touch) and src[0] >= out50 and close >= out50 and (cu) and out50 > out100 and hist>=0 , title="Buy", style=columns, color=lime)
// plot((conditionOver or conditionUnder or touch) and src[0] <= out50 and close <= out50 and (co) and out50< out100 and hist<=0 , title="sell", style=columns, color=red)
long_cond = ((conditionOver or conditionUnder or touch) and src[0] >= out50 and close > out50 and (cu) and out50 > out100 and hist>=0)
short_cond = ((conditionOver or conditionUnder or touch) and src[0] <= out50 and close < out50 and (co) and out50< out100 and hist<=0)
tp=input(200)
sl=input(200)
strategy.entry("long",strategy.long, when=long_cond)
strategy.entry("short",strategy.short, when=short_cond)
strategy.exit("X_long", "long", profit=tp, loss=sl, when=touch )
strategy.exit("x_short", "short",profit=tp, loss=sl,when = touch )