C'est une stratégie qui utilise différents modèles de bougies comme signaux de trading.
La logique de base de cette stratégie est d'identifier différents modèles de bougies, y compris Doji, Hammer, Morning Star, etc. Lorsqu'un modèle haussier est identifié, un signal d'achat sera déclenché. Lorsqu'un modèle baissier est identifié, un signal de vente sera déclenché.
Par exemple, lorsque trois chandeliers blancs consécutifs avec des hauts et des bas plus élevés sont détectés, il donne le signal de
Par exemple, lorsqu'une bougie baissière longue engloutit complètement le corps de la bougie haussière précédente, elle forme un motif d'engloutissement baissier, ce qui implique un renversement de tendance.
Ce type de stratégies de reconnaissance de modèle peut capturer les points de renversement à court terme et est particulièrement adapté pour le trading à court terme.
Par rapport aux stratégies d'indicateurs techniques simples comme les moyennes mobiles, la stratégie de modèle de bougie intègre le jugement de l'action des prix et du sentiment du marché, ce qui rend les signaux de trading plus précis et fiables.
Cette stratégie repose principalement sur l'identification précise des modèles de chandeliers.
En outre, aucune stratégie d'analyse technique ne peut éviter complètement les risques systémiques tels que les effets des politiques, les événements du cygne noir, etc. qui peuvent influencer le trading.
Le risque peut être contrôlé par un stop loss. Lorsque le prix franchit une plage dans la direction opposée, le stop loss peut être déclenché pour quitter les positions en temps opportun.
Des motifs de chandeliers plus efficaces peuvent être ajoutés pour la confirmation du signal, comme le marteau, le marteau inversé, les lignes de séparation, etc.
D'autres indicateurs peuvent être incorporés pour le filtrage des signaux, évitant de prendre des signaux dans un environnement de marché incertain.
La logique de stop loss peut être optimisée pour être déclenchée lorsque le prix sort d'une plage vers la direction opposée.
Il s'agit d'une stratégie de trading à court terme très pratique. Elle identifie les modèles de bougies courants pour générer des signaux de trading et saisir les opportunités d'inversion à court terme.
/*backtest start: 2022-12-12 00:00:00 end: 2023-12-18 00:00:00 period: 1d basePeriod: 1h exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}] */ //@version=3 //Dan Pasco strategy("Candlestick Signals Strategy" , shorttitle="Candlestick Signal Strategy $1000", overlay = true , initial_capital = 1000) //Settings input menu dojicon = input(title = "Show Doji's", type=bool, defval = true) gravedojicon = input(title = "Gravestone Doji/Dragonfly Doji", type=bool, defval = true) tbctwscon = input(title = "3 Red Crows/3 Green Soldiers", type=bool, defval = true) tlscon = input(title = "Three Line Strike", type=bool, defval = true) pcon = input(title = "Piercing/Dark Cloud", type=bool, defval = true) mscon = input(title = "Morning Star", type=bool, defval = true) escon = input(title = "Evening Star", type=bool, defval = true) econ = input(title = "Engulfing", type=bool, defval = true) hcon = input(title = "Hammer", type=bool, defval = true) fscon = input(title = "Falling Star", type=bool, defval = true) //Doji Up dojiup = (open-close)>0 ? (high-open)>(open-close) and (close-low)>(open-close) and (close-low)>(high-open) and (open-close)<((high-open)/8) : (open-low)>(close-open) and (high-close)>(close-open) and (open-low)>(high-close) and (close-open)<((high-close)/8) and dojicon == true plotshape(dojiup, style=shape.cross,location=location.belowbar, text="Doji", color=black) //Doji Down dojidown = (open-close)>0 ? (high-open)>(open-close) and (close-low)>(open-close) and (high-open)>(close-low) and (open-close)<((close-low)/8) : (open-low)>(close-open) and (high-close)>(close-open) and (high-close)>(open-low) and (close-open)<((high-close)/8) and dojicon == true plotshape(dojidown, style=shape.cross,location=location.abovebar, text="Doji", color=black) //Gravestone Doji Bull gravedojibull = (close-open)>0 and ((high-close)/8)>(close-open) and ((high-close)/5)>(open-low) and gravedojicon == true plotshape(gravedojibull, style=shape.arrowdown,location=location.abovebar, text="Gravestone Doji", color=red) //Gravestone Doji Bear gravedojibear = (open-close)>0 and ((high-open)/8)>(open-close) and ((high-open)/5)>(close-low) and gravedojicon == true plotshape(gravedojibear, style=shape.arrowdown,location=location.abovebar, text="Gravestone Doji", color=red) //Dragonfly Doji Bull dragondojibull = (close-open)>0 and ((open-low)/8)>(close-open) and ((open-low)/5)>(high-close) and gravedojicon == true plotshape(dragondojibull, style=shape.arrowup,location=location.belowbar, text="Dragonfly Doji", color=green) //Dragonfly Doji Bear dragondojibear = (open-close)>0 and ((close-low)/8)>(open-close) and ((close-low)/5)>(high-open) and gravedojicon == true plotshape(dragondojibear, style=shape.arrowup,location=location.belowbar, text="Dragonfly Doji", color=green) //Three Black Crows tbc = (low[2]<low[3] and low[1]<low[2] and low<low[1] and high[2]<high[3] and high[1]<high[2] and high<high[1] and (close[3]-open[3])>0 and (open[2]-close[2])>0 and (open[1]-close[1])>0 and (open-close)>0 and (open-close)>(close-low) and (open-close)>(high-open) and (open[1]-close[1])>(close[1]-low[1]) and (open[1]-close[1])>(high[1]-open[1]) and (open[2]-close[2])>(close[2]-low[2]) and (open[2]-close[2])>(high[2]-open[2]) and tbctwscon == true) plotshape(tbc, style=shape.arrowdown,location=location.abovebar, text="3 Red Crows", color=red) //Three White Soldiers tws = (high[2]>high[3] and high[1]>high[2] and high>high[1] and low[2]>low[3] and low[1]>low[2] and low>low[1] and (open[3]-close[3])>0 and (close[2]-open[2])>0 and (close[1]-open[1])>0 and (close-open)>0 and (close-open)>(open-low) and (close-open)>(high-close) and (close[1]-open[1])>(open[1]-low[1]) and (close[1]-open[1])>(high[1]-close[1]) and (close[2]-open[2])>(open[2]-low[2]) and (close[2]-open[2])>(high[2]-close[2]) and tbctwscon == true) plotshape(tws, style=shape.arrowup,location=location.belowbar, text="3 Green Soldiers", color=green) //Three Line Strike Up tlsu = ((close-open)>0 and (open[1]-close[1])>0 and (open[2]-close[2])>0 and (open[3]-close[3])>0 and open<close[1] and low[1]<low[2] and low[2]<low[3] and high>high[3] and low<low[1] and tlscon == true) plotshape(tlsu, style=shape.arrowup,location=location.belowbar, text="3 Line Strike", color=green) //Three Line Strike Down tlsd = ((open-close)>0 and (close[1]-open[1])>0 and (close[2]-open[2])>0 and (close[3]-open[3])>0 and open>close[1] and high[1]>high[2] and high[2]>high[3] and low<low[3] and high>high[1] and tlscon == true) plotshape(tlsd, style=shape.arrowdown,location=location.abovebar, text="3 Line Strike", color=red) //Piercing Up pu = ((open[1]-close[1])>0 and (close-open)>0 and (open[1]-close[1])>(high[1]-open[1]) and (open[1]-close[1])>(close[1]-low[1]) and (close-open)>(high-close) and (close-open)>(open-low) and open<close[1] and ((open[1]+close[1])/2)<close and ((close-open)/2)>(high-close) and close<open[1] and (high<high[1] or low>low[1]) and pcon == true) plotshape(pu, style=shape.arrowup,location=location.belowbar, text="Piercing Up", color=green) //Dark Cloud dc = ((close[1]-open[1])>0 and (open-close)>0 and (close[1]-open[1])>(high[1]-close[1]) and (close[1]-open[1])>(open[1]-low[1]) and (open-close)>(high-open) and (open-close)>(close-low) and open>close[1] and ((open[1]+close[1])/2)>close and ((open-close)/2)>(close-low) and close>open[1] and (high<high[1] or low>low[1]) and pcon == true) plotshape(dc, style=shape.arrowdown,location=location.abovebar, text="Dark Cloud", color=red) //Morning Star 1 Up ms1u = ((open[2]-close[2])>0 and (close-open)>0 and (open[1]-close[1])>=0 and (open[2]-close[2])>(high[2]-open[2]) and (open[2]-close[2])>(close[2]-low[2]) and (close-open)>(high-close) and (close-open)>(open-low) and (close-open)>(open[1]-close[1]) and (open[2]-close[2])>(open[1]-close[1]) and open[1]<close[2] and open[1]<open and open[1]!=close[1] and mscon == true) plotshape(ms1u, style=shape.arrowup,location=location.belowbar, text="Morning Star", color=green) //Morning Star 2 Up ms2u = ((open[2]-close[2])>0 and (close-open)>0 and (close[1]-open[1])>=0 and (open[2]-close[2])>(high[2]-open[2]) and (open[2]-close[2])>(close[2]-low[2]) and (close-open)>(high-close) and (close-open)>(open-low) and (close-open)>(close[1]-open[1]) and (open[2]-close[2])>(close[1]-open[1]) and close[1]<close[2] and close[1]<open and open[1]!=close[1] and mscon == true) plotshape(ms2u, style=shape.arrowup,location=location.belowbar, text="Morning Star X2", color=green) //Evening Star 1 Down es1d = ((close[2]-open[2])>0 and (open-close)>0 and (close[1]-open[1])>=0 and (close[2]-open[2])>(high[2]-close[2]) and (close[2]-open[2])>(open[2]-low[2]) and (open-close)>(high-open) and (open-close)>(close-low) and (open-close)>(close[1]-open[1]) and (close[2]-open[2])>(close[1]-open[1]) and open[1]>close[2] and open[1]>open and escon == true) plotshape(es1d, style=shape.arrowdown,location=location.abovebar, text="Evening Star", color=red) //Evening Star 2 Down es2d = ((close[2]-open[2])>0 and (open-close)>0 and (open[1]-close[1])>=0 and (close[2]-open[2])>(high[2]-close[2]) and (close[2]-open[2])>(open[2]-low[2]) and (open-close)>(high-open) and (open-close)>(close-low) and (open-close)>(open[1]-close[1]) and (close[2]-open[2])>(open[1]-close[1]) and close[1]>close[2] and close[1]>open and close[1]!=open[1] and escon == true) plotshape(es2d, style=shape.arrowdown,location=location.abovebar, text="Evening X2", color=red) //Bullish Engulfing beu = (open[1]-close[1])>0 and (close-open)>0 and high>high[1] and low<low[1] and (close-open)>(open[1]-close[1]) and (close-open)>(high-close) and (close-open)>(open-low) and econ == true plotshape(beu, style=shape.arrowup,location=location.belowbar, text="Engulfing", color=green) //Bearish Engulfing bed = (close[1]-open[1])>0 and (open-close)>0 and high>high[1] and low<low[1] and (open-close)>(close[1]-open[1]) and (open-close)>(high-open) and (open-close)>(close-low) and econ == true plotshape(bed, style=shape.arrowdown,location=location.abovebar, text="Engulfing", color=red) //Bullish Hammer Up bhu1 = (close-open)>0 and ((close-open)/3)>(high-close) and ((open-low)/2)>(close-open) and (close-open)>((open-low)/8) and hcon == true plotshape(bhu1, style=shape.arrowup,location=location.belowbar, text="Hammer", color=green) //Bearish Hammer Up bhu2 = (open-close)>0 and ((open-close)/3)>(high-open) and ((close-low)/2)>(open-close) and (open-close)>((close-low)/8) and hcon == true plotshape(bhu2, style=shape.arrowup,location=location.belowbar, text="Hammer", color=green) //Bullish Falling Star bfs1 = (close-open)>0 and ((close-open)/3)>(open-low) and ((high-close)/2)>(close-open) and (close-open)>((high-close)/8) and fscon == true plotshape(bfs1, style=shape.arrowdown,location=location.abovebar, text="Falling Star", color=red) //Bearish Falling Star bfs2 = (open-close)>0 and ((open-close)/3)>(close-low) and ((high-open)/2)>(open-close) and (open-close)>((high-open)/8) and fscon == true plotshape(bfs2, style=shape.arrowdown,location=location.abovebar, text="Falling Star", color=red) //Declaring the buy signals buy = (dragondojibear == true and gravedojicon == true) or (dragondojibull == true and gravedojicon == true) or (tws == true and tbctwscon == true) or (tlsu == true and tlscon == true) or (pu == true and pcon == true) or (ms1u == true and mscon == true) or (ms2u == true and mscon == true) or (beu == true and econ == true) or (bhu1 == true and hcon == true) or (bhu2 == true and hcon == true) //Declaring the sell signals sell = (gravedojibear == true and gravedojicon == true) or (gravedojibull == true and gravedojicon == true) or (tbc == true and tbctwscon == true) or (tlsd == true and tlscon == true) or (dc == true and pcon == true) or (es1d == true and escon == true) or (es2d == true and escon == true) or (bed == true and econ == true) or (bfs1 == true and fscon == true) or (bfs2 == true and fscon == true) //Execute historic backtesting ordersize = floor(strategy.equity/close) // To dynamically calculate the order size as the account equity increases or decreases. strategy.entry("long",strategy.long,ordersize,when=buy) // Buy strategy.close("long", when=sell) //Sell