Stratégie d'évasion multi-périodes


Date de création: 2023-12-29 16:17:56 Dernière modification: 2023-12-29 16:18:22
Copier: 0 Nombre de clics: 632
1
Suivre
1621
Abonnés

Stratégie d’évasion multi-périodes

Aperçu

La stratégie de rupture de plusieurs périodes permet d’obtenir un signal de transaction plus fiable en combinant les signaux de rupture de prix sur deux périodes différentes. La stratégie calcule simultanément les signaux de rupture de prix sur des périodes plus courtes telles que 1 heure, 2 heures, 3 heures et sur des périodes plus longues telles que 4 heures et le jour.

Principe de stratégie

La logique centrale de la stratégie consiste à calculer les signaux de rupture de prix sur deux périodes distinctes, puis à effectuer un filtrage de correspondance. Plus précisément, la stratégie calcule si le prix a franchi le niveau spécifié sur une période plus courte (par exemple, la ligne 1 heure) et si le prix a franchi le niveau spécifié sur une période plus longue (par exemple, la ligne 4 heures). La stratégie ne génère un signal de transaction que si la direction du signal de rupture sur les deux périodes est la même, c’est-à-dire si le prix sur les deux périodes a franchi le niveau spécifié.

Le signal d’achat est généré lorsque le prix de clôture ou le prix le plus bas sur la courte période et le prix de clôture ou le prix le plus bas sur la longue période franchissent le niveau de prix correspondant. La stratégie peut filtrer certains faux signaux en utilisant ce type de correspondance sur plusieurs périodes, ce qui rend le signal plus fiable.

Analyse des avantages

Le plus grand avantage de cette stratégie réside dans la fiabilité élevée de son signal de négociation. En demandant aux prix de franchir le niveau correspondant sur les deux périodes, il est possible d’éliminer efficacement une partie du bruit et d’éviter les erreurs de négociation. De plus, les signaux de rupture sur les différentes périodes peuvent se vérifier les uns les autres, ce qui rend les opportunités de négociation plus efficaces.

Analyse des risques

Le principal risque de cette stratégie est que, dans la période de Zeit, où le marché est calme, les prix des deux périodes sont susceptibles de ne pas avoir de rupture. Dans ce cas, la stratégie ne générera aucun signal de négociation et risque de manquer une opportunité de négociation. En outre, il existe un certain retard entre les deux périodes, ce qui peut entraîner une inefficacité du signal.

Direction d’optimisation

Cette stratégie peut être optimisée de plusieurs façons: 1) augmenter la logique de stop loss pour contrôler le risque; 2) optimiser la combinaison des périodes de temps pour améliorer l’efficacité des transactions; 3) ajouter plus de périodes de temps pour la combinaison, rendant les signaux de négociation plus stricts; 4) filtrer en combinaison avec d’autres indicateurs, améliorant la qualité des signaux; 5) développer des mécanismes d’exiting pour mieux contrôler les bénéfices, etc.

Résumer

La stratégie de rupture de plusieurs périodes de temps améliore la qualité du signal en comparant les ruptures de prix sur deux périodes de temps. C’est une stratégie de suivi de tendance plus fiable. Cependant, il existe des lacunes qui peuvent être optimisées en permanence pour en faire une stratégie de négociation quantitative stable et fiable.

Code source de la stratégie
/*backtest
start: 2023-11-28 00:00:00
end: 2023-12-28 00:00:00
period: 1h
basePeriod: 15m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//Noro
//2018

//@version=3
strategy(title = "Noro's Levels Strategy v1.1", shorttitle = "Levels str 1.1", overlay = true, default_qty_type = strategy.percent_of_equity, default_qty_value = 100, pyramiding = 0)

//Settings
needlong = input(true, defval = true, title = "Long")
needshort = input(true, defval = true, title = "Short")
capital = input(100, defval = 100, minval = 1, maxval = 10000, title = "Capital, %")
tf1 = input('W', title = "timeframe 1")
tf2 = input('D', title = "timeframe 2")
src = input(ohlc4, "Source")
ap = input(true, defval = true, title = "use saw filter")
cf = input(true, defval = true, title = "гыу color filter")
showlines = input(true, defval = true, title = "Show lines")
fromyear = input(1900, defval = 1900, minval = 1900, maxval = 2100, title = "From Year")
toyear = input(2100, defval = 2100, minval = 1900, maxval = 2100, title = "To Year")
frommonth = input(01, defval = 01, minval = 01, maxval = 12, title = "From Month")
tomonth = input(12, defval = 12, minval = 01, maxval = 12, title = "To Month")
fromday = input(01, defval = 01, minval = 01, maxval = 31, title = "From day")
today = input(31, defval = 31, minval = 01, maxval = 31, title = "To day")

//Levels
level1 = request.security(syminfo.tickerid, tf1, src)
level2 = request.security(syminfo.tickerid, tf2, src)
col = showlines ? silver : na
p1 = plot(level1, linewidth = 3, color = col, title = "Level 1")
p2 = plot(level2, linewidth = 3, color = col, title = "Level 2")

//Signals
up1 = close > level1 and ap == false ? true : low > level1 ? true : false
dn1 = close < level1 and ap == false ? true : high < level1 ? true : false
up2 = close > level2 and ap == false ? true : low > level2 ? true : false
dn2 = close < level2 and ap == false ? true : high < level2 ? true : false

//Trading
size = strategy.position_size
lot = 0.0
lot := size != size[1] ? strategy.equity / close * capital / 100 : lot[1]

if up1 and up2 and (close < open or cf == false)
    strategy.entry("Long", strategy.long, needlong == false ? 0 : lot, when = (time > timestamp(fromyear, frommonth, fromday, 00, 00) and time < timestamp(toyear, tomonth, today, 23, 59)))
    
if dn1 and dn2 and (close > open or cf == false)
    strategy.entry("Short", strategy.short, needshort == false ? 0 : lot, when = (time > timestamp(fromyear, frommonth, fromday, 00, 00) and time < timestamp(toyear, tomonth, today, 23, 59)))

if time > timestamp(toyear, tomonth, today, 23, 59)
    strategy.close_all()