Estrategia de ruptura baja alta de la sesión asiática

El autor:¿ Qué pasa?, Fecha: 2024-03-29 17:12:49
Las etiquetas:

img

Resumen general

La idea principal de esta estrategia es utilizar los puntos altos y bajos de la sesión asiática como puntos de ruptura. Dentro de unas pocas horas después de la apertura de los mercados europeos y estadounidenses, si el precio se rompe por encima del máximo de la sesión asiática, va largo; si se rompe por debajo del mínimo de la sesión asiática, va corto.

Principio de la estrategia

  1. Determina la hora de negociación de la sesión asiática.
  2. Durante la sesión asiática, registra los precios más altos y más bajos del día.
  3. En un momento determinado (horas de desplazamiento definidas por el usuario) después de la apertura de los mercados europeos y estadounidenses, si el precio se rompe por encima del máximo de la sesión asiática, vaya largo; si se rompe por debajo del mínimo de la sesión asiática, vaya corto.
  4. Configure stop loss y take profit. El número de puntos para stop loss y take profit se puede personalizar.
  5. Sólo abrir una nueva operación por día, con un máximo de 100.000 posiciones simultáneas.
  6. Si ya se ha abierto una posición para el día, no se abrirán nuevas operaciones.

Análisis de ventajas

  1. Utilizando las características relativamente tranquilas de la sesión asiática y utilizando los puntos altos y bajos de la sesión asiática como puntos de ruptura, puede capturar mejor las oportunidades de tendencia de las sesiones europea y estadounidense.
  2. El establecimiento de stop loss y take profit puede controlar eficazmente el riesgo, permitiendo que las operaciones rentables se ejecuten y deteniendo rápidamente las pérdidas en las operaciones no rentables.
  3. La limitación a una sola operación por día y a un número máximo de posiciones simultáneas puede evitar el exceso de operaciones y el uso excesivo de fondos.
  4. Los usuarios pueden establecer con flexibilidad parámetros como el tiempo de sesión asiático y las horas de desplazamiento de acuerdo con sus propias necesidades.

Análisis de riesgos

  1. Los puntos altos y bajos de la sesión asiática pueden no ser los verdaderos puntos altos y bajos del día.
  2. El punto fijo de stop loss y take profit puede no ser capaz de hacer frente a las grandes fluctuaciones en el mercado.
  3. En situaciones en las que la tendencia no es obvia o la volatilidad del mercado es alta, la estrategia puede experimentar frecuentes pérdidas de apertura y detención.

Dirección de optimización

  1. Considerar el ajuste dinámico del número de puntos de stop loss y take profit basados en indicadores de volatilidad como ATR para adaptarse a las diferentes condiciones del mercado.
  2. Añadir algunos indicadores de juicio de tendencia, como MA, y sólo ir largo cuando la tendencia grande es hacia arriba y ir corto cuando está hacia abajo para mejorar la tasa de éxito.
  3. Considere establecer diferentes parámetros para diferentes períodos de tiempo, como el uso de un stop loss y take profit más pequeños al comienzo de las sesiones de negociación europeas y americanas, y aumentar el stop loss y take profit cuando la tendencia es obvia.

Resumen de las actividades

Esta estrategia utiliza los puntos altos y bajos de la sesión asiática como puntos de ruptura para la negociación y es adecuada para su uso en variedades con tendencias obvias en los mercados europeo y estadounidense. Sin embargo, los métodos de stop loss y take profit de punto fijo y los métodos de entrada de ruptura estándar también tienen algunas limitaciones. Al introducir algunos indicadores dinámicos y basados en tendencias, la estrategia puede optimizarse para obtener mejores resultados.


/*backtest
start: 2024-02-27 00:00:00
end: 2024-03-28 00:00:00
period: 1h
basePeriod: 15m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=4
strategy("Asia Session", overlay=true)

var hourSessionStart = input(19, "Asia session start hour", minval=0, maxval=23)
var hourSessionStop  = input(1, "Asia session end hour", minval=0, maxval=23)
var offsetHours = input(3, "Offset hours after Asia session end")

var float hi              = na
var float lo              = na
var float plotHi          = na
var float plotLo          = na

var bool  inSession       = na
var bool  enteringSession = na
var bool  exitingSession  = na

inSession       := (hour >= hourSessionStart or hour < hourSessionStop)
enteringSession := inSession and not inSession[1]
exitingSession  := not inSession and inSession[1]

if enteringSession
    plotLo := na
    plotHi := na

if inSession
    lo := min(low,  nz(lo, 1.0e23))
    hi := max(high, nz(hi))

if exitingSession
    plotLo := lo
    plotHi := hi
    lo     := na
    hi     := na

bgcolor(inSession ? color.blue : na)

plot(plotLo, "Asia session Low",  color.red,   style=plot.style_linebr)
plot(plotHi, "Asia session High", color.green, style=plot.style_linebr)

// Implementazione delle condizioni di entrata
var float asiaSessionLow = na
var float asiaSessionHigh = na
var int maxTrades = 100000 // Impostiamo il massimo numero di operazioni contemporanee
var int tradesOpened = 0 // Variabile per tenere traccia del numero di operazioni aperte
var bool tradeOpened = false
var bool operationClosed = false // Nuova variabile per tenere traccia dello stato di chiusura dell'operazione

// Calcolo del range asiatico
if (inSession)
    asiaSessionLow := lo
    asiaSessionHigh := hi

// Apertura di un solo trade al giorno
if (enteringSession)
    tradeOpened := false

// Condizioni di entrata
var float stopLoss = 300 * syminfo.mintick
var float takeProfit = 300 * syminfo.mintick

if (not tradeOpened and not operationClosed and close < asiaSessionLow and tradesOpened < maxTrades and hour >= hourSessionStop + offsetHours)
    strategy.entry("Buy", strategy.long)
    tradeOpened := true
    tradesOpened := tradesOpened + 1 // Incrementiamo il contatore delle operazioni aperte

if (not tradeOpened and not operationClosed and close > asiaSessionHigh and tradesOpened < maxTrades and hour >= hourSessionStop + offsetHours)
    strategy.entry("Sell", strategy.short)
    tradeOpened := true
    tradesOpened := tradesOpened + 1 // Incrementiamo il contatore delle operazioni aperte

// Impostazione dello stop loss e del take profit
strategy.exit("Stop Loss / Take Profit", "Buy", stop=close - stopLoss, limit=close + takeProfit)
strategy.exit("Stop Loss / Take Profit", "Sell", stop=close + stopLoss, limit=close - takeProfit)


Más.