Hola. Quiero poner un stop debajo de la barra de entrada. Alguien sería tan amable de explicarme paso a paso como hacerlo?
SetStopLoss("long",CalculationMode.Price,Low[0]-2*TickSize, false);
He intentado este código pero no funciona. (NT7)
gracias.
How to Place Stop Loss below Low of Signal Bar
How to Place Stop Loss below Low of Signal Bar
Par est fortuna labori
Potest quia posse videtur
Potest quia posse videtur
- Karachiento
- Mensajes: 68
- Registrado: 17 Ago 2018 23:03
Re: How to Place Stop Loss below Low of Signal Bar
A simple vista, estas usando el low de la barra 0 para fijar es stop. Esa barra todavía no termino de formarse. Creo que el error esta ahi. Deberias usar la barra 1.
Si no es eso, no puedo ayudarte con el codigo por que no conozco NT7.
Saludos
Si no es eso, no puedo ayudarte con el codigo por que no conozco NT7.
Saludos
Re: How to Place Stop Loss below Low of Signal Bar
Buenas. Si entras a mercado, justo después (o antes, da igual) del método EnterLong escribe ese mismo SetStopLoss. Si sólo lo pones en el Initialize, que supongo que es como lo estarías haciendo, no te va a funcionar.
Si entras con limitada la cosa se complica porque no sabes en qué barra se hará el filled. Tendrías que sobrescribir el método OnExecution y ahí hacer el cálculo del stoploss.
Al entrar con limitada no podrías usar Low[1] porque ya lo has superado y el Low[0] tampoco porque supuestamente sería el propio precio del filled. Tendrías que poner un stoploss de compromiso y cuando la barra del filled cierre, recalcular el stoploss a partir de su Low. Si la orden de entrada es muy grande y trabajas con barras de poco rango puede darse la casualidad de que tengas varios filleds parciales en diferentes barras, con lo que tendrías que promediar los Lows, o coger el mínimo, o lo que sea que decidas ... Bastante más complicado que si entras a mercado.
Con entradas en stop, problemas parecidos aunque menos. Aquí sí podrías usar el Low[1] para calcular el SetStopLoss dentro del OnExecution.
S2
Si entras con limitada la cosa se complica porque no sabes en qué barra se hará el filled. Tendrías que sobrescribir el método OnExecution y ahí hacer el cálculo del stoploss.
Al entrar con limitada no podrías usar Low[1] porque ya lo has superado y el Low[0] tampoco porque supuestamente sería el propio precio del filled. Tendrías que poner un stoploss de compromiso y cuando la barra del filled cierre, recalcular el stoploss a partir de su Low. Si la orden de entrada es muy grande y trabajas con barras de poco rango puede darse la casualidad de que tengas varios filleds parciales en diferentes barras, con lo que tendrías que promediar los Lows, o coger el mínimo, o lo que sea que decidas ... Bastante más complicado que si entras a mercado.
Con entradas en stop, problemas parecidos aunque menos. Aquí sí podrías usar el Low[1] para calcular el SetStopLoss dentro del OnExecution.
S2
Re: How to Place Stop Loss below Low of Signal Bar
Gracias por la respuestas pero no logro hacerlo ni con Low[1] ni Low[0]. Este es el código. Es desesperante
EnterLongStop((High[0] + TickSize*2),"long")
SetStopLoss("long", CalculationMode.Price,(Low[1]- 2*TickSize), false);
Me lanza el stops dos ticks por debajo pero de la barra [0] o de la barra [1] pero no consigo que lo haga desde la barra de entrada.
EnterLongStop((High[0] + TickSize*2),"long")
SetStopLoss("long", CalculationMode.Price,(Low[1]- 2*TickSize), false);
Me lanza el stops dos ticks por debajo pero de la barra [0] o de la barra [1] pero no consigo que lo haga desde la barra de entrada.
Par est fortuna labori
Potest quia posse videtur
Potest quia posse videtur
Re: How to Place Stop Loss below Low of Signal Bar
Eryo, como te he comentado antes, eso te funcionará bien sólo para entradas a mercado.
Si el Low[1] vale 2630, le estás diciendo a Ninja que a partir de ahora todos los stoploss vayan a 2630. Ninja no presupone que el Low[1] que has puesto es el Low de la barra previa al filled de la entrada. Es el Low de la barra anterior a la que ordenas la nueva configuración de los stoplosses; en ese instante.
Para lo que quieres hacer no te queda otra que hacer los cálculos cuando te llegue el filled, en el OnExecution. Y ahí sí el Low[1] se referirá a la barra previa a la del filled.
Si no quieres sobrescribir el método OnExecution (es un poco avanzado), puedes pasar del SetStopLoss y colocar tú las órdenes de salida con ExitLong lo que sea.
Y si no te quieres complicar, y sólo entras una vez por posición, sin scale-in, chequea el Position.MarketPosition y cuando estés largo pon ahí el SetStopLoss. Y en vez de Low[1] usa BarsSinceEntryExecution (en NT8, en NT7 no sé cuál sería la equivalente).
S2
Si el Low[1] vale 2630, le estás diciendo a Ninja que a partir de ahora todos los stoploss vayan a 2630. Ninja no presupone que el Low[1] que has puesto es el Low de la barra previa al filled de la entrada. Es el Low de la barra anterior a la que ordenas la nueva configuración de los stoplosses; en ese instante.
Para lo que quieres hacer no te queda otra que hacer los cálculos cuando te llegue el filled, en el OnExecution. Y ahí sí el Low[1] se referirá a la barra previa a la del filled.
Si no quieres sobrescribir el método OnExecution (es un poco avanzado), puedes pasar del SetStopLoss y colocar tú las órdenes de salida con ExitLong lo que sea.
Y si no te quieres complicar, y sólo entras una vez por posición, sin scale-in, chequea el Position.MarketPosition y cuando estés largo pon ahí el SetStopLoss. Y en vez de Low[1] usa BarsSinceEntryExecution (en NT8, en NT7 no sé cuál sería la equivalente).
S2
Re: How to Place Stop Loss below Low of Signal Bar
Muchas gracias por la aclaración cls. Voy a ponerme a ello a ver si lo consigo. Alucino con la capacidad que teneis algunas personas con la informatica.
Par est fortuna labori
Potest quia posse videtur
Potest quia posse videtur
Si te ha gustado este hilo del Foro, ¡compártelo en redes!