Stop de beneficio y de perdidas a la vez

Foro dedicado a esta excelente herramienta de desarrollo e implementación de sistemas de trading
Avatar de Usuario
polxx
Mensajes: 847
Registrado: 09 Dic 2005 10:25
Ubicación: Albacete

Stop de beneficio y de perdidas a la vez

Mensaje por polxx »

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?
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.
Avatar de Usuario
cls
Mensajes: 1336
Registrado: 24 May 2007 18:46
Contactar:

Mensaje por cls »

Prueba con las variaciones de ExitLong, que es para salir de posiciones largas.
Avatar de Usuario
polxx
Mensajes: 847
Registrado: 09 Dic 2005 10:25
Ubicación: Albacete

Mensaje por polxx »

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?
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.
Avatar de Usuario
cls
Mensajes: 1336
Registrado: 24 May 2007 18:46
Contactar:

Mensaje por cls »

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?
claro Pol, si te conectas al Market Replay podrás reproducir la sesión y correr indicadores, estrategias, etc.
Avatar de Usuario
polxx
Mensajes: 847
Registrado: 09 Dic 2005 10:25
Ubicación: Albacete

Mensaje por polxx »

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.
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.

Avatar de Usuario
cls
Mensajes: 1336
Registrado: 24 May 2007 18:46
Contactar:

Mensaje por cls »

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
Avatar de Usuario
Man Apart
Mensajes: 1284
Registrado: 11 Ene 2009 12:31
Ubicación: mi ordenador

Re: Stop de beneficio y de perdidas a la vez

Mensaje por Man Apart »

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?
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.
¿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 !
Avatar de Usuario
Optiondreamer
Mensajes: 342
Registrado: 28 Mar 2006 08:07
Ubicación: 40.705571, -74.013432

Mensaje por Optiondreamer »

¿Has probado con ...?

Código: Seleccionar todo

SetProfitTarget("", CalculationMode.Percent, x);
SetStopLoss("", CalculationMode.Percent, x, false);
Avatar de Usuario
polxx
Mensajes: 847
Registrado: 09 Dic 2005 10:25
Ubicación: Albacete

Mensaje por polxx »

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.
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.
Avatar de Usuario
bolsa1
Mensajes: 1347
Registrado: 13 May 2008 09:53
Ubicación: Gallaecia

Mensaje por bolsa1 »

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!
"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.
Avatar de Usuario
Optiondreamer
Mensajes: 342
Registrado: 28 Mar 2006 08:07
Ubicación: 40.705571, -74.013432

Mensaje por Optiondreamer »

polxx escribió: Man Apart:
Ninja trader trabaja tambien al terminar cada barra, creo que todos los programas de bolsa son asi.
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.
Avatar de Usuario
Man Apart
Mensajes: 1284
Registrado: 11 Ene 2009 12:31
Ubicación: mi ordenador

Mensaje por Man Apart »

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.
Do not believe the naysayers who say it cannot be done
It can be done !
Avatar de Usuario
polxx
Mensajes: 847
Registrado: 09 Dic 2005 10:25
Ubicación: Albacete

Mensaje por polxx »

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.
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.
Avatar de Usuario
IceMan
Mensajes: 3939
Registrado: 09 Nov 2008 01:21
Ubicación: Costa Este

Mensaje por IceMan »

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
El momento lo es todo.
Avatar de Usuario
cls
Mensajes: 1336
Registrado: 24 May 2007 18:46
Contactar:

Mensaje por cls »

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.
Asegúrate de que el input "Entries per direction" es mayor que 1.
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!


Responder

Volver a “Ninja Trader”