Stratégie de rupture de canal oscillant

Auteur:ChaoZhang est là., Date: 2023-11-15 16h01:09
Les étiquettes:

img

Résumé

Il s'agit d'une stratégie de trading de rupture basée sur des indicateurs de canal. Il utilise la caractéristique d'oscillation des bandes de canal pour aller long lorsque le prix dépasse la bande supérieure et court lorsqu'il dépasse la bande inférieure. Il appartient à la catégorie de stratégie suivante la tendance.

La logique de la stratégie

La stratégie utilise d'abord la SMA pour calculer la ligne médiane du canal. La bande supérieure est définie comme la ligne médiane plus une valeur de paramètre, et la bande inférieure est la ligne médiane moins la valeur du paramètre, formant un canal de prix. Elle juge ensuite si le prix sort des bandes supérieures ou inférieures, combiné à une augmentation du volume de négociation comme signal d'ouverture. Lorsque le prix retombe dans le canal, il sert de signal de fermeture.

Plus précisément, la logique de négociation est la suivante:

  1. Calculer la ligne médiane: SMA (près de N)

  2. bande supérieure: ligne médiane + valeur du paramètre

  3. Bande inférieure: valeur du paramètre de la ligne médiane

  4. Lorsque le prix dépasse la marge supérieure, si le volume des transactions est supérieur à 2 fois celui de la période précédente, passez long.

  5. Lorsque le prix retombe dans le canal, fermez la position longue.

  6. Lorsque le prix dépasse la fourchette inférieure, si le volume des transactions est supérieur à 2 fois celui de la période précédente, passez à la vente à découvert.

  7. Lorsque le prix retombe dans le canal, fermez la position courte.

Analyse des avantages

Les avantages de cette stratégie sont les suivants:

  1. L'utilisation d'un indicateur de canal peut suivre efficacement les tendances des prix.

  2. Combiné à une augmentation du volume des transactions, les fausses ruptures sont bien filtrées.

  3. Le retour dans le canal sert de mécanisme de stop loss et limite les pertes par transaction.

  4. Les caractéristiques d'oscillation permettent de saisir les tendances à moyen terme.

  5. La logique simple le rend facile à comprendre et à mettre en œuvre.

Analyse des risques

Il y a aussi des risques:

  1. Des transactions consécutives dans la même direction lorsque le prix reste sur un côté du canal pendant une longue période, avec un risque de perte croissant.

  2. Un mauvais réglage des paramètres de canal peut provoquer des faux signaux excessifs.

  3. Des critères erronés pour une augmentation du volume des transactions peuvent manquer les vrais signaux de rupture.

  4. Le mécanisme de stop-loss peut être trop conservateur, manquant des mouvements plus importants.

Directions d'optimisation

La stratégie peut être optimisée dans les aspects suivants:

  1. Optimiser les paramètres des canaux pour les adapter aux différentes caractéristiques du marché.

  2. Améliorez les critères de position ouverte, tels que l'examen du croisement MA ou des modèles de chandeliers, pour éviter de fausses ruptures.

  3. Optimiser le mécanisme d'arrêt des pertes, permettre une plage d'arrêt des pertes plus large pour éviter une sortie prématurée.

  4. Ajouter des règles de dimensionnement des positions pour ajuster la taille des positions et l'utilisation du capital en fonction des conditions du marché.

  5. Incorporer plus d'indicateurs pour déterminer la direction générale de la tendance, en évitant de négocier contre la tendance principale.

Résumé

En résumé, il s'agit d'une stratégie de suivi de tendance simple et pratique. En utilisant l'oscillation du canal, il peut capturer efficacement les tendances à moyen terme. Mais un ajustement des paramètres est nécessaire pour s'adapter à différents marchés et les risques doivent être surveillés.


/*backtest
start: 2022-11-08 00:00:00
end: 2023-11-14 00:00:00
period: 1d
basePeriod: 1h
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//Copyright, 2022, Cache_that_pass.  You are free to use this script however you see fit and reproduce it in any manner.

//@version=5

            //////  Name the strategy between the 2 quotation marks.  Consider setting commission type and value in strategy header to match exchanges rates. //////

strategy("Oscillating SSL Channel Strategy", "O-SSL Strat", overlay=true, pyramiding=1, default_qty_type = strategy.percent_of_equity, default_qty_value = 100, initial_capital = 100, calc_on_order_fills=true)



            //////  Inputs and calculations used by script  //////

period = input(title='Period', defval=25)
len = input(title='Period', defval=25)
smaHigh = ta.sma(high, len)
smaLow = ta.sma(low, len)
Hlv = int(na)
Hlv := close > smaHigh ? 1 : close < smaLow ? -1 : Hlv[1]
sslDown = Hlv < 0 ? smaHigh : smaLow
sslUp = Hlv < 0 ? smaLow : smaHigh

            //////  Show me the money  //////

plot(sslDown, linewidth=2, color=color.new(color.red, 0))
plot(sslUp, linewidth=2, color=color.new(color.lime, 0))


            //////  Trade execution logic  //////  
            
//pseudo-code//
        //Go long when high (or maybe close) breaks above the sslUp and volume is 2x or > Volume[1] and sslUp > sslDown
        //Close the above longs when sslUp crosses under sslDown (or set takeprofit and stop loss exits)
        //
        //Go short when low is lower than the sslUp and volume is 2x or > Volume[1] and sslDown > sslUp
        //Close shorts when sslDown crosses under sslUp

longCondition1 = (sslUp > sslDown)
longCondition2 = ta.crossover(high, sslUp)
//longCondition3 = (volume >= (volume[1]*1.89))
longCondition = ((longCondition1) and (longCondition2))// and (longCondition3))

longExit = ta.crossunder(sslUp, sslDown)

            //////  Bring It  //////
if (longCondition)
    strategy.entry("Bring It", strategy.long)

            //////  Sling It  //////
if (longExit)
    strategy.close("Bring It", comment="Sling It")


shortCondition1 = (sslDown) > (sslUp)
shortCondition2 = ta.crossunder(low, sslUp)
//shortCondition3 = (volume >= (volume[1]*1.89))
shortCondition = ((shortCondition1) and (shortCondition2))// and (shortCondition3))

shortExit = ta.crossunder(sslDown, sslUp)

            //////  Bring It  //////
if (shortCondition)
    strategy.entry("Bring It", strategy.long)

            //////  Sling It  //////
if (shortExit)
    strategy.close("Bring It", comment="Sling It")

            //////  Sling It  //////
if (shortCondition)
    strategy.entry("Sling It", strategy.short)

            //////  Bling It  //////
if (shortExit)
    strategy.close("Sling It", comment="Bring It")



Plus de