Kontinuierliche positive Linie – kurzfristige Umkehrstrategie


Erstellungsdatum: 2023-10-08 13:56:39 zuletzt geändert: 2023-10-08 13:56:39
Kopie: 1 Klicks: 767
1
konzentrieren Sie sich auf
1617
Anhänger

Überblick

Diese Strategie basiert auf einer klassischen Kurzzeit-Trading-Strategie, bei der nach der Bildung einer Reihe von Sonnenlinien die Negativ- und die Negativ-Linien ausgelöscht werden; nach der Bildung einer Reihe von Sonnenlinien werden die Negativ- und die Negativ-Linien ausgelöscht. Insbesondere wird die Strategie durch die Entdeckung der Körperhöhe und Farbe der K-Linien ermittelt, um zu beurteilen, ob mehrere K-Linien der gleichen Farbe in Folge auftreten, und dann durch die RVI-Indikatoren, um zu beurteilen, ob eine Umkehr eingetreten ist.

Strategieprinzip

Die Kernlogik der Strategie besteht hauptsächlich aus folgenden Punkten:

  1. Die K-Linien-Einheit wird über die Mindesthöhen-Thresholds erfasst, um zu kleine Yang- und Yangschwankungen zu filtern.

  2. Beurteilen Sie, ob die ersten beiden K-Linien die gleiche Farbe haben, und wenn ja, kann dies zu einer kurzfristigen Preisumkehr führen.

  3. Nach der Feststellung, dass die ersten beiden K-Linien gleichfarbig sind, wird ein Handelssignal erzeugt, wenn die aktuelle K-Line von der Farbe der beiden vorherigen K-Linien abweicht. Das heißt, nach zwei aufeinanderfolgenden Negativlinien erscheint eine Sonnenlinie.

  4. Nach dem Eintritt in den Handel wird die Richtung der Position anhand der Multiplexung des RVI-Indikators beurteilt. Der RVI-Indikator kann den kurzfristigen Wendepunkt bestimmen.

  5. Insgesamt betrachtet die Strategie die K-Line-Charakteristik und die RVI-Indikatoren als ein kurzfristiges Umkehrsystem.

Analyse der Stärken

Diese Strategie hat folgende Vorteile:

  1. Kurzfristige Preisanomalien zu erfassen. Wenn eine Reihe von positiven oder negativen Zahlen auftritt, zeigt dies, dass eine kurzfristige Preisanomalie aufgetreten ist, und es ist zu erwarten, dass die Umkehrung eine bessere Rendite bringt.

  2. RVI-Indikatoren unterstützen die Beurteilung. RVI-Indikatoren können die kurzfristigen Wendepunkte effektiv beurteilen, sich mit den K-Linie-Charakteristiken ergänzen und die Stabilität des Systems verbessern.

  3. Eine hohe Frequenz des Handelns, geeignet für den Betrieb der kurzen Linie. Es ist häufig, dass die K-Linie in der gleichen Farbe ist, und in Verbindung mit dem RVI-Indikator kann diese Strategie mehr Handelsmöglichkeiten bieten.

  4. Risikokontrolle. Einsatz einer festen Handzahlung und Einrichtung einer Stop-Loss-Sperre.

  5. Die Logik ist klar und einfach. Es ist leicht zu verstehen und zu implementieren und die Festplatte ist nicht sehr schwierig zu bedienen.

Risikoanalyse

Die Strategie birgt auch einige Risiken, die beachtet werden müssen:

  1. Kurzfristige Umkehrungen sind nicht zwingend gültig. Bei anhaltenden Trends kann es sein, dass die Kurzfristige Umkehrung fehlschlägt und zu einem falschen Einstieg führt.

  2. RVI-Indikatoren können Fehlsignale auslösen. RVI-Indikatoren können auch aufgrund von besonderen Umständen ausfallen.

  3. Ein falscher Stop-Loss-Ansatz kann den Verlust vergrößern. Es ist notwendig, einen vernünftigen Stop-Loss-Ansatz einzurichten.

  4. Der Standard für gleichfarbige K-Linien in Folge ist zu starr. Eine Optimierung auf die Anzahl von X% gleichfarbiger K-Linien innerhalb von N-Wurzeln kann in Betracht gezogen werden.

  5. Es ist wichtig, auf die Größe der Hand zu achten. Eine feste Hand kann die Gesamtrisiko-Grenze nicht kontrollieren, und ein großer Händler kann seine Position sprengen.

Optimierungsrichtung

Die Strategie kann in folgenden Bereichen weiter optimiert werden:

  1. Optimierung der Logik der gleichfarbigen Bestimmung von K-Linien, mit statistischen Methoden anstelle von festplatzierten Stammwurzeln.

  2. Optimierung der RVI-Parameter und Suche nach der optimalen Parameterkombination.

  3. Die mobile Stop-Loss-Strategie wird in Abhängigkeit von Marktschwankungen erweitert.

  4. Das Modul zur Positionsverwaltung wurde hinzugefügt, um die Anzahl der Transaktionen dynamisch an die Kapitalnutzung anzupassen.

  5. Mehr Filterbedingungen, um die Systemstabilität zu verbessern, mit einer Kombination aus Indikatoren wie Kanäle, Trends etc.

  6. Parameteroptimierung für verschiedene Sorten zur Verbesserung der Anpassungsfähigkeit.

  7. Einführung von maschinellem Lernen zum Trainieren historischer Daten und dynamische Optimierung von Systemparametern.

Zusammenfassen

Die Strategie insgesamt ist eine typische kurzfristige Reversal-Trading-Strategie, die auf kurzfristigen K-Linie-Ausnahmen mit RVI-Indikatoren basiert. Sie hat einige Vorteile, aber auch mögliche Risiken. Durch die ständige Optimierung der Parameter und die Einrichtung eines strengeren Systems kann die Stabilität und Profitabilität der Strategie weiter verbessert werden.

Strategiequellcode
/*backtest
start: 2022-10-07 00:00:00
end: 2023-10-07 00:00:00
period: 3d
basePeriod: 1d
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=4
//This is part of a series of strategies developed automatically by a online software. I cannot share the site url, which is not related to me in any way, because it is against the TV reules.
//
//This strategy was optimized for GBPUSD, timeframe 1D, fixed lots 0.1, initial balance 1000€
//LOGIC:
//- LONG ENTRY when previous candle is bear
//- LONG EXIT: RVI > signal line
//- SHORT ENTRY when previous candle is bull
//- SHORT EXIT: RVI <  signal line
//
//NOTE: I considered the open of actual candle instead of close otherwise there will be a back shift of 1 candle in pine script
//
//Take profit = no
//Stop loss = no

// strategy("Expert studio strategy 1 - GBPUSD", overlay=false, precision=6, initial_capital=1000,calc_on_every_tick=true, pyramiding=0, default_qty_type=strategy.fixed, default_qty_value=10000, currency=currency.EUR)

//INPUTS
src = input(close, "source")
min_body_height = input(42, "Minimum body height", type=input.float)
//bars_back=input(2, "Consecutive bars of same color")
rvi_period = input(55, "RVI period")

//CALCULATIONS_____________________________
//candle color
body_height = abs(open - close) / syminfo.mintick
body_color = open > close ? color.red : color.green

//da migliorare for i=0 to bars_back-1

//RVI -------- thanks to hecate
p = rvi_period

CO = close - open
HL = high - low

value1 = (CO + 2 * CO[1] + 2 * CO[2] + CO[3]) / 6
value2 = (HL + 2 * HL[1] + 2 * HL[2] + HL[3]) / 6

num = sum(value1, p)
denom = sum(value2, p)

RVI = denom != 0 ? num / denom : 0

RVIsig = (RVI + 2 * RVI[1] + 2 * RVI[2] + RVI[3]) / 6

plot(RVI, color=color.green, style=plot.style_line, linewidth=1)
plot(RVIsig, color=color.red, style=plot.style_line, linewidth=1)

//----------------------------------

longCondition = body_height[1] >= min_body_height and body_color[1] == color.red and 
   body_height[0] >= min_body_height and body_color[0] == color.red and 
   RVIsig > RVI
exitLong = RVI > RVIsig

shortCondition = body_height[1] >= min_body_height and body_color[1] == color.green and 
   body_height[0] >= min_body_height and body_color[0] == color.green and 
   RVIsig < RVI
exitShort = RVI < RVIsig

if longCondition and strategy.opentrades == 0
    strategy.entry("Long", strategy.long)

strategy.close("Long", when=exitLong)

if shortCondition and strategy.opentrades == 0
    strategy.entry("Short", strategy.short)

strategy.close("Short", when=exitShort)

// === Backtesting Dates === thanks to Trost

testPeriodSwitch = input(false, "Custom Backtesting Dates")
testStartYear = input(2011, "Backtest Start Year")
testStartMonth = input(10, "Backtest Start Month")
testStartDay = input(7, "Backtest Start Day")
testStartHour = input(0, "Backtest Start Hour")
testPeriodStart = timestamp(testStartYear, testStartMonth, testStartDay, testStartHour, 0)
testStopYear = input(2018, "Backtest Stop Year")
testStopMonth = input(12, "Backtest Stop Month")
testStopDay = input(31, "Backtest Stop Day")
testStopHour = input(23, "Backtest Stop Hour")
testPeriodStop = timestamp(testStopYear, testStopMonth, testStopDay, testStopHour, 0)
testPeriod() =>
    time >= testPeriodStart and time <= testPeriodStop ? true : false
testPeriod_1 = testPeriod()
isPeriod = testPeriodSwitch == true ? testPeriod_1 : true
// === /END

if not isPeriod
    strategy.cancel_all()
    strategy.close_all()