Salidas estrategia NT

Foro dedicado a esta excelente herramienta de desarrollo e implementación de sistemas de trading
Responder
agtlgtar
Mensajes: 28
Registrado: 23 Jun 2016 13:23

Salidas estrategia NT

Mensaje por agtlgtar »

Hola.
Estoy haciendo correr una estrategia en NT. Tiene dos entradas largas (1 y 2) con su signal name cada una. Cada una tiene su SetProfit y su SetStop con sus correspondientes fromEntrySignal.
A pesar de ello, de continuo se producen entradas tipo1, p.e. y cierres de la operación con un Set tipo 2.
Además de que cada entrada+Setprofit+SetStop está con sus { }
¿Os ha pasado?¿Sabeis solucionarlo?
Gracias por adelantado
Avatar de Usuario
cls
Mensajes: 1336
Registrado: 24 May 2007 18:46
Contactar:

Re: Salidas estrategia NT

Mensaje por cls »

Hola,
en algún sitio tiene que haber un error. Prueba a volcar la info del OnExecution y del OnOrderUpdate con Prints para ver qué ordenes se ejecutan, y cómo van cambiando su status. Y pon el TraceOrder = true.
Busca cancelaciones de órdenes. Y ahí puede estar la causa.

Saludos
agtlgtar
Mensajes: 28
Registrado: 23 Jun 2016 13:23

Re: Salidas estrategia NT

Mensaje por agtlgtar »

Gracias por tu respuesta. No tengo incluídos estos 2 métodos en las estrategias. Después de Initialize, todo está puesto en OnBarUpdate. Veo que no lo puedo explicar sin tenerme que extender. Espero no pasarme:
Además de 2 entradas largas (1 y 2), hay 2 entradas cortas (3 y 4). Así, p.e., a1es3 es estrategia a1 entrada short nº3.
{
if...
{
Print("a1es3");
this.EnterShortLimit(Close[0],"a1es3");
entry = Close[0];
}

if (Position.MarketPosition == MarketPosition.Flat)
{
SetProfitTarget(CalculationMode.Ticks, profittargetticks); //definidos en variables e Initialize
}
else if (Position.MarketPosition == MarketPosition.Short)
{
if ( Close[0]>=this.ParabolicSAR
{
Print("a1sp3");
SetProfitTarget("a1es3",CalculationMode.Price,Close[0]); }
}
if (Position.MarketPosition == MarketPosition.Flat)
{
SetStopLoss(CalculationMode.Ticks, stoplossticks);
}
else if (Position.MarketPosition == MarketPosition.Short)
{
if (Close[0]>= (entry+9*TickSize))
{
Print("a1ss3");
SetStopLoss("a1es3",CalculationMode.Price,Close[0],false); }
}
}
Y lo mismo para la operativa de la entrada 4. ¿Es posible que al detectar MarketPosition.Short envíe SetStop independientemente de si es entrada 3 ó 4 (los tenía en true y con false se repite el problema).
En output:
a1sp3
11/08/2014 14:19:32 Entered internal SetStopTarget() method: Type=Target FromEntrySignal='a1es3' Mode=Price Value=1,3393 Currency=0 Simulated=False
11/08/2014 14:19:32 Ignored internal SetStopTarget() method: Type=Target FromEntrySignal='a1es3' Mode=Price Value=1,3393 Currency=0 Simulated=False' Reason='Another SetStopTarget() method call has already submitted a stop/target order'
a1ss4
11/08/2014 14:19:32 Entered internal SetStopTarget() method: Type=Stop FromEntrySignal='a1es4' Mode=Price Value=1,3393 Currency=0 Simulated=False
La salida correcta hubiese sido a 14.19.32. Se salió en la siguiente barra a 14.28.12 (aunque esta barra cerró a 14.29.27 y está todo CalculateOnBarClose = true;)
Gracias de nuevo por tu atención y paciencia.
agtlgtar
Mensajes: 28
Registrado: 23 Jun 2016 13:23

Re: Salidas estrategia NT

Mensaje por agtlgtar »

Al final del todo no se ha escrito un tercer } que cerraría toda la entrada 3.
agtlgtar
Mensajes: 28
Registrado: 23 Jun 2016 13:23

Re: Salidas estrategia NT

Mensaje por agtlgtar »

Y en el proceso de envío tbn se ha eliminado otro } para cerrar SetProfit a1sp3 (pero creo que todo ello está bien y compilado. He copiado y pegado, estaba correcto y en el envío se han perdido esos detalles).

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

Re: Salidas estrategia NT

Mensaje por cls »

Hola agtlgtar,

Simplifica la estrategia al máximo. Y poco a poco ve aumentando su complejidad. Primero comienza con solo tipo de orden y comprueba que hace bien sus entradas y salidas. Cuando estés completamente seguro de que tu sistema no tienes errores (me refiero a errores funcionales no de compilación) añades el segundo tipo y así sucesivamente.

Si de entrada empiezas mezclando varios tipos sin estar seguro de cómo funcionan las cosas tendrás un problema serio para depurar y encontrar errores.

Cuando se programan estrategias avanzadas en imprescindible sobrescribir los métodos OnExecution, OnOrderUpdate y OnPositionUpdate, aunque sea para añadir un simple log, con el fin de llevar un seguimiento absoluto de todo lo que ocurre con las órdenes dentro de la estrategia. Si no se hace así, es prácticamente imposible encontrar la causa de los errores funcionales.

Y si controlas un poco de programación .net instala el Visual Studio (la community edition es gratis) y úsalo como debugger. Podrás detener la ejecución del sistema en cualquier barra, analizar los valores de las variables, etc. Y así encontrar la causa de los errores funcionales más fácilmente.

Saludos
agtlgtar
Mensajes: 28
Registrado: 23 Jun 2016 13:23

Re: Salidas estrategia NT

Mensaje por agtlgtar »

Gracias. Voy a intentarlo, aunque la información al respecto de NT la estoy encontrando muy confusa.
Tbn me encuentro que algún draw no se dibuja en el gráfico.
Avatar de Usuario
cls
Mensajes: 1336
Registrado: 24 May 2007 18:46
Contactar:

Re: Salidas estrategia NT

Mensaje por cls »

agtlgtar escribió:Tbn me encuentro que algún draw no se dibuja en el gráfico.
A lo mejor es por un conflicto de nombres. Cada draw tiene que tener un nombre único. Si dos objetos comparten el mismo nombre, el segundo sobrescribe al primero.
agtlgtar
Mensajes: 28
Registrado: 23 Jun 2016 13:23

Re: Salidas estrategia NT

Mensaje por agtlgtar »

Ok, gracias.
Si te ha gustado este hilo del Foro, ¡compártelo en redes!


Responder

Volver a “Ninja Trader”