Stratégie de rupture de canal à court terme


Date de création: 2023-10-25 14:40:21 Dernière modification: 2023-10-25 14:40:21
Copier: 0 Nombre de clics: 674
1
Suivre
1617
Abonnés

Stratégie de rupture de canal à court terme

Aperçu

Cette stratégie est une stratégie de trading à court terme basée sur les indicateurs de la chaîne. Elle utilise les ruptures de la chaîne pour déterminer le début et la fin d’une tendance, puis prend des décisions d’achat et de vente.

Principe de stratégie

  1. La stratégie commence par calculer les prix maximaux et minimaux d’une période donnée, pour construire les voies d’accès en haut et en bas.

  2. Si la hausse des prix atteint le niveau supérieur, il y a plus d’entrée. Si la baisse des prix atteint le niveau inférieur, il y a une entrée vide.

  3. Le risque est contrôlé par un arrêt mobile. La ligne d’arrêt est définie comme la ligne médiane du passage.

  4. Il existe deux règles de retrait possibles: la ligne médiane de retour et le stop-loss mobile. La première permet de retirer rapidement des gains, la seconde contrôle le risque.

  5. Les paramètres tels que le cycle de passage, l’amplitude d’arrêt et d’autres paramètres peuvent être choisis en fonction de l’environnement du marché, ce qui permet d’optimiser la stratégie.

Analyse des avantages

  1. Les opérations sont simples et faciles à mettre en œuvre. Il suffit de surveiller la relation entre les prix et les canaux et d’ouvrir des positions selon les règles.

  2. Les traders qui suivent la tendance n’ont aucun risque de rebond.

  3. Les passages sont clairs et intuitifs, et constituent un signal d’entrée clair.

  4. Il y a une bonne marge de profit et généralement un rendement satisfaisant.

  5. Il existe de nombreux paramètres qui peuvent être ajustés et optimisés pour différents marchés.

Analyse des risques

  1. La percée n’est pas forcément réussie, il y a un risque d’être piégé.

  2. Les canaux nécessitent une formation périodique et ne sont pas adaptés aux secousses.

  3. En revanche, la perte de la ligne médiane du canal pourrait être trop conservatrice pour maintenir la tendance.

  4. L’optimisation des paramètres nécessite le support de données historiques, et l’optimisation du disque peut avoir eu lieu.

  5. Les points de rupture mécaniques peuvent augmenter le nombre de transactions et le coût des points de glissement.

Direction d’optimisation

  1. Évaluer l’efficacité des différents paramètres de cycle et choisir le meilleur cycle de passage.

  2. Testez les arrêts de la ligne médiane de retour et les arrêts mobiles et choisissez le mécanisme d’évacuation le plus approprié.

  3. Optimiser l’amplitude de l’arrêt et réduire la probabilité que l’arrêt soit déclenché.

  4. Le filtrage des tendances permet d’éviter les ruptures inappropriées.

  5. Envisagez d’augmenter votre position, mais maîtrisez vos risques.

Résumer

La stratégie est une stratégie de rupture à court terme plus mature dans l’ensemble. Elle a des règles d’entrée claires, des mesures de contrôle des risques en place et un meilleur rendement. La performance de la stratégie peut être encore améliorée par l’optimisation des paramètres.

Code source de la stratégie
/*backtest
start: 2022-10-18 00:00:00
end: 2023-10-24 00:00:00
period: 1d
basePeriod: 1h
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

// This source code is subject to the terms of the Mozilla Public License 2.0 at https://mozilla.org/MPL/2.0/
// Strategy testing and optimisation for free Bitmex trading bot 
// © algotradingcc 

//@version=4
strategy("Channel Break [for free bot]", overlay=true, default_qty_type= strategy.percent_of_equity, initial_capital = 1000, default_qty_value = 20, commission_type=strategy.commission.percent, commission_value=0.075)

//Options
buyPeriod = input(13, "Channel Period for Long position")
sellPeriod = input(18, "Channel Period for Short position")
isMiddleExit = input(true, "Is exit on Base Line?")
takeProfit = input(46, "Take Profit (%) for position")
stopLoss = input(9, "Stop Loss (%) for position")

// Test Start
startYear = input(2005, "Test Start Year")
startMonth = input(1, "Test Start Month")
startDay = input(1, "Test Start Day")
startTest = timestamp(startYear,startMonth,startDay,0,0)

//Test End
endYear = input(2050, "Test End Year")
endMonth = input(12, "Test End Month")
endDay = input(30, "Test End Day")
endTest = timestamp(endYear,endMonth,endDay,23,59)

timeRange = time > startTest and time < endTest ? true : false

// Long&Short Levels
BuyEnter = highest(buyPeriod)
BuyExit = isMiddleExit ? (highest(buyPeriod) + lowest(buyPeriod)) / 2: lowest(buyPeriod)

SellEnter = lowest(sellPeriod)
SellExit = isMiddleExit ? (highest(sellPeriod) + lowest(sellPeriod)) / 2: highest(sellPeriod)

// Plot Data
plot(BuyEnter, style=plot.style_line, linewidth=2, color=color.blue, title="Buy Enter")
plot(BuyExit, style=plot.style_line, linewidth=1, color=color.blue, title="Buy Exit", transp=50)
plot(SellEnter, style=plot.style_line, linewidth=2, color=color.red, title="Sell Enter")
plot(SellExit, style=plot.style_line, linewidth=1, color=color.red, title="Sell Exit", transp=50)

// Calc Take Profits & Stop Loss
TP = 0.0
SL = 0.0
if strategy.position_size > 0
    TP := strategy.position_avg_price*(1 + takeProfit/100)
    SL := strategy.position_avg_price*(1 - stopLoss/100)

if strategy.position_size > 0 and SL > BuyExit
    BuyExit := SL
    
if strategy.position_size < 0
    TP := strategy.position_avg_price*(1 - takeProfit/100)
    SL := strategy.position_avg_price*(1 + stopLoss/100)

if strategy.position_size < 0 and SL < SellExit
    SellExit := SL
    
    
// Long Position    
if timeRange and strategy.position_size <= 0
    strategy.entry("Long", strategy.long, stop = BuyEnter)
strategy.exit("Long Exit", "Long", stop=BuyExit, limit = TP, when = strategy.position_size > 0)


// Short Position
if timeRange and strategy.position_size >= 0
    strategy.entry("Short", strategy.short, stop = SellEnter)
    
strategy.exit("Short Exit", "Short", stop=SellExit, limit = TP, when = strategy.position_size < 0)

// Close & Cancel when over End of the Test
if time > endTest
    strategy.close_all()
    strategy.cancel_all()