Esta estrategia se basa en el patrón Doji. Cuando aparece un patrón Doji, se coloca una orden de stop de compra entre el máximo del Doji y el máximo de la vela anterior, y una orden de stop de venta se coloca entre el mínimo del Doji y el mínimo de la vela anterior. Cuando el precio activa las órdenes de stop, puede elegir salir con stop loss fijo y obtener ganancias, o usar el precio más alto y más bajo del patrón Doji como stop loss y obtener ganancias. Esta estrategia funciona bien en marcos de tiempo más altos como diarios y semanales para filtrar el ruido.
Cuando aparece un patrón Doji, indica un cambio en la relación de oferta y demanda, con fuerzas que se vuelven más equilibradas, lo que puede conducir a una inversión de precios.
body=close-open
range=high-low
abody=abs(body)
ratio=abody/range
data=(abs(open - close) <= (high - low) * Doji)
Si abs ((abierto-cerrado) <= (alto-bajo) * Parámetro Doji, se considera un patrón Doji y se colocarán órdenes de parada.
longDist= longcandle[1] and range[1]>range? high: max(high,high[1])
shortDist= longcandle[1] and range[1]>range? low: min(low,low[1])
Si el cuerpo de la vela anterior es grande, la orden de compra se coloca entre el máximo del Doji y el máximo de la vela anterior. Si la vela anterior tiene un cuerpo pequeño, la orden de compra se coloca en el máximo del Doji. La orden de venta sigue la misma lógica.
Hay dos opciones para las salidas:
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)
Las ventajas de esta estrategia son:
Hay algunos riesgos con esta estrategia:
Algunas maneras de optimizar la estrategia:
El rendimiento general de esta estrategia es bueno. Al capturar las oportunidades de reversión del precio de Doji, puede generar señales comerciales decentes. También es simple de implementar y aplicable a múltiples instrumentos. Con pruebas y optimizaciones continuas, se pueden esperar mejores resultados.
/*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)