Hola a todos,
He programado el siguiente sistema. Cuando lo ejecuto mediante un “Backtest” no se duplican ordenes, pero cuando lo ejecuto mediante “Traiding Automatico” en la cuenta Papertrading en algunas ocasiones se produce la duplicidad de ordenes. Concretamente se ejecutan ordenes en el mismo segundo. Os algunos ejemplos:
| Fecha |
Ticker |
Compra/Venta |
Tipo |
Cant |
Precio |
PnL |
Cambio |
Nombre |
Stop dinám. |
Versión del Sistema |
| 9:00:11 |
EKT |
Vender |
A mercado |
-328 |
8,93 € |
null |
0 => -328 |
EUSKALTEL |
null |
06/10/2016 8:53 |
| 9:00:11 |
EKT |
Vender |
A mercado |
-228 |
8,93 € |
null |
-328 => -556 |
EUSKALTEL |
null |
06/10/2016 8:53 |
| 9:00:12 |
ENG |
Vender |
A mercado |
-113 |
26,46 € |
null |
0 => -113 |
ENAGAS |
null |
06/10/2016 8:54 |
| 9:00:12 |
ENG |
Vender |
A mercado |
-13 |
26,48 € |
null |
-113 => -126 |
ENAGAS |
null |
06/10/2016 8:54 |
| 9:00:12 |
IDR |
Comprar |
A mercado |
244 |
12,28 € |
null |
0 => 244 |
INDRA A |
null |
06/10/2016 8:55 |
| 9:00:12 |
IDR |
Comprar |
A mercado |
110 |
12,27 € |
null |
244 => 354 |
INDRA A |
null |
06/10/2016 8:55 |
| 9:00:12 |
LRE |
Vender |
A mercado |
-451 |
6,53 € |
null |
0 => -451 |
LAR ESPAÑA REAL |
null |
06/10/2016 8:53 |
| 9:00:12 |
LRE |
Vender |
A mercado |
-120 |
6,54 € |
null |
-451 => -571 |
LAR ESPAÑA REAL |
null |
06/10/2016 8:53 |
| 9:00:12 |
NHH |
Vender |
A mercado |
-722 |
4,10 € |
null |
0 => -722 |
NH HOTEL |
null |
06/10/2016 8:53 |
| 9:00:12 |
NHH |
Vender |
A mercado |
-465 |
4,11 € |
null |
-722 => -1.187 |
NH HOTEL |
null |
06/10/2016 8:53 |
El código es el siguiente:
DEFPARAM CumulateOrders=false
T=time
if not onmarket then
set stop %loss 0
set stop %trailing 0
c1=Dclose(1)
a0=Dopen(0)
if a0>c1 then
sellshort 3000 cash at market
endif
set stop %loss 3
endif
if shortonmarket and T>172000 then
exitshort at market
set stop %loss 0
set stop %trailing 0
endif
El sistema se ejecuta cada 10 segundos.
¿Alguien sabe porque se pueden estar duplicando las ordenes? No ocurre siempre, solo en algunos casos.
Saludos,
En qué timeframe estás negociando esta estrategia?
Hay algo que no es bien acerca de su pérdida de la parada y de salida a 0%, no se puede trabajar de esta manera, es necesario dar valores positivos de este 2 funciones.
En primer lugar queria que el titulo del post fuese “ProOrder envia 2 ordenes al mismo tiempo” = “ProOrder send two orders at same time”.
El Timeframe de la estrategia es 10 segundos.
Las líneas de código:
set stop %loss 0
set stop %trailing 0
las pongo antes de entrar en una posición para asegurar que no halla ningún stop activo (stop loss o stop trailing) y a la salida de una posición para eliminar cualquier stop (stop loss o stop trailing). En teoría estas líneas se podrían eliminar y el resultado del código debería ser el mismo. ¿Crees que estas lineas de código pueden influir en que halla 2 ordenes de entrada simultaneas?
Saludos,
No es necesario reajustar nada acerca de la pérdida de parada vs trailing stop con estas líneas. Si yo fuera usted, comienzo a eliminar estas dos líneas y ver lo que sucede.
Buenos días Nicolas,
He eliminado las 2 lineas correspondientes a “stop loss” y “Stop trailing”, pero ahora lo que ocurre es que después de cerrar posiciones se abre nuevamente debido al “Stop Trailing”. Te adjunto un ejemplo:
| Fecha |
Ticker |
Compra/Venta |
Tipo |
Cant |
Precio |
PnL |
Cambio |
Nombre |
Stop dinám. |
| 9:00:20 |
IAG |
Vender |
A mercado |
-733 |
4,07 € |
null |
0 => -733 |
INT.AIRL.GRP |
null |
| 9:12:55 |
IAG |
Comprar |
Stop dinámico (%) |
733 |
4,01 € |
47,47 € |
-733 => 0 |
INT.AIRL.GRP |
null |
| 9:13:20 |
IAG |
Comprar |
Stop dinámico (%) |
556 |
4,01 € |
null |
0 => 556 |
INT.AIRL.GRP |
null |
DEFPARAM CumulateOrders=false
T=time
if not onmarket and T<090500 then
c1=Dclose(1)
a0=Dopen(0)
if a0>c1 then
sellshort 3000 cash at market
endif
set stop %loss 3
endif
bnf=positionperf
if bnf>0.01 and bnf<0.03 then
set stop %trailing 0.2
elsif bnf>0.03 then
set stop %trailing 0.2
endif
if shortonmarket and T>172000 then
exitshort at market
endif
Este mismo me ha pasado ejecutando el mismo programa con otros valores.
No entiendo porque ocurre esto.
Saludos,
Hola de nuevo,
Por cierto, se me ha olvidado comentar que en un valor se ha duplicado la orden (se han realizado 2 ordenes de forma simultanea, en el mismo segundo).
| Fecha |
Ticker |
Compra/Venta |
Tipo |
Cant |
Precio |
PnL |
Cambio |
Nombre |
Stop dinám. |
| 9:00:20 |
TEF |
Vender |
A mercado |
-343 |
8,73 € |
null |
0 => -343 |
TELEFONICA |
null |
| 9:00:20 |
TEF |
Vender |
A mercado |
-171 |
8,73 € |
null |
-343 => -514 |
TELEFONICA |
null |
Saludos,
Debido a las condiciones de la negociación siguen siendo ciertas, su estrategia de posición que se abra de forma continua. Los oficios son excitadas con mucha rapidez debido a la parada final% muy pequeño, creo.
Buenos días,
Hoy he vuelto a ejecutar el código anterior mediante el “Trading Automatico” de mi cuenta “Papertrading”, pero con un Timeframe de 20 seg. Aunque halla aumentado el Timeframe de 10 a 20 seg, he comprobado que las ordenes de entrada o salida se siguen duplicando. Esta duplicidad en las ordenes se produce si la orden se ejecuta parcialmente.
Como podéis ver en la imagen adjunta a las 9:00:24 se han ejecutado 2 ordenes de venta de 483 y 421 acciones. Si entro en “Historico situación órdenes” de la orden de venta de 483 acciones veo que primero se envia la orden, después se encuentra en el mercado, a continuación se ejecuta parcialmente la venta de 421 acciones, y finalmente se produce la venta de las 62 acciones restantes.
En el “Historico situación órdenes” de la orden de compra de 421 acciones, se produce el envio de la orden, después se encuentra en el mercado y finalmente se ejecuta.
En resumen, aparentemente el programa muestra que se han duplicado la orden inicial de 421 acciones. He comprobado con otros valores que siempre que la orden de entrada o salida de mercado se ejecuta parcialmente se produce una duplicidad de ordenes.
Supongo que es una problema de programación de la plataforma. ¿si ejecuto en una cuenta real también se produce este error?
Creo que debería informar directamente a este problema de impresión. Cuando se encuentra en el software, escriba CTRL + M y llenar el formulario para preguntar acerca de este problema extraño! Lo siento, no puedo ayudarle mucho aquí …