
Cette stratégie consiste à négocier des actions en combinant l’utilisation de plusieurs modèles de forme d’aiguille. Elle combine le modèle de la ligne de paquet, le modèle de l’aiguille vide et le modèle de l’étoile croisée pour capturer des opportunités de négociation dans différentes conditions de marché.
La logique centrale de cette stratégie est de construire un certain nombre de règles de jugement de l’hypothermie, puis de synthétiser ces règles pour produire un signal de transaction.
Tout d’abord, il définit des variables de base pour décrire les propriétés d’un fil de fer, telles que la taille de l’entité de fer, le corps, le prix d’ouverture ou le prix de clôture.
Ensuite, il définit 3 types de barres de négociation en fonction de la relation entre le cours de clôture et le cours d’ouverture de la barre: 1 représente la barre, -1 la barre, et 0 la barre.
Sur cette base, nous avons construit trois règles pour juger de la forme de l’argile:
Pattern d’engulfage: la ligne K actuelle englobe la ligne K précédente, générant un signal d’achat ou de vente.
Harami Pattern: la ligne K supérieure entoure la ligne K actuelle, générant un signal d’achat ou de vente.
Harami Cross Pattern: combinaison d’une boîte à cœurs vides et d’une croix, générant un signal d’achat ou de vente.
Les règles de la forme de l’anneau permettent de déterminer le moment de l’achat et de la vente. Elle est associée à des conditions supplémentaires, telles que la limite de la portée des heures de négociation, pour filtrer les signaux de négociation non conformes.
Dans la partie de la transaction, la position est d’abord jugée, si elle est opposée à la direction du signal d’aiguille, la position est d’abord levée, puis la position est ouverte selon la direction du signal.
La combinaison de plusieurs formes est stable. Une seule forme peut être plus influencée par un environnement de marché particulier, une combinaison de formes peut améliorer la stabilité.
Confirmation de la forme dans la même direction, jugement global, éviter les erreurs de jugement. Les différents modèles de forme jugent les tendances sous différents angles et peuvent vérifier les signaux les uns des autres.
Les paramètres sont réglables et adaptatifs. Les utilisateurs peuvent choisir librement différents modèles de forme, ajuster les paramètres tels que la plage de temps de transaction, et être flexibles pour répondre aux changements du marché.
Une bonne logique de négociation, combinée à un jugement de position et à une logique de sortie de stop-loss, permet de contrôler efficacement le risque.
Les combinaisons de plusieurs paramètres augmentent la complexité. Il est nécessaire de tester la compatibilité des combinaisons de paramètres, et les combinaisons de paramètres inappropriées peuvent réduire l’efficacité.
La configuration des paramètres de forme dépend de l’expérience. Les paramètres de forme, tels que la taille de l’entité, nécessitent une expérience accumulée pour être ajustés.
Les risques associés à la position unilatérale. Le simple fait de faire plus ou de faire plus court limite la marge de profit. Il est possible de faire plus court en même temps par paramètres.
Il est possible de manquer un point de revers de tendance. Cette stratégie est basée sur l’identification des formes et ne permet pas de juger efficacement le revers de tendance.
Augmenter les stratégies de stop loss pour réduire les risques liés aux positions unilatérales.
Combinez avec d’autres indicateurs techniques pour déterminer l’orientation de la tendance et éviter les transactions à contre-courant, comme le MACD, les bandes de Bollinger, etc.
Tester les préférences paramétriques des différentes variétés et créer un ensemble de formes adaptées aux différentes variétés.
L’ajout d’algorithmes d’apprentissage automatique pour l’optimisation des paramètres et la reconnaissance des formes par l’IA.
Cette stratégie utilise les avantages de plusieurs formes de piles pour construire un système de négociation de courte ligne relativement stable et fiable. Cependant, certains paramètres de réglage et de contrôle des risques doivent encore être optimisés pour s’adapter à un environnement de marché plus complexe.
/*backtest
start: 2022-10-10 00:00:00
end: 2023-10-16 00:00:00
period: 1d
basePeriod: 1h
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/
//Noro
//2018
//@version=3
strategy(title = "Noro's CandleModels Tests", shorttitle = "CandleModels tests", 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")
eng = input(true, defval = true, title = "Model Engulfing")
har = input(true, defval = true, title = "Model Harami")
harc = input(true, defval = true, title = "Model Harami Cross")
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")
rev = input(false, defval = false, title = "Reversive trading")
//Body
body = abs(close - open)
abody = sma(body, 10)
//MinMax Bars
min = min(close, open)
max = max(close, open)
//Signals
bar = close > open ? 1 : close < open ? -1 : 0
doji = body < abody / 10
up1 = eng and bar == 1 and bar[1] == -1 and min <= min[1] and max >= max[1]
dn1 = eng and bar == -1 and bar[1] == 1 and min <= min[1] and max >= max[1]
up2 = har and bar == 1 and bar[1] == -1 and min >= min[1] and max <= max[1]
dn2 = har and bar == -1 and bar[1] == 1 and min >= min[1] and max <= max[1]
up3 = harc and doji and bar[1] == -1 and low >= min[1] and high <= max[1]
dn3 = harc and doji and bar[1] == 1 and low >= min[1] and high <= max[1]
exit = ((strategy.position_size > 0 and bar == 1) or (strategy.position_size < 0 and bar == -1)) and body > abody / 2 and rev == false
//Trading
if up1 or up2 or up3
if strategy.position_size < 0
strategy.close_all()
strategy.entry("Long", strategy.long, needlong == false ? 0 : na, when=(time > timestamp(fromyear, frommonth, fromday, 00, 00) and time < timestamp(toyear, tomonth, today, 23, 59)))
if dn1 or dn2 or dn3
if strategy.position_size > 0
strategy.close_all()
strategy.entry("Short", strategy.short, needshort == false ? 0 : na, when=(time > timestamp(fromyear, frommonth, fromday, 00, 00) and time < timestamp(toyear, tomonth, today, 23, 59)))
if time > timestamp(toyear, tomonth, today, 23, 59) or exit
strategy.close_all()