Problema con slippage en órdenes pendientes

Espacio para compartir y debatir sobre Asesores Expertos de MetaTrader

Problema con slippage en órdenes pendientes

Notapor MiguelSgo » 11 Dic 2017, 13:51

Buenas, me ha surgido un problema con mi EA que no consigo resolver, a ver si a alguien se le ocurre una solución:

Estoy creando un EA que establece órdenes pendientes de compra y venta cada ciertos niveles. El problema está en que cuando hay un GAP, dejan de establecerse y me aparece el típico error 130.
Tengo la teoría que esto es debido al slippage establecido en mi código porque solo da error cuando hay un GAP. Esta es la línea de código que me falla:

Código: Seleccionar todo
ticketCompra[arriba+2] = OrderSend(Symbol(),OP_BUYSTOP ,0.01,abrir_compra_pendiente[arriba+2],1000000,0,0,"",1,0,clrGreen); //Abrir orden pendiente de compra.


He probado a cambiar el slippage de "0" a "1000000" y aún así no se establecen las órdenes pendientes.

¿Se os ocurre alguna idea para abrir órdenes pendientes cuando hay GAPs de por medio?

Muchas gracias de antemano.
MiguelSgo
 
Mensajes: 16
Registrado: 05 Ene 2016, 18:23
Karma: 0

Re: Problema con slippage en órdenes pendientes

Notapor cdtrader » 12 Dic 2017, 16:51

No será el tipo de orden que abres? Quizá debería ser en lugar de stop un limit

Enviado desde mi Moto G (4) mediante Tapatalk
Avatar de Usuario
cdtrader
 
Mensajes: 1428
Registrado: 23 Ago 2014, 13:47
Karma: 17

Re: Problema con slippage en órdenes pendientes

Notapor cdtrader » 12 Dic 2017, 16:51

También el lugar de 0 aveces debes poner NULL

Enviado desde mi Moto G (4) mediante Tapatalk
Avatar de Usuario
cdtrader
 
Mensajes: 1428
Registrado: 23 Ago 2014, 13:47
Karma: 17

Re: Problema con slippage en órdenes pendientes

Notapor MiguelSgo » 13 Dic 2017, 01:00

El parámetro "BUYSTOP" es correcto en mi caso ya que la orden pendiente de compra debe abrirse por encima del nivel de precio actual. Y respecto al "NULL" en el parámetro de slippage lo he probado y tampoco funciona. Aunque agradezco tus respuestas :)

Probaré a tratar el error mediante la función GetLastError() y que ejecute un OrderSend con parámetro "OP_BUY", es decir, ejecución instantánea de compra al mercado cuando detecte el GAP. No se me ocurre otra opción :mf_bookread:
MiguelSgo
 
Mensajes: 16
Registrado: 05 Ene 2016, 18:23
Karma: 0

Re: Problema con slippage en órdenes pendientes

Notapor cdtrader » 13 Dic 2017, 01:37

me referia a NULL para los valores de stop loss y take profit, sino estas poniendo esos valores como 0 en lugar de NULL (no es lo mismo dar el valor 0 que poner NULL)
Avatar de Usuario
cdtrader
 
Mensajes: 1428
Registrado: 23 Ago 2014, 13:47
Karma: 17

Re: Problema con slippage en órdenes pendientes

Notapor MiguelSgo » 13 Dic 2017, 10:19

cdtrader escribió:me referia a NULL para los valores de stop loss y take profit, sino estas poniendo esos valores como 0 en lugar de NULL (no es lo mismo dar el valor 0 que poner NULL)


Sí, he probado a poner:

Código: Seleccionar todo
ticketCompra[arriba+2] = OrderSend(Symbol(),OP_BUYSTOP ,0.01,abrir_compra_pendiente[arriba+2],1000000,NULL,NULL,"",1,0,clrGreen); //Abrir orden pendiente de compra.


y aún así no funciona
MiguelSgo
 
Mensajes: 16
Registrado: 05 Ene 2016, 18:23
Karma: 0

Re: Problema con slippage en órdenes pendientes

Notapor MiguelSgo » 14 Dic 2017, 00:11

MiguelSgo escribió:El parámetro "BUYSTOP" es correcto en mi caso ya que la orden pendiente de compra debe abrirse por encima del nivel de precio actual. Y respecto al "NULL" en el parámetro de slippage lo he probado y tampoco funciona. Aunque agradezco tus respuestas :)

Probaré a tratar el error mediante la función GetLastError() y que ejecute un OrderSend con parámetro "OP_BUY", es decir, ejecución instantánea de compra al mercado cuando detecte el GAP. No se me ocurre otra opción :mf_bookread:


Me autorespondo por si alguien le interesa saber la solución a este problema:

Código: Seleccionar todo
//Si detectas el error 130, abre una operación de compra al precio actual:
int error = GetLastError();
if(error==130){
      ticketCompra[arriba+2] = OrderSend(Symbol(),OP_BUY ,0.01,Bid,1000000,0,0,"",1,0,clrGreen); //Abrir orden pendiente de compra.
}


Solucionado!
MiguelSgo
 
Mensajes: 16
Registrado: 05 Ene 2016, 18:23
Karma: 0

Re: Problema con slippage en órdenes pendientes

Notapor FXWizard » 15 Dic 2017, 11:45

Genial MiguelSgo, gracias por compartir, muy buena solución!

Saludos,
FXWizard
Avatar de Usuario
FXWizard
 
Mensajes: 8493
Registrado: 12 Feb 2008, 15:17
Karma: 35


Volver a Expert Advisors

¿Quién está conectado?

Usuarios navegando por este Foro: No hay usuarios registrados visitando el Foro y 0 invitados