Stratégie de week-end axée sur la fourchette


Date de création: 2023-09-13 11:53:09 Dernière modification: 2023-09-13 11:53:09
Copier: 1 Nombre de clics: 635
1
Suivre
1617
Abonnés

Cette stratégie est utilisée pour traiter les fluctuations des prix du week-end et pour déterminer la direction de la volatilité en utilisant une fourchette de hauts et bas prédéfinie.

Le principe de la stratégie:

  1. En utilisant la clôture du vendredi de la semaine précédente, définissez une fourchette de hausse et de baisse, par exemple une fourchette de hausse maximale de 4,5% pour la clôture.

  2. Faire un short lorsque le prix est au-dessus de la limite supérieure de la fourchette; faire un short lorsque le prix est au-dessous de la limite inférieure.

  3. Si vous avez déjà une position, continuez d’augmenter la position en fonction du dépassement d’une nouvelle couche, par exemple en la vidant ou en la complétant.

  4. Le placement est arrêté lorsque le bénéfice cumulé atteint un certain pourcentage, par exemple 10%.

  5. Les positions ne pouvant être détenues que dans les deux sens au maximum.

Les avantages de cette stratégie:

  1. La mécanisation de l’opération consiste à définir des intervalles fixes d’augmentation et de diminution.

  2. Les investisseurs peuvent augmenter leur position progressivement pour obtenir de meilleurs prix.

  3. La loi de la périodicité est stable et n’est pas affectée par les fondamentaux.

Le risque de cette stratégie:

  1. Il n’y a pas de limite à la taille des pertes individuelles et il existe un risque de pertes individuelles importantes.

  2. Les paramètres fixes ne peuvent pas s’adapter aux fluctuations du marché au cours des différentes périodes.

  3. La régularité périodique peut être modifiée, ce qui entraîne un risque de défaillance du modèle.

En résumé, la stratégie utilise la loi de la cyclicité pour effectuer des transactions fréquentes, mais il existe une certaine difficulté à verrouiller les bénéfices. Il faut être vigilant du risque de défaillance des paramètres et d’une perte individuelle excessive, et agir avec prudence.

Code source de la stratégie
/*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()