Die Strategie erzeugt ein Kauf- und Verkaufssignal durch die Kreuzung des Jurik Moving Average (JMA) mit dem RSI. Es handelt sich um eine Kombination aus zwei Indikatoren, die versucht, falsche Signale zu filtern und zu handeln, wenn ein Trend deutlich ist.
Die Strategie basiert auf einer Kombination aus zwei Indikatoren:
JMA-Indikator: ein mit Kalium multipliziertes, glatter Moving Average mit geringerer Verzögerung, der die Preisänderungen schneller erfasst.
Der RSI ist ein allgemeiner Indikator, der die Kauf- und Verkaufsposition des Marktes widerspiegelt.
Wenn der RSI über dem JMA überschritten wird, wird ein Kaufsignal erzeugt, das darauf hindeutet, dass die kurzfristige Preiserhöhung stärker ist als die langfristige Tendenz. Wenn der RSI unter dem JMA überschritten wird, wird ein Kaufsignal angeboten.
Nach dem Kreuzungssignal wird der Handel in die entgegengesetzte Richtung aufgenommen. Die Position wird platziert, wenn der Preis die angegebene Zielquote überschreitet oder die Kennziffern wieder kreuzen.
Die JMA-Indikatorparameter sind anpassbar und können für verschiedene Zyklen optimiert werden.
Der RSI-Indikator kann falsche Durchbrüche filtern.
Die Verwendung einer Kombination aus zwei Indikatoren reduziert die Falschsignale.
Ein integrierter Stop-Loss-Mechanismus, der die Verluste begrenzen kann.
Anpassbare Gewinnquoten zur Erreichung des Gewinnziels.
Bei der Kombination von zwei Indikatoren kann die Frequenz der Signalerzeugung zu niedrig sein. Die Parameter können angepasst werden, um die Indikatoren empfindlicher zu machen.
Die JMA-Indikatoren sind nachlässig und können einen Preiswendepunkt verpassen. Sie können in Kombination mit anderen Leitindikatoren optimiert werden.
Die falsche Einstellung des Stop-Loss-Punktes kann durchbrochen werden, was zu einer Vergrößerung der Verluste führt. Der geeignete Stop-Loss-Punkt sollte anhand von Tests mit historischen Daten ermittelt werden.
Der Indikator allein kann falsche Signale erzeugen.
JMA-Parameter werden getestet, um die optimale Kombination zu finden.
Versuchen Sie, verschiedene RSI-Parameter einzustellen, um die Wirkung des Indikators zu optimieren.
Die Einführung eines mobilen Stop-Loss-Mechanismus, um die Stop-Loss-Anpassung zu erleichtern.
Optimierung der Logik der Lagerhaltung, z. B. durch die Aufnahme von Auflagerungs- und Batchbedingungen.
Untersuchen Sie andere Indikatoren wie KD, MACD usw.
Die Strategie basiert auf dem JMA und dem RSI, um eine Trendverfolgung zu ermöglichen. Die Stop-Loss-Strategie kann konfiguriert werden, um das Risiko zu begrenzen. Es besteht jedoch eine gewisse Wahrscheinlichkeit für Falschsignale. Die Optimierung der Indikatorparameter und der Filterbedingungen muss fortgesetzt werden, um Fehlhandlungen zu reduzieren.
/*backtest
start: 2023-01-01 00:00:00
end: 2023-03-15 00:00:00
period: 1d
basePeriod: 1h
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/
//@version=4
// Stratégie marche le mieux sur du 2 jours
strategy("JMA(7,50,RSI) crossing RSI(14,close)", overlay=false, currency=currency.EUR, default_qty_type=strategy.cash, default_qty_value=5000)
// Strategy Tester Start Time
sYear = input(2019, title = "Start Year")
sMonth = input(06, title = "Start Month", minval = 01, maxval = 12)
sDay = input(01, title = "Start Day", minval = 01, maxval = 31)
sHour = input(00, title = "Start Hour", minval = 00, maxval = 23)
sMinute = input(00, title = "Start Minute", minval = 00, maxval = 59)
startTime = true
// Strategy Tester End Time
eYear = input(2019, title = "End Year")
eMonth = input(12, title = "End Month", minval = 01, maxval = 12)
eDay = input(01, title = "End Day", minval = 01, maxval = 31)
eHour = input(00, title = "End Hour", minval = 00, maxval = 23)
eMinute = input(00, title = "End Minute", minval = 00, maxval = 59)
endTime = true
// === RSI ===
src = close, len = input(14, minval=1, title="Length")
up = rma(max(change(src), 0), len)
down = rma(-min(change(src), 0), len)
rsi = down == 0 ? 100 : up == 0 ? 0 : 100 - (100 / (1 + up / down))
plot(rsi, color=color.purple)
band1 = hline(70)
band0 = hline(30)
// === JMA ===
_length = input(7, title="Length")
_phase = input(50, title="Phase")
_power = input(2, title="Power")
highlightMovements = input(true, title="Highlight Movements ?")
// srcJMA = input(rsi, title="Source")
srcJMA = rsi
phaseRatio = _phase < -100 ? 0.5 : _phase > 100 ? 2.5 : _phase / 100 + 1.5
beta = 0.45 * (_length - 1) / (0.45 * (_length - 1) + 2)
alpha = pow(beta, _power)
jma = 0.0
e0 = 0.0
e0 := (1 - alpha) * srcJMA + alpha * nz(e0[1])
e1 = 0.0
e1 := (srcJMA - e0) * (1 - beta) + beta * nz(e1[1])
e2 = 0.0
e2 := (e0 + phaseRatio * e1 - nz(jma[1])) * pow(1 - alpha, 2) + pow(alpha, 2) * nz(e2[1])
jma := e2 + nz(jma[1])
// === End of JMA def ===
jmaColor = highlightMovements ? (jma > jma[1] ? color.green : color.red) : #6d1e7f
plot(jma, title="JMA switch", linewidth=2, color=jmaColor, transp=0)
// === Inputs ===
// risk management
useStop = input(true, title = "Use Initial Stop Loss?")
goLong() => crossover(rsi, jma)
killLong() => crossunder(rsi, jma)
// ======= DEBUGGGGGGGG ============
long_price = 0.0
short_price = 0.0
if(startTime and endTime)
if(goLong())
long_price := close
strategy.entry("Buy", strategy.long, when = goLong())
strategy.close("Buy", when = killLong() and close > long_price)
// Shorting if using
goShort() => killLong()
killShort() => goLong()
if(startTime and endTime)
if(goShort())
short_price := close
strategy.entry("Sell", strategy.short, when = goShort() and close < short_price)
strategy.close("Sell", when = killShort())
// =========================
if (useStop)
strategy.exit("XLS", from_entry ="Buy", stop = strategy.position_avg_price / 1.08)
strategy.exit("XSS", from_entry ="Sell", stop = strategy.position_avg_price * 1.08)