Stratégie de rupture sur plusieurs délais

Auteur:ChaoZhang est là., Date: 29 décembre 2023 16:17:56
Les étiquettes:

img

Résumé

La stratégie de rupture multi-temporelle génère des signaux de trading plus fiables en combinant des signaux de rupture de prix de deux délais différents. La stratégie calcule simultanément des signaux de rupture de prix sur des délais plus courts tels que 1 heure, 2 heures, 3 heures, etc. et des délais plus longs tels que 4 heures, quotidien, etc. Elle ne générera des signaux d'achat ou de vente que lorsque les signaux des deux délais sont dans le même sens pour l'exécution des transactions correspondantes.

La logique de la stratégie

La logique de base de cette stratégie consiste à calculer les signaux de rupture de prix sur deux délais différents respectivement, puis à les faire correspondre pour le filtrage. Plus précisément, la stratégie vérifiera si les prix franchissent certains niveaux sur un délai plus court (par exemple 1 heure) et également si les prix franchissent les niveaux correspondants sur un délai plus long (par exemple 4 heures).

La condition pour un signal d'achat est que les prix de clôture ou les prix bas sur les deux délais plus courts et plus longs dépassent leurs niveaux de prix. La condition pour un signal de vente est que les prix de clôture ou les prix élevés sur les deux délais dépassent leurs niveaux. En assortissant les signaux à travers les délais de cette façon, la stratégie peut filtrer certains faux signaux et rendre les signaux plus fiables.

Analyse des avantages

Le plus grand avantage de cette stratégie est la plus grande fiabilité de ses signaux de trading. En exigeant des ruptures de prix sur des niveaux dans deux délais, il peut filtrer efficacement un peu de bruit et éviter les mauvais métiers. En outre, les signaux de rupture de différents délais peuvent se valider, rendant les opportunités de trading plus efficaces. De plus, la stratégie offre une certaine flexibilité en permettant aux utilisateurs de choisir des délais pour combiner et source de données, etc. selon leurs propres besoins.

Analyse des risques

Le principal risque de cette stratégie est que pendant les Zeitgeists du marché calme, les prix ne peuvent pas éclater sur l'un ou l'autre des deux délais. Dans ce cas, la stratégie ne générera aucun signal de trading et peut manquer des opportunités. En outre, il y a un certain décalage entre les deux délais qui peut conduire à des signaux inefficaces. En outre, la stratégie n'inclut pas de logique de stop loss et comporte des risques plus importants.

Directions d'optimisation

Cette stratégie peut être optimisée dans les aspects suivants: 1) Ajouter une logique de stop-loss pour contrôler les risques; 2) Optimiser les combinaisons de délais pour améliorer l'efficacité; 3) Ajouter plus de délais pour la combinaison pour rendre les signaux de trading plus stricts; 4) Incorporer d'autres indicateurs de filtration pour améliorer la qualité du signal; 5) Développer des mécanismes de sortie pour mieux contrôler les profits, etc.

Conclusion

La stratégie de rupture multi-temps améliore la qualité du signal en comparant les ruptures de prix à travers les délais et est une stratégie de suivi de tendance relativement fiable.


/*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()

Plus de