Strategi ini adalah berdasarkan corak Doji. Apabila corak Doji muncul, pesanan berhenti beli diletakkan antara tinggi Doji dan tinggi lilin sebelumnya, dan pesanan berhenti jual diletakkan antara rendah Doji dan rendah lilin sebelumnya. Apabila harga mencetuskan pesanan berhenti, anda boleh memilih untuk keluar dengan kerugian berhenti tetap dan mengambil keuntungan, atau menggunakan harga tertinggi dan terendah corak Doji sebagai kerugian berhenti dan mengambil keuntungan. Strategi ini berfungsi dengan baik pada jangka masa yang lebih tinggi seperti harian dan mingguan untuk menapis bunyi bising.
Apabila corak Doji muncul, ia menunjukkan perubahan dalam hubungan bekalan dan permintaan, dengan kekuatan menjadi lebih seimbang, yang boleh membawa kepada pembalikan harga. Strategi ini memanfaatkan isyarat pembalikan harga yang ditunjukkan oleh Doji untuk menangkap peluang melalui pesanan berhenti. Khususnya, kriteria untuk menentukan corak Doji adalah:
body=close-open
range=high-low
abody=abs(body)
ratio=abody/range
data=(abs(open - close) <= (high - low) * Doji)
Jika abs ((buka-tutup) <= (tinggi-rendah) * parameter Doji, ia dianggap corak Doji, dan perintah berhenti akan diletakkan.
longDist= longcandle[1] and range[1]>range? high: max(high,high[1])
shortDist= longcandle[1] and range[1]>range? low: min(low,low[1])
Jika badan lilin sebelumnya besar, pesanan berhenti beli diletakkan di antara tinggi Doji dan tinggi lilin sebelumnya. Jika lilin sebelumnya mempunyai badan kecil, pesanan berhenti beli diletakkan di tinggi Doji. Perintah berhenti jual mengikuti logik yang sama.
Terdapat dua pilihan untuk keluar:
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)
Kelebihan strategi ini ialah:
Terdapat beberapa risiko dengan strategi ini:
Beberapa cara untuk mengoptimumkan strategi:
Prestasi keseluruhan strategi ini adalah baik. Dengan menangkap peluang pembalikan harga Doji, ia dapat menghasilkan isyarat perdagangan yang baik. Juga mudah dilaksanakan dan boleh digunakan di pelbagai instrumen. Dengan ujian dan pengoptimuman berterusan, hasil yang lebih baik dapat diharapkan.
/*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)