Diese Strategie handelt speziell mit den Preisschwankungen am Wochenende, indem sie die lange/kurze Richtung auf der Grundlage von vorgegebenen Prozentsatzbanden bestimmt.
Strategie Logik:
Festlegen Sie Prozentsatzbereiche auf der Grundlage des letzten Freitagsschlusses, z. B. 4,5% nach oben/nieder.
Wenn der Kurs die Aufwärtsgrenze überschreitet, kurz, wenn er unterhalb der Abwärtsgrenze ist, lang.
Zusätzliche Positionen beim Erreichen neuer Bands in bestehender Richtung.
Gewinn erzielen, wenn die kumulierten Gewinne einen Schwellenwert erreichen, z. B. 10%.
Erlauben Sie maximal zwei gleichzeitige Positionen, eine in jede Richtung.
Vorteile:
Feste Prozentsatzbänder erlauben einen mechanischen Handel.
Mehrstufige Einträge ermöglichen eine bessere Kostenbasis.
Die Periodizität ist stabil, unbeeinflusst von den Grundlagen.
Risiken:
Da es nicht möglich ist, die Größe eines einzelnen Verlustes zu begrenzen, besteht das Risiko, dass große Verlustgeschäfte stattfinden.
Festparameter können sich nicht an die wechselnde Volatilität zwischen den Zeiträumen anpassen.
Die Periodizität kann sich im Laufe der Zeit ändern und das Modell ungültig machen.
In der Regel handelt diese Strategie am Wochenende, hat jedoch Probleme, um konsequent Gewinne zu erzielen.
/*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()