Stop de beneficio y de perdidas a la vez
Stop de beneficio y de perdidas a la vez
Estamos comprados y queremos aplicar un stop de beneficio en % y otro stop de perdidas diferente en % tambien, asi que pongo esto:
if (Position.MarketPosition == MarketPosition.Long)
{
EnterShortLimit(DefaultQuantity, (Position.AvgPrice) * (1 + StopBeneficio), "");
EnterShortStop(DefaultQuantity, (Position.AvgPrice) * (1 - StopPerdida), "");
}
Sin embargo solo se aplica el primero de ellos, el limitado de beneficio. Pero si los intercambio entonces solo se aplica el de stop de perdidas.
Como hago para aplicar ambos a la vez?
if (Position.MarketPosition == MarketPosition.Long)
{
EnterShortLimit(DefaultQuantity, (Position.AvgPrice) * (1 + StopBeneficio), "");
EnterShortStop(DefaultQuantity, (Position.AvgPrice) * (1 - StopPerdida), "");
}
Sin embargo solo se aplica el primero de ellos, el limitado de beneficio. Pero si los intercambio entonces solo se aplica el de stop de perdidas.
Como hago para aplicar ambos a la vez?
El camino equivocado es INVENTAR un SISTEMA ganador. El camino correcto es DESCUBRIR que hace el PRECIO, para adelantarse a el, y con eso poder hacer un sistema ganador.
Otra cosa, ¿se pueden abrir graficos y aplicarles sistemas sin estar conectado a ningun proveedor de datos? no me deja, y quizas alguna opcion pueda arreglar eos.
y si nos conectamos por market replay?
y si nos conectamos por market replay?
El camino equivocado es INVENTAR un SISTEMA ganador. El camino correcto es DESCUBRIR que hace el PRECIO, para adelantarse a el, y con eso poder hacer un sistema ganador.
claro Pol, si te conectas al Market Replay podrás reproducir la sesión y correr indicadores, estrategias, etc.polxx escribió:Otra cosa, ¿se pueden abrir graficos y aplicarles sistemas sin estar conectado a ningun proveedor de datos? no me deja, y quizas alguna opcion pueda arreglar eos.
y si nos conectamos por market replay?
He probado de distintas maneras, y he llegado a la conclusion de que cuando ninja trader se encuentra con un EnterShort... o EnterLong... el sistema termina en ese punto.
Es decir, si estamos a 2000 puntos y ponemos:
EnterLongLimit(DefaultQuantity, (1990, "");
EnterShortLimit(DefaultQuantity, (2010, "");
Solo hace caso a la primera orden.
Si el precio baja hasta 1990, se ejecuta la compra porque toca el nivel.
Pero si sube hasta 2010 antes de que toque el 1990, no hace ninguna compra, como si la segunda orden nunca la ejecutara.
Si se ponen las ordenes al reves, sucede lo contrario.
que hago mal?
tiene solucion?
Es muy importante usar ambas ordenes a la vez, tiene que poder hacerse.
Es decir, si estamos a 2000 puntos y ponemos:
EnterLongLimit(DefaultQuantity, (1990, "");
EnterShortLimit(DefaultQuantity, (2010, "");
Solo hace caso a la primera orden.
Si el precio baja hasta 1990, se ejecuta la compra porque toca el nivel.
Pero si sube hasta 2010 antes de que toque el 1990, no hace ninguna compra, como si la segunda orden nunca la ejecutara.
Si se ponen las ordenes al reves, sucede lo contrario.
que hago mal?
tiene solucion?
Es muy importante usar ambas ordenes a la vez, tiene que poder hacerse.
El camino equivocado es INVENTAR un SISTEMA ganador. El camino correcto es DESCUBRIR que hace el PRECIO, para adelantarse a el, y con eso poder hacer un sistema ganador.
el ninja sólo te permite estar largo o corto.
Si mandas una EnterLongLimit se establece que quieres ir largo y la orden prevalece sobre las siguientes a no ser que la canceles. Por lo tanto, si después mandas una EnterShortLimit no la tiene en cuenta (devuelve un null).
Creo que puedes solucionarlo utilizando dos estrategias (y a lo mejor con dos cuentas), pero no lo he probado.
Y sino lanza a mercado la que primero se toque. Es más pesado porque tienes que ir llevando la cuenta de las que se tocan pero puede hacerse.
S2
Si mandas una EnterLongLimit se establece que quieres ir largo y la orden prevalece sobre las siguientes a no ser que la canceles. Por lo tanto, si después mandas una EnterShortLimit no la tiene en cuenta (devuelve un null).
Creo que puedes solucionarlo utilizando dos estrategias (y a lo mejor con dos cuentas), pero no lo he probado.
Y sino lanza a mercado la que primero se toque. Es más pesado porque tienes que ir llevando la cuenta de las que se tocan pero puede hacerse.
S2
Re: Stop de beneficio y de perdidas a la vez
Una pregunta: No conozco Ninja T. , asi que me gustaría saber , cuantas veces se ejecuta esa sentencia , por ejemplo en V. Chart (lo único que conozco) se ejecutaría en cada "vela" del Time frame. en un gráfico de una hora p.e. se ejecutaría al final de cada hora y cada vez , o sea ocho veces al día.polxx escribió:Estamos comprados y queremos aplicar un stop de beneficio en % y otro stop de perdidas diferente en % tambien, asi que pongo esto:
if (Position.MarketPosition == MarketPosition.Long)
{
EnterShortLimit(DefaultQuantity, (Position.AvgPrice) * (1 + StopBeneficio), "");
EnterShortStop(DefaultQuantity, (Position.AvgPrice) * (1 - StopPerdida), "");
}
Sin embargo solo se aplica el primero de ellos, el limitado de beneficio. Pero si los intercambio entonces solo se aplica el de stop de perdidas.
Como hago para aplicar ambos a la vez?
¿Como funciona esto en NT ? . Lo pregunto por si se me ocurriese algo para poder ayudarte.
Do not believe the naysayers who say it cannot be done
It can be done !
It can be done !
- Optiondreamer
- Mensajes: 345
- Registrado: 28 Mar 2006 08:07
- Ubicación: 40.705571, -74.013432
¿Has probado con ...?
Código: Seleccionar todo
SetProfitTarget("", CalculationMode.Percent, x);
SetStopLoss("", CalculationMode.Percent, x, false);
CLS:
lo digo de otro modo,
if (Position.MarketPosition == MarketPosition.Flat)
{
EnterLongStop(DefaultQuantity, 2415, "");
EnterLongLimit(DefaultQuantity, 2400, "");
}
Si no tenemos posiciones abiertas, entrar largo si sube, entrar largo si baja.
Pues la segunda orden se la salta, si baja hasta 2400 no compra, pero si despues sube hasta 2415 si que compra.
Si se ponen al reves pasa lo contrario.
Man Apart:
Ninja trader trabaja tambien al terminar cada barra, creo que todos los programas de bolsa son asi.
Optiondreamer:
Hare pruebas con eso que comentas, creo que es la solucion. De todos modos sospecho que tendra limitaciones.
lo digo de otro modo,
if (Position.MarketPosition == MarketPosition.Flat)
{
EnterLongStop(DefaultQuantity, 2415, "");
EnterLongLimit(DefaultQuantity, 2400, "");
}
Si no tenemos posiciones abiertas, entrar largo si sube, entrar largo si baja.
Pues la segunda orden se la salta, si baja hasta 2400 no compra, pero si despues sube hasta 2415 si que compra.
Si se ponen al reves pasa lo contrario.
Man Apart:
Ninja trader trabaja tambien al terminar cada barra, creo que todos los programas de bolsa son asi.
Optiondreamer:
Hare pruebas con eso que comentas, creo que es la solucion. De todos modos sospecho que tendra limitaciones.
El camino equivocado es INVENTAR un SISTEMA ganador. El camino correcto es DESCUBRIR que hace el PRECIO, para adelantarse a el, y con eso poder hacer un sistema ganador.
Por cierto, SetProfitTarget y SetStopLoss pueden ser dinámicas. Me refiero a que puedes variar sus valores dependiendo del estado de la posición. Yo lo utilizo en mis sistemas.
Saludos!
Saludos!
"Mercaderes e industriales no deben ser admitidos a la ciudadanía; porque su género de vida es abyecto y contrario a la virtud."
Aristóteles.
Aristóteles.
- Optiondreamer
- Mensajes: 345
- Registrado: 28 Mar 2006 08:07
- Ubicación: 40.705571, -74.013432
Ninja tiene una propiedad booleana (CalculateOnBarClose) para calcular a cada tick o a cada barra. Por supuesto, la opción de cálculo a cada tick consume más recursos. Aunque para mí es preferible ésta, pues dentro de una vela pasan muchas cosas.polxx escribió: Man Apart:
Ninja trader trabaja tambien al terminar cada barra, creo que todos los programas de bolsa son asi.
A mi lo único que se me ocurre es:
1) si existen funciones de serie en el NT. del tipo Cerrar largos/cortos Limitada y cerrar largos/cortos stop pues utilizar estas opciones. P. ej. V.Chart las tiene y puedo lanzar ambas a la vez.. La limitada sería con el precio objetivo y el stop, pos , pos, pos, poseso
2) si no existen:
Validar en que lado del mercado estoy y si estoy mas cerca del objetivo que del stop o viceversa ; lanzar la orden en consecuencia.
1) si existen funciones de serie en el NT. del tipo Cerrar largos/cortos Limitada y cerrar largos/cortos stop pues utilizar estas opciones. P. ej. V.Chart las tiene y puedo lanzar ambas a la vez.. La limitada sería con el precio objetivo y el stop, pos , pos, pos, poseso
2) si no existen:
Validar en que lado del mercado estoy y si estoy mas cerca del objetivo que del stop o viceversa ; lanzar la orden en consecuencia.
Do not believe the naysayers who say it cannot be done
It can be done !
It can be done !
bolsa1:
te refieres a tener distintos profit target y stop loss dependiendo de si estamos comprados o vendidos??
man apart:
El punto 1 que comentas es el problema, existen las mismas ordenes que en visual chart, pero no pueden aplicarsen 2 a la vez.
El punto 2 que comentas seria la solucion.
De todos modos la cosa aqui es usar SetProfitTarget y SetStopLoss, que son para eso precisamente.
Gracias a todos por la ayuda.
te refieres a tener distintos profit target y stop loss dependiendo de si estamos comprados o vendidos??
man apart:
El punto 1 que comentas es el problema, existen las mismas ordenes que en visual chart, pero no pueden aplicarsen 2 a la vez.
El punto 2 que comentas seria la solucion.
De todos modos la cosa aqui es usar SetProfitTarget y SetStopLoss, que son para eso precisamente.
Gracias a todos por la ayuda.
El camino equivocado es INVENTAR un SISTEMA ganador. El camino correcto es DESCUBRIR que hace el PRECIO, para adelantarse a el, y con eso poder hacer un sistema ganador.
A unas malas puedes hacer lo siguiente.
Metes tu orden y le aplicas el take profit.
Donde tenías pensado poner el stop, le pones una orden condicionada y contraria.
Si toca el stop de beneficios o take profit, se cierra.
Si toca la orden contraria te neutraliza la equity, cierras las dos y te quedas igual, pagando el spread de la orden que hace una suerte de stop.
Sólo tienes el inconveniente de dejar la ope descuidada, que te salte el take profit y no te anules la contraria, con lo que podría entrar y no estarías cubierto.
Es más sencillo de lo que parece así explicado.
:smt069I
Metes tu orden y le aplicas el take profit.
Donde tenías pensado poner el stop, le pones una orden condicionada y contraria.
Si toca el stop de beneficios o take profit, se cierra.
Si toca la orden contraria te neutraliza la equity, cierras las dos y te quedas igual, pagando el spread de la orden que hace una suerte de stop.
Sólo tienes el inconveniente de dejar la ope descuidada, que te salte el take profit y no te anules la contraria, con lo que podría entrar y no estarías cubierto.
Es más sencillo de lo que parece así explicado.
:smt069I
El momento lo es todo.
Asegúrate de que el input "Entries per direction" es mayor que 1.polxx escribió:CLS:
lo digo de otro modo,
if (Position.MarketPosition == MarketPosition.Flat)
{
EnterLongStop(DefaultQuantity, 2415, "");
EnterLongLimit(DefaultQuantity, 2400, "");
}
Si no tenemos posiciones abiertas, entrar largo si sube, entrar largo si baja.
Pues la segunda orden se la salta, si baja hasta 2400 no compra, pero si despues sube hasta 2415 si que compra.
Si se ponen al reves pasa lo contrario.
Si está a 1 es normal que sólo te entre una orden.
S2
Si te ha gustado este hilo del Foro, ¡compártelo en redes!