Stratégie Silver Bullet basée sur Box Breakout


Date de création: 2024-01-15 12:06:32 Dernière modification: 2024-01-15 12:06:32
Copier: 1 Nombre de clics: 801
1
Suivre
1617
Abonnés

Stratégie Silver Bullet basée sur Box Breakout

Aperçu

La stratégie détermine la direction et la force du marché en surveillant principalement la rupture du coffre formé par les hauts et les bas de la ligne K. Lorsqu’une rupture du coffre vers le haut se produit, la stratégie établit un point d’entrée positif près du point de rupture. Lorsqu’une rupture du coffre vers le bas se produit, la stratégie établit un point d’entrée inversé près du point de rupture.

Principe de stratégie

  1. La stratégie définit une période de négociation et ne fonctionne que pour trouver des opportunités de négociation dans cette période.

  2. La stratégie détermine si une rupture significative a eu lieu entre le prix le plus élevé et le prix le plus bas des deux premières lignes K après la formation de chaque ligne K.

2.1 Si le prix minimum de la deuxième ligne K est supérieur au prix maximum de la première ligne K, une rupture de la caisse vers le haut se produit.

2.2 Si le prix le plus élevé de la deuxième ligne K est inférieur au prix le plus bas de la première ligne K, une rupture de boîte descendante se produit.

  1. Après avoir confirmé le signal de rupture du coffre, la stratégie définit un point d’entrée positif ou inverse à proximité du prix le plus élevé ou le plus bas de la ligne K.

  2. Une fois que la position est formée, la stratégie effectue un arrêt sur la base de deux fois la taille de la rupture, ce qui permet de capturer l’accélération de la tendance.

  3. La stratégie permet également de fixer un stop loss à la position du prix le plus bas ou le plus haut de la deuxième ligne K, réduisant ainsi le risque de perte.

Analyse des avantages

Cette stratégie présente les avantages suivants:

  1. Les principes sont simples et faciles à appliquer.

  2. L’utilisation d’un casque K pour détecter la direction et la force du marché est plus précise.

  3. Le paramètre de niveau d’arrêt permet de saisir les opportunités d’accélération de la tendance. Le multiplicateur d’arrêt est réglable.

  4. Il existe une logique de stop-loss claire qui permet de contrôler les pertes individuelles.

  5. Les stratégies sont flexibles et peuvent être personnalisées en fonction du style de chacun.

Analyse des risques

Cependant, la stratégie comporte aussi des risques:

  1. Les signaux de rupture peuvent être des fausses ruptures qui ne permettent pas d’éviter complètement les pertes.

  2. Les positions de stop loss situées à proximité des points d’entrée peuvent être facilement déclenchées par des marchés agressifs.

  3. Les pertes d’arrêt peuvent souvent être déclenchées par des mouvements de choc.

  4. L’impact de la variété et de la période de transaction n’est pas pris en compte.

Direction d’optimisation

Pour optimiser davantage cette stratégie, il est possible de commencer par:

  1. Paramètres d’arrêt des dommages adaptatifs selon les variétés et les périodes.

  2. Il est important d’ajouter des indicateurs techniques pour évaluer les tendances et éviter de se faire piéger par les chocs.

  3. Il est possible de mettre en place des opportunités de reprise pour suivre la tendance.

  4. La quantité combinée permet de filtrer les signaux pour déterminer si une rupture est réelle ou non.

  5. Ajout d’algorithmes d’apprentissage automatique pour aider à déterminer la direction des tendances.

Résumer

La stratégie est basée sur une conception de principe de percée simple, pour obtenir des gains supplémentaires en capturant l’accélération de fonctionnement après la percée. Le risque est contrôlé en utilisant des paramètres de stop loss et de stop loss. La stratégie est facile à comprendre et à mettre en œuvre, peut être adaptée et optimisée en fonction des besoins individuels et de l’environnement du marché, et a une grande utilité.

Code source de la stratégie
/*backtest
start: 2024-01-07 00:00:00
end: 2024-01-14 00:00:00
period: 3m
basePeriod: 1m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

// This Pine Script™ code is subject to the terms of the Mozilla Public License 2.0 at https://mozilla.org/MPL/2.0/
// © Dvitash

//@version=5
strategy("Casper SMC Silver Bullet", shorttitle = "Casper SB", overlay=true, calc_on_order_fills = true)

startTime = input(defval = "1000", title = "Start Time")
endTime = input(defval = "1600", title = "End Time")
contractAmt = input.int(defval = 2, title = "Contract Amount")
fvgCol = input.color(defval = color.rgb(63, 61, 179, 41), title = "FVG Color")
borderCol = input.color(defval = color.rgb(35, 33, 172, 41), title = "FVG Border Color")
fvgExtendLength = input.int(defval = 0, minval = 0, title = "FVG Extend Length")

allowedTime = not na(time(timeframe.period, startTime + "-" + endTime +":23456", "America/New_York"))
newDay = bool(ta.change(time('D')))
h = hour(time('1'), "America/New_York")

var bool fvgDrawn = na
var float entryPrice = na 
var float stopPrice = na 
var float tpPrice = na 

if newDay
    fvgDrawn := false
    // a_allBoxes = box.all
    // if array.size(a_allBoxes) > 0
    //     for i = 0 to array.size(a_allBoxes) - 1
    //         box.delete(array.get(a_allBoxes, i))

if allowedTime and barstate.isconfirmed and h <= 16
    //Long FVG
    if high[2] < low and not fvgDrawn
        // box.new(bar_index[2], low, bar_index + fvgExtendLength, high[2], bgcolor = fvgCol, border_color = borderCol)
        stopPrice := low[2]
        entryPrice := low
        tpPrice := entryPrice + (math.abs(low[2] - entryPrice) * 2)
        // log.info("SL: " + str.tostring(stopPrice) + " Entry: " + str.tostring(entryPrice) + " TP: " + str.tostring(tpPrice))
        strategy.entry("long", strategy.long, contractAmt, limit = entryPrice, comment = "Long Entry")
        fvgDrawn := true

    if low[2] > high and not fvgDrawn
        // box.new(bar_index[2], high, bar_index + fvgExtendLength, low[2], bgcolor = fvgCol, border_color = borderCol)
        stopPrice := high[2]
        entryPrice := high
        tpPrice := entryPrice - (math.abs(high[2] - entryPrice) * 2)
        // log.info("SL: " + str.tostring(stopPrice) + " Entry: " + str.tostring(entryPrice) + " TP: " + str.tostring(tpPrice))
        strategy.entry("short", strategy.short, contractAmt, limit = entryPrice, comment = "Short Entry")
        fvgDrawn := true
if h >= 16
    strategy.close_all()
    strategy.cancel_all()

strategy.exit("long exit", from_entry = "long", qty = contractAmt, limit = tpPrice, stop = stopPrice, comment = "Long Exit")
strategy.exit("short exit", from_entry = "short", qty = contractAmt, limit = tpPrice, stop = stopPrice, comment = "Short Exit")