Página 1 de 1

Salidas estrategia NT

Publicado: 08 Jul 2016 20:57
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

Re: Salidas estrategia NT

Publicado: 09 Jul 2016 21:04
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

Re: Salidas estrategia NT

Publicado: 10 Jul 2016 09:55
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.

Re: Salidas estrategia NT

Publicado: 10 Jul 2016 09:59
por agtlgtar
Al final del todo no se ha escrito un tercer } que cerraría toda la entrada 3.

Re: Salidas estrategia NT

Publicado: 10 Jul 2016 10:07
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).

Re: Salidas estrategia NT

Publicado: 11 Jul 2016 08:38
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

Re: Salidas estrategia NT

Publicado: 14 Jul 2016 15:32
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.

Re: Salidas estrategia NT

Publicado: 14 Jul 2016 17:39
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.

Re: Salidas estrategia NT

Publicado: 15 Jul 2016 19:48
por agtlgtar
Ok, gracias.