Wochenend-Range-bound-Strategie


Erstellungsdatum: 2023-09-13 11:53:09 zuletzt geändert: 2023-09-13 11:53:09
Kopie: 1 Klicks: 635
1
konzentrieren Sie sich auf
1617
Anhänger

Diese Strategie ist speziell für den Handel mit Preisschwankungen am Wochenende konzipiert, um durch vorgegebene Wende-Wende-Bereiche die Richtung von Polyfloor zu bestimmen. Sie gehört zu den typischen Shock-Trading-Strategien.

Die Strategie:

  1. Der Preis für den letzten Freitag wird auf die Preise für den letzten Freitag bezogen, um eine Bandbreite für den Anstieg und den Rückgang festzulegen. Die Bandbreite wird beispielsweise auf einen Anstieg um 4,5% für den letzten Freitag begrenzt.

  2. Wenn der Preis über der oberen Grenze der Bandbreite liegt, wird ein Leerlauf ausgeführt; wenn der Preis unter der unteren Grenze liegt, wird ein Mehrlauf ausgeführt.

  3. Wenn Sie bereits eine Position haben, setzen Sie die Position fort, indem Sie die neue Ebene überschreiten, z. B. indem Sie die Position leeren oder erhöhen.

  4. Wenn ein gewisser Prozentsatz der kumulierten Gewinne erreicht wird, wird die Position stillgelegt, z. B. 10% .

  5. Positionen, die jeweils maximal in zwei Richtungen gehalten werden.

Die Vorteile der Strategie:

  1. Es wird ein festgelegter Auf- und Abwärtstransfer festgelegt, um mechanische Operationen durchzuführen.

  2. Inzwischen sind die Investoren in der Lage, ihre Investitionen zu steigern.

  3. Die Periodische Gesetzgebung ist stabil und nicht von Fundamentalen beeinflusst.

Die Risiken dieser Strategie:

  1. Es gibt keine Einschränkung für die Höhe der Einzelschäden, es besteht die Gefahr von großen Einzelschäden.

  2. Festgelegte Parameter können nicht an die Marktschwankungen in verschiedenen Zeiträumen angepasst werden.

  3. Die Periodizität kann sich verändern, was die Gefahr eines Fehlschlags des Modells mit sich bringt.

Kurz gesagt, die Strategie nutzt die periodischen Regeln für den häufigen Handel, aber es gibt einige Probleme mit der Gewinnschließung. Sie müssen auf die Ausfallgefahr der Parameter und das Risiko eines übermäßigen Verlusts vorsichtig vorgehen.

Strategiequellcode
/*backtest
start: 2023-01-01 00:00:00
end: 2023-09-12 00:00:00
period: 2d
basePeriod: 1d
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=3
//Copyright Boris Kozak 
// strategy("XBT Weekend Trade Strategy", overlay=true, default_qty_type=strategy.percent_of_equity,)
strategy.initial_capital=50000
leverage = input(10,"Leverage")
profitTakingPercentThreshold = input(0.10,"Profit Taking Percent Threshold")

//****Code used for setting up backtesting.****///
testStartYear = input(2017, "Backtest Start Year")
testStartMonth = input(12, "Backtest Start Month")
testStartDay = input(10, "Backtest Start Day")
testPeriodStart = timestamp(testStartYear,testStartMonth,testStartDay,0,0)

testStopYear = input(2025, "Backtest Stop Year")
testStopMonth = input(12, "Backtest Stop Month")
testStopDay = input(30, "Backtest Stop Day")
testPeriodStop = timestamp(testStopYear,testStopMonth,testStopDay,0,0)

// A switch to control background coloring of the test period
testPeriodBackground = input(title="Color Background?", type=bool, defval=true)
testPeriodBackgroundColor = testPeriodBackground and (time >= testPeriodStart) and (time <= testPeriodStop) ? #00FFFF : na
bgcolor(testPeriodBackgroundColor, transp=50)

testPeriod() => true
    
//****END Code used for setting up backtesting.****///


//*** Main entry point is here***//
// Figure out how many days since the Friday close 
days_since_friday = if dayofweek == 6
    0
else 
    if dayofweek == 7
        1
    else
        if dayofweek == 1
            2
        else
            if dayofweek == 2
                3
            else
                if dayofweek == 3
                    4
                else
                    if dayofweek == 4
                        5
                    else
                        6
    
// Grab the Friday close price
fridaycloseprice = security(syminfo.ticker,'D',close[days_since_friday])
plot(fridaycloseprice)

// Only perform backtesting during the window specified 
if testPeriod()
    // If we've reached out profit threshold, exit all positions 
    if ((strategy.openprofit/strategy.initial_capital) > profitTakingPercentThreshold)
        strategy.close_all()
    // Only execute this trade on saturday and sunday (UTC)
    if (dayofweek == 7.0 or dayofweek == 1.0)
        // Begin - Empty position (no active trades)
        if (strategy.position_size == 0)
            // If current close price > threshold, go short 
            if ((close>fridaycloseprice*1.045))
                strategy.entry("Short Entry", strategy.short, leverage)
            else
                // If current close price < threshold, go long
                if (close<(fridaycloseprice*0.955))
                    strategy.entry("Long Entry",strategy.long, leverage)
        // Begin - we already have a position
        if (abs(strategy.position_size) > 0)
            // We are short 
            if (strategy.position_size < 0)
                if ((close>strategy.position_avg_price*1.045))
                    // Add to the position
                    strategy.entry("Adding to Short Entry", strategy.short, leverage)
            else
                if ((close<strategy.position_avg_price*0.955))
                    strategy.entry("Adding to Long Entry",strategy.long,leverage)
    // On Monday, if we have any open positions, close them 
    if (dayofweek==2.0)
        strategy.close_all()