이 전략은 촛불 차트에서 다양한 가격 패턴 형성을 식별하여 구매 및 판매 신호를 결정합니다. 이 전략은 시장의 인플렉션 포인트를 캡처하기 위해 12 개 이상의 일반적인 그래픽 패턴을 활용하여 Chanlun 및 Dow 이론과 같은 기술적 분석 방법을 통합합니다.
이 전략의 핵심은 각기 다른 촛불 패턴을 인식하는 데 있습니다. 그 중에는
예를 들어, 세 개의 흰 군인 패턴이 인식되면 마지막 세 개의 촛불이 모두 긴 녹색 촛불이며, 각 촛불의 폐쇄 가격은 개시 가격을 초과하며, 강한 구매가 가격을 밀어내고 있음을 나타냅니다. 따라서 구매 신호가 생성됩니다.
각 패턴은 특정 알고리즘을 가지고 있습니다. 전략은 역사적 촛불을 스캔하여 각 바가 특정 패턴의 구성이 알고리즘을 충족하는지 여부를 판단하고, 일단이 경우, 그 표시를 표시하는 그 바에 그래픽 마커를 그려줍니다.
이 전략은 기술 도구를 사용하여 촛불 막대에서 형성된 그래픽 패턴을 분석하여 미래의 시장 움직임을 결정합니다. 전략은 실용적이지만 거래자는 여전히 지역 모양으로 인해 주요 트렌드를 놓치지 않도록 일반적인 시장 환경을 고려해야합니다. 추가 최적화로 전략의 안정성과 수익성을 향상시킬 수 있습니다.
/*backtest start: 2024-01-10 00:00:00 end: 2024-01-17 00:00:00 period: 2h basePeriod: 15m exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}] */ //@version=2 strategy("Candle Patterns Strategy", shorttitle="CPS", overlay=true) //--- Patterns Input --- OnEngulfing = input(defval=true, title="Engulfing", type=bool) OnHarami = input(defval=true, title="Harami", type=bool) OnPiercingLine = input(defval=true, title="Piercing Line / Dark Cloud Cover", type=bool) OnMorningStar = input(defval=true, title="Morning Star / Evening Star ", type=bool) OnBeltHold = input(defval=true, title="Belt Hold", type=bool) OnThreeWhiteSoldiers = input(defval=true, title="Three White Soldiers / Three Black Crows", type=bool) OnThreeStarsInTheSouth = input(defval=true, title="Three Stars in the South", type=bool) OnStickSandwich = input(defval=true, title="Stick Sandwich", type=bool) OnMeetingLine = input(defval=true, title="Meeting Line", type=bool) OnKicking = input(defval=true, title="Kicking", type=bool) OnLadderBottom = input(defval=true, title="Ladder Bottom", type=bool) //--- Risk Management Input --- inpsl = input(defval = 70, title="Stop Loss", minval = 0) inptp = input(defval = 1000, title="Take Profit", minval = 0) inptrail = input(defval = 30, title="Trailing Stop", minval = 0) // If the zero value is set for stop loss, take profit or trailing stop, then the function is disabled sl = inpsl >= 1 ? inpsl : na tp = inptp >= 1 ? inptp : na trail = inptrail >= 1 ? inptrail : na //--- Session Input --- sess = input(defval = "0000-0000", title="Trading session") t = time(timeframe.period, sess) session_open = true // --- Candlestick Patterns --- //Engulfing bullish_engulfing = high[0]>high[1] and low[0]<low[1] and open[0]<open[1] and close[0]>close[1] and close[0]>open[0] and close[1]<close[2] and close[0]>open[1] ? OnEngulfing : na bearish_engulfing = high[0]>high[1] and low[0]<low[1] and open[0]>open[1] and close[0]<close[1] and close[0]<open[0] and close[1]>close[2] and close[0]<open[1] ? OnEngulfing : na //Harami bullish_harami = open[1]>close[1] and close[1]<close[2] and open[0]>close[1] and open[0]<open[1] and close[0]>close[1] and close[0]<open[1] and high[0]<high[1] and low[0]>low[1] and close[0]>=open[0] ? OnHarami : na bearish_harami = open[1]<close[1] and close[1]>close[2] and open[0]<close[1] and open[0]>open[1] and close[0]<close[1] and close[0]>open[1] and high[0]<high[1] and low[0]>low[1] and close[0]<=open[0] ? OnHarami : na //Piercing Line/Dark Cloud Cover piercing_line = close[2]>close[1] and open[0]<low[1] and close[0]>avg(open[1],close[1]) and close[0]<open[1] ? OnPiercingLine : na dark_cloud_cover = close[2]<close[1] and open[0]>high[1] and close[0]<avg(open[1],close[1]) and close[0]>open[1] ? OnPiercingLine : na //Morning Star/Evening Star morning_star = close[3]>close[2] and close[2]<open[2] and open[1]<close[2] and close[1]<close[2] and open[0]>open[1] and open[0]>close[1] and close[0]>close[2] and open[2]-close[2]>close[0]-open[0] ? OnMorningStar : na evening_star = close[3]<close[2] and close[2]>open[2] and open[1]>close[2] and close[1]>close[2] and open[0]<open[1] and open[0]<close[1] and close[0]<close[2] and close[2]-open[2]>open[0]-close[0] ? OnMorningStar : na //Belt Hold bullish_belt_hold = close[1]<open[1] and low[1]>open[0] and close[1]>open[0] and open[0]==low[0] and close[0]>avg(close[0],open[0]) ? OnBeltHold :na bearish_belt_hold = close[1]>open[1] and high[1]<open[0] and close[1]<open[0] and open[0]==high[0] and close[0]<avg(close[0],open[0]) ? OnBeltHold :na //Three White Soldiers/Three Black Crows three_white_soldiers = close[3]<open[3] and open[2]<close[3] and close[2]>avg(close[2],open[2]) and open[1]>open[2] and open[1]<close[2] and close[1]>avg(close[1],open[1]) and open[0]>open[1] and open[0]<close[1] and close[0]>avg(close[0],open[0]) and high[1]>high[2] and high[0]>high[1] ? OnThreeWhiteSoldiers : na three_black_crows = close[3]>open[3] and open[2]>close[3] and close[2]<avg(close[2],open[2]) and open[1]<open[2] and open[1]>close[2] and close[1]<avg(close[1],open[1]) and open[0]<open[1] and open[0]>close[1] and close[0]<avg(close[0],open[0]) and low[1]<low[2] and low[0]<low[1] ? OnThreeWhiteSoldiers : na //Three Stars in the South three_stars_in_the_south = open[3]>close[3] and open[2]>close[2] and open[2]==high[2] and open[1]>close[1] and open[1]<open[2] and open[1]>close[2] and low[1]>low[2] and open[1]==high[1] and open[0]>close[0] and open[0]<open[1] and open[0]>close[1] and open[0]==high[0] and close[0]==low[0] and close[0]>=low[1] ? OnThreeStarsInTheSouth : na //Stick Sandwich stick_sandwich = open[2]>close[2] and open[1]>close[2] and open[1]<close[1] and open[0]>close[1] and open[0]>close[0] and close[0]==close[2] ? OnStickSandwich : na //Meeting Line bullish_ml = open[2]>close[2] and open[1]>close[1] and close[1]==close[0] and open[0]<close[0] and open[1]>=high[0] ? OnMeetingLine : na bearish_ml = open[2]<close[2] and open[1]<close[1] and close[1]==close[0] and open[0]>close[0] and open[1]<=low[0] ? OnMeetingLine : na //Kicking bullish_kicking = open[1]>close[1] and open[1]==high[1] and close[1]==low[1] and open[0]>open[1] and open[0]==low[0] and close[0]==high[0] and close[0]-open[0]>open[1]-close[1] ? OnKicking : na bearish_kicking = open[1]<close[1] and open[1]==low[1] and close[1]==high[1] and open[0]<open[1] and open[0]==high[0] and close[0]==low[0] and open[0]-close[0]>close[1]-open[1] ? OnKicking : na //Ladder Bottom ladder_bottom = open[4]>close[4] and open[3]>close[3] and open[3]<open[4] and open[2]>close[2] and open[2]<open[3] and open[1]>close[1] and open[1]<open[2] and open[0]<close[0] and open[0]>open[1] and low[4]>low[3] and low[3]>low[2] and low[2]>low[1] ? OnLadderBottom : na // ---Plotting --- plotshape(bullish_engulfing, text='Engulfing', style=shape.triangleup, color=#1FADA2, editable=true, title="Bullish Engulfing Text") plotshape(bearish_engulfing,text='Engulfing', style=shape.triangledown, color=#F35A54, editable=true, title="Bearish Engulfing Text") plotshape(bullish_harami,text='Harami', style=shape.triangleup, color=#1FADA2, editable=true, title="Bullish Harami Text") plotshape(bearish_harami,text='Harami', style=shape.triangledown, color=#F35A54, editable=true, title="BEarish Harami Text") plotshape(piercing_line,text='Piercing Line', style=shape.triangleup, color=#1FADA2, editable=false) plotshape(dark_cloud_cover,text='Dark Cloud Cover', style=shape.triangledown, color=#F35A54, editable=false) plotshape(morning_star,text='Morning Star', style=shape.triangleup, color=#1FADA2, editable=false) plotshape(evening_star,text='Evening Star', style=shape.triangledown, color=#F35A54, editable=false) plotshape(bullish_belt_hold,text='Belt Hold', style=shape.triangleup, color=#1FADA2, editable=false) plotshape(bearish_belt_hold,text='Belt Hold', style=shape.triangledown, color=#F35A54, editable=false) plotshape(three_white_soldiers,text='Three White Soldiers', style=shape.triangleup, color=#1FADA2, editable=false) plotshape(three_black_crows,text='Three Black Crows', style=shape.triangledown, color=#F35A54, editable=false) plotshape(three_stars_in_the_south,text='3 Stars South', style=shape.triangleup, color=#1FADA2, editable=false) plotshape(stick_sandwich,text='Stick Sandwich', style=shape.triangleup, color=#1FADA2, editable=false) plotshape(bullish_ml,text='Meeting Line', style=shape.triangleup, color=#1FADA2, editable=false) plotshape(bearish_ml,text='Meeting Line', style=shape.triangledown, color=#F35A54, editable=false) plotshape(bullish_kicking,text='Kicking', style=shape.triangleup, color=#1FADA2, editable=false) plotshape(bearish_kicking,text='Kicking', style=shape.triangledown, color=#F35A54, editable=false) plotshape(ladder_bottom,text='Ladder Bottom', style=shape.triangleup, color=#1FADA2, editable=false) // --- STRATEGY --- SignalUp = bullish_engulfing or bullish_harami or piercing_line or morning_star or bullish_belt_hold or three_white_soldiers or three_stars_in_the_south or stick_sandwich or bullish_ml or bullish_kicking or ladder_bottom SignalDown = bearish_engulfing or bearish_harami or dark_cloud_cover or evening_star or bearish_belt_hold or three_black_crows or bearish_ml or bearish_kicking strategy.entry("long", true, when = SignalUp and session_open) strategy.entry("short", false, when = SignalDown and session_open) strategy.close("long", when = not session_open) strategy.close("short", when = not session_open) strategy.exit("Risk Exit long", from_entry = "long", profit = tp, trail_points = trail, loss = sl) strategy.exit("Risk Exit short", from_entry = "short", profit = tp, trail_points = trail, loss = sl )