이 전략은 도지 패턴을 기반으로 합니다. 도지 패턴이 나타날 때, 도지 패턴의 최고와 이전 촛불의 최고 사이에 구매 중지 명령이 배치되고, 도지의 낮은 것과 이전 촛불의 낮은 사이에 판매 중지 명령이 배치됩니다. 가격이 중지 명령을 유발할 때, 고정 스톱 손실과 이익을 취하거나, 도지 패턴의 가장 높고 낮은 가격을 중지 손실과 이익으로 사용할 수 있습니다. 이 전략은 소음을 필터링하기 위해 매일과 주간과 같은 더 높은 시간 프레임에서 잘 작동합니다.
도지 패턴이 나타나면 수요와 공급 관계의 변화가 나타나고, 힘이 더 균형이 잡히면서 가격 반전으로 이어질 수 있습니다. 이 전략은 도지가 표시하는 가격 반전 신호를 활용하여 정지 주문을 통해 기회를 잡습니다. 구체적으로 도지 패턴을 결정하는 기준은 다음과 같습니다.
body=close-open
range=high-low
abody=abs(body)
ratio=abody/range
data=(abs(open - close) <= (high - low) * Doji)
만약 abs ((open-close) <= (high-low) * 도지 매개 변수라면 도지 패턴으로 간주되며 스톱 오더가 배치됩니다. 스톱 오더의 위치는 다음과 같습니다.
longDist= longcandle[1] and range[1]>range? high: max(high,high[1])
shortDist= longcandle[1] and range[1]>range? low: min(low,low[1])
이전 촛불의 몸체가 큰 경우, 구매 중지 명령은 도지의 최고와 이전 촛불의 최고 사이에 배치됩니다. 이전 촛불이 작은 몸을 가지고 있다면, 구매 중지 명령은 도지의 최고에 배치됩니다. 판매 중지 명령은 동일한 논리를 따르고 있습니다.
출구에는 두 가지 옵션이 있습니다.
strategy.exit("exit buy","buy stop",loss=SL, profit=TP, when=Use_SL_TP)
strategy.close("buy stop",when=not Use_SL_TP and close<dojilow)
이 전략의 장점은 다음과 같습니다.
이 전략에는 몇 가지 위험이 있습니다.
전략을 최적화하는 몇 가지 방법:
이 전략의 전반적인 성능은 좋다. 도지 가격 반전 기회를 포착함으로써, 괜찮은 거래 신호를 생성할 수 있다. 또한 구현하기 쉽고 여러 기기에 적용된다. 지속적인 테스트와 최적화로, 더 나은 결과를 기대할 수 있다.
/*backtest start: 2024-01-02 00:00:00 end: 2024-02-01 00:00:00 period: 1h basePeriod: 15m exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}] */ //@version=3 //This is a simple strategy based on Doji star candlestick //It places two orders: buy stop at doji star high or previous candle high and sell stop at doji star low or previous candle low. //This strategy works very well with high time frames like Weekly TF because it eliminates the noise in doji formation. // strategy("Doji strategy W", overlay=true, calc_on_every_tick=true, pyramiding=0,default_qty_type=strategy.percent_of_equity,default_qty_value=100,currency=currency.USD) //INPUTS //MinDistance=input(100,'Minimum distance in ticks') Use_SL_TP=input(true,'Use stop loss and take profit?') TP=input(200,'Take Profit in ticks') SL=input(200,'Stop Loss in tiks') Doji = input(0.05, minval=0.01, title="Doji size", step=0.01) //VARIABILI body=close-open range=high-low abody=abs(body) ratio=abody/range longcandle= (ratio>0.6) //Doji data=(abs(open - close) <= (high - low) * Doji) plotchar(data, title="Doji", text='Doji', color=black) longDist= longcandle[1] and range[1]>range? high: max(high,high[1]) shortDist= longcandle[1] and range[1]>range? low: min(low,low[1]) dojilow=data==1?low:na dojihigh=data==1?high:na goStar=data==1?true:false ////////////////////////////////////////////////////////////////// //STRATEGY strategy.order("buy stop",true,stop=longDist, oca_name="Dojy Entry",when=goStar) strategy.order("sell stop",false,stop=shortDist, oca_name="Dojy Entry",when=goStar) strategy.exit("exit buy","buy stop",loss=SL, profit=TP, when=Use_SL_TP) strategy.exit("exit sell","sell stop",loss=SL,profit=TP, when=Use_SL_TP) strategy.close("buy stop",when=not Use_SL_TP and close<dojilow) strategy.exit("exit buy","buy stop",profit=TP, when=not Use_SL_TP) strategy.close("sell stop",when=not Use_SL_TP and close>dojihigh) strategy.exit("exit sell","sell stop",profit=TP, when=not Use_SL_TP)