Cette stratégie consiste spécifiquement à négocier les fluctuations de prix du week-end en déterminant la direction longue/courte basée sur des bandes de pourcentage prédéfinies.
La logique de la stratégie:
Fixer des bandes de pourcentage basées sur la clôture du vendredi précédent, par exemple 4,5% de hausse/baisse.
Entrez à court si le prix dépasse la marge haussière, entrez à long si elle est inférieure à la marge baissière.
Ajouter des positions lorsque vous atteignez de nouvelles bandes dans la direction existante.
Prenez des bénéfices lorsque les gains cumulés atteignent un seuil, par exemple 10%.
Laissez au maximum deux positions simultanées, une dans chaque direction.
Les avantages:
Les bandes de pourcentage fixes permettent des échanges mécaniques.
Les entrées à plusieurs niveaux permettent d'obtenir une meilleure base de coûts.
La périodicité est stable, non affectée par les fondamentaux.
Les risques:
L'incapacité de limiter la taille de la perte d'une seule transaction risque de faire perdre de gros métiers.
Les paramètres fixes ne permettent pas d'adapter la volatilité changeante entre les périodes.
La périodicité peut changer avec le temps, invalidant le modèle.
En résumé, cette stratégie se négocie fréquemment le week-end, mais fait face à des défis de verrouillage dans les bénéfices de manière constante.
/*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()