Página 1 de 2
Girar en el Ninja
Publicado: 17 Jun 2008 13:08
por Jose
Hay una cosa que me viene mal a la hora de programar sistemas en el Ninja: para girar pone dos órdenes, una para cerrar la posición antigua y otra para abrir la nueva.
A mí me vendría mejor que pusiera una sola orden de dos contratos ¿se puede hacer?
Publicado: 17 Jun 2008 13:12
por DarkTemplar
.
Publicado: 17 Jun 2008 18:42
por Optiondreamer
Hola,
No uso el Nija, y como no se C# no te puedo escribir el código exacto, pero puedes hacer un procedimiento que detecte la posición que tienes abierta y ejecute una compra/venta de la cantidad de contratos abiertos x 2.
Te pongo un pseudo churrocodigo con la idea:
Variable que recoge la posicion abierta:
OI= CONTRATOS ABIERTOS * 2
Procedimiento
SUB GIRAR
If posicion=Largo then
Command("PLACE", "", "MSFT", "SELL", OI, "MARKET", 0, 0, "", "", "", "", "")
elseif posicion=Corto then
Command("PLACE", "", "MSFT", "BUY", OI, "MARKET", 0, 0, "", "", "", "", "")
END SUB
Saludos.
Re: Girar en el Ninja
Publicado: 17 Jun 2008 21:37
por cls
Jose escribió:Hay una cosa que me viene mal a la hora de programar sistemas en el Ninja: para girar pone dos órdenes, una para cerrar la posición antigua y otra para abrir la nueva.
No necesariamente.
Si entraste corto con un EnterShort. Al poner un EnterLong te cerrará todos los contratos que tengas cortos, y te abrirá los que le pongas en el EnterLong.
Jose escribió:A mí me vendría mejor que pusiera una sola orden de dos contratos ¿se puede hacer?
Según el ejemplo que he puesto, sí.
S2
Re: Girar en el Ninja
Publicado: 18 Jun 2008 00:06
por Jose
Gracias Optiondreamer. Yo de programar ni idea, empezaré a mirarlo a ver si puedo hacer algo parecido.
cls escribió:Si entraste corto con un EnterShort. Al poner un EnterLong te cerrará todos los contratos que tengas cortos, y te abrirá los que le pongas en el EnterLong.
sí, el sistema lo tengo con EnterLong y EnterShort (EnterLong cuando la cotización esté por encima de una media, y EnterShort cuando esté por debajo).
Lo que hace el ninja es poner una orden para cerrar cortos de X contratos, y otra orden para abrir largos de Y contratos, cuando a mí lo que me interesaría es que pusiera una sola orden de compra de X+Y contratos.
¿Tú has conseguido que te ponga una sola orden?
Re: Girar en el Ninja
Publicado: 19 Jun 2008 09:08
por cls
Jose escribió:Gracias Optiondreamer. Yo de programar ni idea, empezaré a mirarlo a ver si puedo hacer algo parecido.
cls escribió:Si entraste corto con un EnterShort. Al poner un EnterLong te cerrará todos los contratos que tengas cortos, y te abrirá los que le pongas en el EnterLong.
sí, el sistema lo tengo con EnterLong y EnterShort (EnterLong cuando la cotización esté por encima de una media, y EnterShort cuando esté por debajo).
Lo que hace el ninja es poner una orden para cerrar cortos de X contratos, y otra orden para abrir largos de Y contratos, cuando a mí lo que me interesaría es que pusiera una sola orden de compra de X+Y contratos.
¿Tú has conseguido que te ponga una sola orden?
Jose, creo que no te he entendido. Si estás corto y quieres ponerte largo, tendrás que cerrar los cortos (una orden) y abrir los largos (otra orden). Y el broker te cobrará la gestión de estas dos operaciones. Esto no es posible cambiarlo. El broker tiene que recibir una orden para cerrar y otra para abrir. Igual que harías en operativa discrecional. Y el Ninja tiene que enviar esas dos órdenes.
Otra cosa distinta es cómo codificar esto dentro del ninja y cuántas instrucciones de código necesitas. Como comenté en el ejemplo con una es suficiente. (Aunque internamente esta única instrucción suponga varias órdenes).
Si lo que quieres es hacer hedge. Es decir, seguir con los cortos abiertos y abrir largos para cubrir esos cortos y además sumarte al movimiento, Eso no se puede (bueno sí se puede pero no es tan fácil).
El ninja no permite en la misma cuenta estar largo y corto a la vez. Así que tendrías que trabajar con dos cuentas. Una para largos y otra para cortos. Y llevar la gestión dentro del código. Una estrategia para largos en la cuenta de largos, y otra para cortos en la cuenta de cortos.
S2
Publicado: 19 Jun 2008 10:48
por DarkTemplar
.
Publicado: 23 Jun 2008 10:26
por Jose
Suarinver ¿tú sabes programar con el Ninja? ¿Has probado si funciona la idea de Optiondreamer?
Publicado: 23 Jun 2008 11:30
por DarkTemplar
.
Publicado: 24 Jun 2008 11:26
por Jose
jeje, vale, pues un día que esté nublado lo intentas y me dices algo
Yo cuando pueda desempolvaré mi inglés para comentarlo en el foro del ninja.
Creía que era más fácil esto, se ve que lo de migrar del Visual al Ninja me va a llevar más tiempo del que pensaba

Publicado: 24 Jun 2008 12:50
por DarkTemplar
.
Publicado: 24 Jun 2008 13:26
por bolsa1
Jose escribió:Creía que era más fácil esto, se ve que lo de migrar del Visual al Ninja me va a llevar más tiempo del que pensaba

No será más tiempo del que tiramos con el Visual...
Ánimo y saludos!

Publicado: 24 Jun 2008 13:36
por Jose
cierto bolsa1, habrá que seguir intentándolo.
vaya, qué casualidad... pues ayer vimos algunas nubecillas por Santa Cruz

Publicado: 24 Jun 2008 13:41
por Optiondreamer
Me acabo de bajar el Ninja y no se si esto rulará, por si acaso, lo pruebas con el simulador, aparte de añadirlo en la estrategia que sea.
Saludos.
Código: Seleccionar todo
protected override void OnBarUpdate()
{
// Condition set 1
if (Position.MarketPosition == MarketPosition.Long)
{
EnterShort((int) (Position.MarketPosition)*2, "");
}
// Condition set 2
if (Position.MarketPosition == MarketPosition.Short)
{
EnterLong((int) (Position.MarketPosition)*2, "");
}
}
Publicado: 10 Jul 2008 16:09
por Jose
Vasha, lo he preguntado en el foro del Ninja y me dicen que no se puede.
Suarinver ¿llegaste a intentar programarlo? Que digan que no se puede no significa que sea imposible...