촛불 패턴 거래 전략

저자:차오장, 날짜: 2023-12-19 10:56:36
태그:

img

전반적인 설명

이것은 다른 촛불 패턴을 거래 신호로 사용하는 전략입니다. 9개의 일반적인 촛불 패턴을 감지하고 그 패턴에 기반하여 구매 및 판매 신호를 생성할 수 있습니다.

전략 논리

이 전략의 핵심 논리는 도지, 해머, 모닝 스타 등을 포함한 다른 촛불 패턴을 식별하는 것입니다. 상승 패턴이 확인되면 구매 신호가 유발됩니다. 하락 패턴이 확인되면 판매 신호가 유발됩니다.

예를 들어, 3개의 연속 하얀 촛불이 더 높은 최고와 더 높은 최저로 감지되면, 황소 시장을 나타내는 3개의 하얀 병사 신호를 제공합니다. 이 경우 구매 신호가 생성됩니다.

또한, 예를 들어, 긴 하향 촛불이 이전 상승 촛불의 몸체를 완전히 삼키면, 하향 삼키기 패턴을 형성하여 트렌드 반전을 암시합니다. 이 경우 판매 신호가 유발됩니다.

이점 분석

이 유형의 패턴 인식 전략은 단기적 반전 지점을 파악할 수 있으며 특히 단기적 거래에 적합합니다. 정확한 패턴 신호를 식별하면 가격 반전을 적시에 파악하고 수익성 방향으로 갈 수 있습니다.

이동 평균과 같은 간단한 기술 지표 전략과 비교하면 촛불 패턴 전략은 가격 행동과 시장 정서 판단을 통합하여 거래 신호를 더 정확하고 신뢰할 수 있습니다.

위험 분석

이 전략은 주로 촛불 패턴의 정확한 식별에 의존합니다. 검출이 잘못되면 잘못된 거래 신호를 생성하고 손실을 유발하는 것이 쉽습니다.

또한 어떤 기술 분석 전략도 거래에 영향을 줄 수 있는 정책 영향, 블랙 스완 이벤트 등과 같은 체계적 위험을 완전히 피할 수 없습니다.

위험은 스톱 로스로 제어 될 수 있습니다. 가격이 반대 방향으로 범위를 통과 할 때, 스톱 로스는 적시에 진출 지위를 유발할 수 있습니다.

최적화 방향

더 효율적인 촛불 패턴은 신호 확인을 위해 Hammer, Inverted Hammer, Separating Lines 등을 추가 할 수 있습니다.

다른 지표는 신호 필터링을 위해 통합 될 수 있으며 불확실한 시장 환경에서 신호를 취하지 않도록합니다. MACD, RSI와 같은 지표의 신호는 낮은 품질의 촛불 신호를 필터링하는 데 사용할 수 있습니다.

스톱 로스 로직은 가격이 반대 방향으로 범위를 벗어날 때 트리거되도록 최적화 할 수 있습니다. 변동성 지표와 결합하여 스톱 로스 범위를 동적으로 조정합니다.

요약

이것은 매우 실용적인 단기 거래 전략입니다. 그것은 거래 신호를 생성하고 단기 반전 기회를 포착하기 위해 일반적인 촛불 패턴을 식별합니다. 또한 잠재적인 위험을 알아보고 위험을 제어하고 효율성을 향상시키기 위해 적절히 최적화해야합니다.


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

더 많은