Tägliche Handelsstrategien


Erstellungsdatum: 2023-09-26 20:49:44 zuletzt geändert: 2023-09-26 20:49:44
Kopie: 0 Klicks: 611
1
konzentrieren Sie sich auf
1617
Anhänger

Zusammenfassung

Dies ist eine benutzerdefinierte Multi-Blank-Head-Trading-Strategie für Bitcoin. Sie ermöglicht es Ihnen, je nach dem jeweiligen Handelstag der Woche zu überschreiten oder zu unterschreiten. Die Preise können sich an verschiedenen Handelstagen der Woche in die eine oder andere Richtung bewegen. Diese Strategie ermöglicht es Ihnen, verschiedene Handelstage innerhalb einer Reihe von Tagen zu testen, um dies zu nutzen.

Bitte stellen Sie sicher, dass Sie die Datenträger nutzen, wenn Sie die Performance und die Handelsgeschichte betrachten, um sicherzustellen, dass das Skript wie erwartet funktioniert und Sie so viele historische Daten wie möglich aus der Handelsansicht erhalten.

Strategieprinzip

Die Kernlogik der Strategie ist, dass der Benutzer die Möglichkeit hat, jeden Tag der Woche mehrere Geschäfte zu tätigen, leere Geschäfte zu tätigen oder keine Geschäfte zu tätigen.

Erstens ermöglicht es dem Benutzer, einen Datumsbereich für die Rückmessung einzurichten, einschließlich des Anfangsmonats, des Datums, des Jahres und des Endmonats, des Datums, des Jahres.

Anschließend speichert es eine Reihe von Zeitrahmen, die die Zahlen für jeden Tag der Woche darstellen, von 0 für Sonntag bis 6 für Samstag.

Ein weiteres Array von timeframes_options wird verwendet, um die Option zu speichern, ob man jeden Tag mehrere, leere oder keine Transaktionen durchführen soll. Dies wird durch eine Inputoption festgelegt.

Im For-Zyklus überprüft die Strategie, ob der aktuelle Handelstag mit einem bestimmten Tag in der Array von Timeframes übereinstimmt. Wenn dies der Fall ist und die Option sich von der des vorherigen Tages unterscheidet, werden zunächst alle ungeklärten Positionen geschlossen.

Wenn die Option nicht unverschlossen ist, wird die Position in der entsprechenden Richtung geöffnet, je nachdem, ob der Multihead oder der Leerkopf ausgewählt wurde.

Auf diese Weise kann die Strategie Multiple Head-Trading innerhalb eines festgelegten Datumsbereichs nach den Einstellungen für jeden Tag der Woche durchführen.

Analyse der Stärken

Der Hauptvorteil dieser Strategie ist die Bereitstellung von hochgradig anpassbaren Multi-Head-Trades. Benutzer können frei wählen, welche Richtung sie an jedem Tag der Woche handeln.

Im Gegensatz zu einer festen wöchentlichen Handelsstrategie kann diese Strategie flexibel angepasst werden. Wenn die Ergebnisse an bestimmten Tagen nicht optimal sind, kann diese Strategie leicht geändert werden, um nur an anderen Tagen zu handeln.

Der Datumsumfang der Rückmeldung ist sehr flexibel und kann in jedem vom Benutzer angegebenen Zeitraum getestet werden, um zu sehen, welche Datumskombinationen am besten funktionieren.

Die Transaktionslogik ist sehr klar und einfach zu verstehen und zu ändern. Der Benutzer kann die Parameter ohne Programmierung anpassen.

Die Strategie schließt außerdem automatisch offene Positionen bei täglichen Richtungsänderungen aus, um unnötige Risiken zu vermeiden.

Risikoanalyse

Das Hauptrisiko dieser Strategie besteht darin, dass die Optionen für den täglichen Handel, die der Benutzer eingestellt hat, nicht unbedingt für alle Datumsbereiche geeignet sind.

Zum Beispiel kann ein mehrtägiger Wochenendaufenthalt während einer bestimmten Zeit erfolgreich sein, während er in anderen Zeitabschnitten fehlschlagen kann.

Daher ist es notwendig, die verschiedenen Datumsbereiche sorgfältig zu testen und sich nicht auf ein einmaliges Rückmeldungsergebnis zu verlassen. Die Anpassung der Parameter muss an die spezifischen Marktbedingungen angepasst werden.

Ein weiteres Risiko besteht darin, dass man bei täglichen Richtungsänderungen nicht in der Lage ist, die Ausgleichsposition rechtzeitig zu beenden. Dies kann zu einer Vergrößerung der Verluste führen. Die Strategie versucht jedoch, dieses Problem durch automatische Ausgleichsposition zu mildern.

Insgesamt ist die Strategie eher auf Parameteroptimierung angewiesen und erfordert ausreichend Tests, um eine Kombination von Parametern zu finden, die für verschiedene Marktbedingungen geeignet ist.

Optimierungsrichtung

Diese Strategie kann optimiert werden durch folgende Aspekte:

  1. Erhöhen Sie die Stop-Loss-Logik bei den täglichen Richtungsänderungen, setzen Sie den Moving Stop-Loss und minimieren Sie den Rückzug, wenn die Position im Gewinn ist.

  2. Ein Filter wurde hinzugefügt, der nur dann signalisiert, wenn der Preis den Höchst- oder Tiefpunkt eines bestimmten Tages überschreitet, um einen wiederholten Handel ohne Trend zu vermeiden.

  3. Reduzieren Sie die Größe der Position bei hoher Volatilität und erhöhen Sie die Position bei niedriger Volatilität, um das Risiko zu kontrollieren.

  4. Die Option auf einen Handelstag wird mit Hilfe von maschinellem Lernen analysiert, um die Wahrscheinlichkeit eines täglichen Handels anhand historischer Daten zu bestimmen und eine dynamische Tagesrichtung zu erzeugen.

  5. Erhöhung der Logik für die Bearbeitung von Ereignissen, wie zum Beispiel die Aussetzung des Handels bei einem großen finanziellen Ereignis, um zu verhindern, dass es eingeschlagen wird.

Zusammenfassen

Die Strategie bietet eine hohe Flexibilität bei der Auswahl der Tagesrichtung. Die Benutzer können frei kombinierte Tests durchführen, um die optimalen Parameter zu finden. Die Strategie hat jedoch hohe Optimierungsanforderungen und erfordert eine große Anzahl von Tests, um die richtigen Einstellungen für verschiedene Märkte zu finden. Die Hinzufügung von Optimierungsmethoden wie Stop Loss, Filter und dynamische Anpassung kann das Risiko senken und die Stabilität verbessern.

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

// This source code is subject to the terms of the Mozilla Public License 2.0 at https://mozilla.org/MPL/2.0/

//@version=4
// strategy("Day of Week Custom Buy/Sell Strategy", overlay=true, currency=currency.USD, default_qty_value=1.0,initial_capital=30000.00,default_qty_type=strategy.percent_of_equity)

frommonth = input(defval = 6, minval = 01, maxval = 12, title = "From Month")
fromday = input(defval = 14, minval = 01, maxval = 31, title = "From day")
fromyear = input(defval = 2021, minval = 1900, maxval = 2100, title = "From Year")

tomonth = input(defval = 12, minval = 01, maxval = 12, title = "To Month")
today = input(defval = 31, minval = 01, maxval = 31, title = "To day")
toyear = input(defval = 2100, minval = 1900, maxval = 2100, title = "To Year")

timeframes = array.new_int(7, 1)
timeframes_options = array.new_string(7, 'None')

array.set(timeframes,0,7)
array.set(timeframes_options,0, input(defval='None', options=['Long','Short','None'], title='sunday'))
array.set(timeframes,1,1)
array.set(timeframes_options,1, input(defval='Long', options=['Long','Short','None'], title='monday'))
array.set(timeframes,2,2)
array.set(timeframes_options,2, input(defval='Long', options=['Long','Short','None'], title='tuesday'))
array.set(timeframes,3,3)
array.set(timeframes_options,3, input(defval='Long', options=['Long','Short','None'], title='wednesday'))
array.set(timeframes,4,4)
array.set(timeframes_options,4, input(defval='None', options=['Long','Short','None'], title='thursday'))
array.set(timeframes,5,5)
array.set(timeframes_options,5, input(defval='None', options=['Long','Short','None'], title='friday'))
array.set(timeframes,6,6)
array.set(timeframes_options,6, input(defval='None', options=['Long','Short','None'], title='saturday'))



for i = 0 to array.size(timeframes) - 1
    
    if dayofweek == array.get(timeframes, i) and array.get(timeframes_options, i) != array.get(timeframes_options, i==0?6:i-1)
        strategy.close_all()

    if dayofweek == array.get(timeframes, i) and array.get(timeframes_options, i)!='None' and array.get(timeframes_options, i) != array.get(timeframes_options, i==0?6:i-1)
        if array.get(timeframes_options, i) == 'Long'
            strategy.entry("Long", strategy.long, when=(time > timestamp(fromyear, frommonth, fromday, 00, 00) and time < timestamp(toyear, tomonth, today, 00, 00)))
        else if array.get(timeframes_options, i) == 'Short'
            strategy.entry("Short", strategy.short, when=(time > timestamp(fromyear, frommonth, fromday, 00, 00) and time < timestamp(toyear, tomonth, today, 00, 00)))