
La idea central de esta estrategia es combinar el tiempo y el indicador ATR para establecer el momento de compra y el punto de parada. La estrategia envía una señal de compra a tiempo determinado en el momento indicado, con el precio de cierre en ese momento como precio de compra, y luego con el precio de compra más el valor de ATR como punto de parada.
La estrategia se compone principalmente de las siguientes partes:
Los parámetros de entrada: incluyen el tiempo de compra timeTrade y el parámetro ATRatrLength. timeTrade determina el tiempo de compra, mientras queatrLength determina el parámetro de ciclo ATR.
Cálculo del indicador ATR: el valor del indicador ATR se calcula según el parámetroatrLength.
Definir condiciones de compra: genera una señal de compra cuando la combinación de horas y minutos es igual a timeTrade.
Emitir instrucciones de compra: hacer más cuando cumple con los requisitos de compra y registrar el precio de compra buyprice.
Establezca un punto de parada: el punto de parada se agrega al ATR al precio de compra. El punto de parada se retira cuando el precio supera el punto de parada.
Dibujo: Dibujar una línea horizontal de parada de pérdida.
La mayor ventaja de esta estrategia es que utiliza el tiempo y el indicador ATR para confirmar doblemente el momento de compra y el punto de parada. Esto evita seguir a ciegas las compras del mercado y controla el riesgo de manera efectiva. En segundo lugar, el punto de parada establecido con ATR es dinámico y puede establecer un rango de parada razonable en función de la volatilidad del mercado.
Los principales riesgos de esta estrategia son los siguientes:
La hora de compra incorrecta puede hacer que se pierda una buena oportunidad de compra o que se compre en un mercado no deseado.
Los parámetros ATR no se ajustan correctamente, y los puntos de parada demasiado grandes o pequeños pueden afectar la eficacia de la estrategia.
No puede seguir de manera efectiva las tendencias de la línea larga, y es más adecuado para operaciones de la línea corta.
No se tiene en cuenta el análisis fundamental.
Esta estrategia puede ser mejorada en los siguientes aspectos:
La combinación de modelos multifactoriales para determinar el tiempo de compra más científico.
Optimización de la configuración de los parámetros ATR en combinación con el modelo de fluctuación.
Se ha añadido un mecanismo de seguimiento de tendencias que permite una mayor duración de las posiciones.
El análisis fundamental de las compras para determinar si el momento de la compra es razonable.
Esta estrategia es una estrategia de comercio intraday de alta frecuencia más simple e intuitiva. La idea central es utilizar el tiempo y la doble confirmación de los indicadores ATR para bloquear el momento de compra y el punto de parada. La ventaja es que el riesgo es controlado y es relativamente fácil de implementar.
/*backtest
start: 2024-01-01 00:00:00
end: 2024-01-31 23:59:59
period: 1h
basePeriod: 15m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/
//@version=5
strategy("Time-based Strategy with ATR Take Profit", overlay=true)
// Initialize take profit levels
var float takeProfitLevel = na
var float takeProfitLevelForSell = na
var float buyprice = na
var float sellprice = na
// Input for the time when the trade should be executed
tradeTime = input(0700, "Trade Execution Time (HHMM)", "Specify the time in HHMM format", group="Time Settings")
// Calculate ATR for the last 5 minutes
atrLength = input(14, "ATR Length", "Specify ATR length", group="ATR Settings")
atrValue = request.security(syminfo.tickerid, "5", ta.atr(atrLength))
// Define conditions for buy and sell
buyCondition = hour * 100 + minute == tradeTime // and strategy.position_size == 0
sellCondition = hour * 100 + minute == tradeTime // and strategy.position_size > 0
// Execute Buy and Sell orders
if (buyCondition)
strategy.entry("Buy", strategy.long)
buyprice := close
takeProfitLevel := buyprice + atrValue
strategy.exit("Take Profit BUY", from_entry="Buy", limit =takeProfitLevel)
// if (sellCondition)
// strategy.entry("Sell", strategy.short)
// sellprice := close
// takeProfitLevelForSell := sellprice -atrValue
// strategy.exit("Take Profit Sell", from_entry="Sell", limit=takeProfitLevelForSell)
// Plot horizontal lines for take profit levels
plot(takeProfitLevel, color=color.green, title="Take Profit Level (Buy)")
plot(takeProfitLevelForSell, color=color.red, title="Take Profit Level (Sell)")