Chiến lược này dựa trên mô hình Doji. Khi mô hình Doji xuất hiện, lệnh dừng mua được đặt giữa mức cao của Doji và mức cao của nến trước đó, và lệnh dừng bán được đặt giữa mức thấp của Doji và mức thấp của nến trước đó. Khi giá kích hoạt các lệnh dừng, bạn có thể chọn thoát với lỗ dừng cố định và kiếm lợi nhuận, hoặc sử dụng giá cao nhất và thấp nhất của mô hình Doji như dừng lỗ và kiếm lợi nhuận. Chiến lược này hoạt động tốt trên các khung thời gian cao hơn như hàng ngày và hàng tuần để lọc tiếng ồn.
Khi một mô hình Doji xuất hiện, nó chỉ ra một sự thay đổi trong mối quan hệ cung và cầu, với các lực trở nên cân bằng hơn, có thể dẫn đến sự đảo ngược giá. Chiến lược này tận dụng tín hiệu đảo ngược giá do Doji chỉ ra để nắm bắt cơ hội thông qua lệnh dừng. Cụ thể, các tiêu chí để xác định mô hình Doji là:
body=close-open
range=high-low
abody=abs(body)
ratio=abody/range
data=(abs(open - close) <= (high - low) * Doji)
Nếu abs ((open-close) <= (high-low) * Doji tham số, nó được coi là một mô hình Doji, và lệnh dừng sẽ được đặt.
longDist= longcandle[1] and range[1]>range? high: max(high,high[1])
shortDist= longcandle[1] and range[1]>range? low: min(low,low[1])
Nếu cơ thể của nến trước đó lớn, lệnh mua dừng được đặt giữa mức cao của Doji và mức cao của nến trước đó. Nếu nến trước đó có cơ thể nhỏ, lệnh mua dừng được đặt ở mức cao của Doji. Lệnh bán dừng theo cùng một logic.
Có hai lựa chọn để ra ngoài:
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)
Những lợi thế của chiến lược này là:
Có một số rủi ro với chiến lược này:
Một số cách để tối ưu hóa chiến lược:
Hiệu suất tổng thể của chiến lược này là tốt. Bằng cách nắm bắt các cơ hội đảo ngược giá Doji, nó có thể tạo ra các tín hiệu giao dịch tốt. Cũng đơn giản để thực hiện và áp dụng trên nhiều công cụ. Với việc thử nghiệm và tối ưu hóa liên tục, bạn có thể mong đợi kết quả tốt hơn.
/*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)