Random-Walk-Strategie


Erstellungsdatum: 2023-10-09 16:10:24 zuletzt geändert: 2023-10-09 16:10:24
Kopie: 0 Klicks: 707
1
konzentrieren Sie sich auf
1617
Anhänger

Überblick

Eine Zufallswanderstrategie ist eine automatische Handelsstrategie, die auf der Generierung von Zufallszahlen basiert. Die Strategie verwendet einen linearen Residuumgenerator, um Zahlen zu erzeugen, die nach den Einstellungen von Seed-Zufallszahlen sind, die größer sind als die Übernahme bei der Depreciation und kleiner als die Depreciation bei der Depreciation, um zufällig in die Position zu gelangen.

Strategieprinzip

Die Strategie umfasst hauptsächlich die folgenden Elemente:

  1. Setzen Sie die Parameter a, c und mod m, die eine Zufallszahl erzeugen, sowie den anfänglichen Seed.

  2. Definition der Funktion GetRandom zur Generierung von Zufallszahlen, die eine Zufallszahl zwischen 0 und m mit Hilfe eines linearen Isomorphismus-Algorithmus erzeugt.

  3. Bei jeder K-Leitung wird eine zufällige Zahl erzeugt, die größer als m/2 ist, wenn keine Position vorhanden ist.

  4. Setzen Sie die Stop-Loss-Beschränkung und setzen Sie die Stop-Loss- und Stop-Beschränkung in Prozent.

  5. Setzen Sie die Rückmessphase über die Zeiträume.

Durch die oben genannten Schritte ermöglicht die Strategie die vollständig zufällige Mehrfach-Kleinerstellung. Wenn die zufällige Anzahl größer als m / 2 ist, werden mehrere Aufträge eröffnet, ansonsten werden leere Aufträge eröffnet, und dann wird die Stop-Loss-Stopp-Halterung eingestellt, um die Position zu verlassen. Der Rückmesszyklus kann benutzerdefiniert eingestellt werden.

Analyse der Stärken

  • Die Strategie ist einfach, klar und verständlich.

  • Zufälliges Handeln verhindert eine emotionale Beeinflussung und reduziert subjektive Fehlverhalten.

  • Anpassbare Parameter des Algorithmus zur Generierung von Zufallszahlen, um die Zufälligkeit anzupassen.

  • Flexible Einstellung der Stop-Loss-Stop-Bedingungen und Kontrolle der Einzelschäden.

  • Unterstützt die Optimierung der Rückmessparameter, um die Auswirkungen verschiedener Parameter auf die Gesamtergebnisse zu testen.

Risikoanalyse

  • Die Zufallshandlungen können langfristig unklar sein, und die Erträge sind unsicher.

  • Wenn Sie nicht in der Lage sind, Ihre Positionen an die Marktlage anzupassen, können Sie eine Trendchance verpassen.

  • Die Einzelleistungen sind begrenzt, die Rücktrittsrisiken sind hoch.

  • Es ist notwendig, eine angemessene Stop-Loss-Ratio einzurichten, um übermäßige Verluste zu vermeiden.

  • Die Zufälligkeit kann dazu führen, dass häufiger Positionen aufgelöst werden, was zu erhöhten Transaktionskosten führt.

  • Die Validierungsparameter müssen vollständig zurückgetestet werden, um eine vernünftige Einstellung zu ermöglichen.

Das Risiko kann verringert werden, indem Funktionen wie Trendbeurteilung hinzugefügt werden, um die Anzahl der zufälligen Positionen zu verringern, die Stop-Loss-Mechanismen zu optimieren und die Einzelschäden streng zu kontrollieren.

Optimierungsrichtung

  • Es ist wichtig, dass man die Trends beurteilt, um eine negative Positionierung zu vermeiden.

  • Positionsverwaltung, bei der die Größe der Positionen an die Veränderung des Kapitals angepasst wird.

  • Optimierung der Algorithmen für die Generierung von Zufälligkeitszahlen und Verbesserung der Zufälligkeit.

  • Dynamische Anpassung der Stop-Loss-Wertung.

  • Die Frequenzbeschränkung für die Eröffnung von Positionen wurde eingeführt.

  • Mehrparameter-Kombinationsrückprüfungen zur Suche nach optimalen Parametern.

Zusammenfassen

Die Strategie ist sehr zufällig, wird nicht von persönlichen Emotionen beeinflusst und vermeidet die Gefahr subjektiver Fehlverhaltens. Die Strategie kann jedoch auch Trendchancen verpassen, die Einzelleistung ist begrenzt und die Risikokontrolle muss optimiert werden. Insgesamt ist die Strategie geeignet, um die Handelsidee zu überprüfen und die Auswirkungen der Parameter-Einstellungen auf die Erträge zu verstehen, aber die tatsächliche Anwendung muss sorgfältig bewertet werden.

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

//@version=3
//@author=Tr0sT
strategy(title = "Random strategy", shorttitle = "Random", overlay = true, default_qty_type = strategy.percent_of_equity, default_qty_value = 100)

a = 16
c = 10
m = 1000
GetRandom(prev) =>
    GetRandom = (a * prev + c) % m

seed = input(200, minval = 2, maxval = m)
stopLoss = input(30, title = "Stop loss percentage(0.1%)")
takeProfit = input(30, title = "Take profit percentage(0.1%)")


curRandom = na
curRandom := nz(curRandom[1]) == 0 ? seed : GetRandom(curRandom[1])
if (strategy.position_size == 0)
    if (curRandom >= m / 2)
        strategy.entry("Enter", strategy.long)
    else
        strategy.entry("Enter", strategy.short)
        
    strategy.exit("Exit", "Enter", loss = close * stopLoss / 1000 / syminfo.mintick, profit = close * takeProfit / 1000 / syminfo.mintick)            

// === Backtesting Dates ===
testPeriodSwitch = input(false, "Custom Backtesting Dates")
testStartYear = input(2018, "Backtest Start Year")
testStartMonth = input(3, "Backtest Start Month")
testStartDay = input(6, "Backtest Start Day")
testStartHour = input(08, "Backtest Start Hour")
testPeriodStart = timestamp(testStartYear,testStartMonth,testStartDay,testStartHour,0)
testStopYear = input(2018, "Backtest Stop Year")
testStopMonth = input(12, "Backtest Stop Month")
testStopDay = input(14, "Backtest Stop Day")
testStopHour = input(14, "Backtest Stop Hour")
testPeriodStop = timestamp(testStopYear,testStopMonth,testStopDay,testStopHour,0)
testPeriod() =>
    time >= testPeriodStart and time <= testPeriodStop ? true : false
isPeriod = testPeriodSwitch == true ? testPeriod() : true
// === /END
if not isPeriod
    strategy.cancel_all()
    strategy.close_all()