Limitar el maximo numero de ordenes al día MT4

Foro para cuestiones generales sobre la plataforma MetaTrader 4.

Limitar el maximo numero de ordenes al día MT4

Notapor baltic46 » 06 Feb 2015, 21:27

Hola a tod@s, la velita de antes de ayer por la noche del dax me ha activado una secuencia de ordenes seguidas en el EA, nada grave por suerte, ahora el riesgo de que ocurra ha bajado, pero aun existe y no me gusta nada, la pregunta que me hago es conoceis alguna forma de limitar la cantidad de ENTRADAS de ordenes por día digamos a 2, sin que deje de ejecutar las que tengan T profits y que ya estan en el mercado.
Saludos y gracias
baltic46
 
Mensajes: 57
Registrado: 21 Jul 2014, 18:40
Ubicación: TENERIFE
Karma: 0

Re: Limitar el maximo numero de ordenes al día MT4

Notapor MF1Forex » 07 Feb 2015, 07:30

Hola baltic46!
Desde mi ignorancia de estudiante de MQL4, lo que haría es que al primer tick de apertura de las 8:00 del DAX, el programa hiciera un bucle con valor de 2.

Luego crear un operador condicional que cuando haya dado esas 2 vueltas, cierre la salida del OrderSend.
Así que aunque el programa le mande mensajes contínuos de poner órdenes, en la expresión definitiva del OrderSend lo limitará a las 2 primeras por dia que le llegarán.

También dejaría correr las activas del dia anterior.
Al dia siguiente a las 8:00, haría un reset del bucle a 0 y de nuevo limitaría en nº de órdenes a 2.
Lo que para que eso funcione tu EA tiene que estar en marcha a las 8:00, ya que eso "la hora" sería el activador.
Saludos.
Avatar de Usuario
MF1Forex
 
Mensajes: 1078
Registrado: 02 Dic 2013, 10:54
Ubicación: Cyberdyne Systems
Karma: 13

Re: Limitar el maximo numero de ordenes al día MT4

Notapor baltic46 » 07 Feb 2015, 17:19

Gracias por el aporte, lo intetaré esta noche a ver que sale, también había pensado hacer un recuento de órdenes que estén dentro, y filtrarlas por la fecha y hacer la limitación con un condicionante a un máximo de 2 por día.
Saludos
baltic46
 
Mensajes: 57
Registrado: 21 Jul 2014, 18:40
Ubicación: TENERIFE
Karma: 0

Re: Limitar el maximo numero de ordenes al día MT4

Notapor MF1Forex » 07 Feb 2015, 22:03

Si sabes hacerlo por fecha creo que aún es mejor.
No se si se puede extraer la fecha del ticket del OrderSend de las órdenes ya colocadas, yo no lo se hacer.

Si te sale bien, podrias colocar aqui esa parte del código... será de interés para los que aprendemos.
Un saludo.
Avatar de Usuario
MF1Forex
 
Mensajes: 1078
Registrado: 02 Dic 2013, 10:54
Ubicación: Cyberdyne Systems
Karma: 13

Re: Limitar el maximo numero de ordenes al día MT4

Notapor baltic46 » 08 Feb 2015, 19:02

La posible solución al problema la he planteado de la siguiente forma, para el dax que empieza a las 8:00 y termina a las 22:00. Se hace un recuento de órdenes totales a las 8:00 mediante OrdersTotal(), se le asigna una variable a ese valor, cada vez que se llame a meter una orden se le pone un condicionante de que la OrdersTotal() sea <=al número de órdenes por día+ la propia variable que ha guardado la cantidad de órdenes a las 8:00

8:00. Variableordenestotales= OrdersTotal()

If( Orderstotal()<=variableordenestotales+2)
Llamamos a Largos

Y con esto creo que se limitan.

Saludos
baltic46
 
Mensajes: 57
Registrado: 21 Jul 2014, 18:40
Ubicación: TENERIFE
Karma: 0

Re: Limitar el maximo numero de ordenes al día MT4

Notapor MF1Forex » 09 Feb 2015, 07:51

Me parece bien... lo que no doy es con lo de poner la hora en una variable para que pregunte si es >= a 8:00.
He probado con Hour, TimeCurrent, TimeLocal y no me sale en BackTest.
Avatar de Usuario
MF1Forex
 
Mensajes: 1078
Registrado: 02 Dic 2013, 10:54
Ubicación: Cyberdyne Systems
Karma: 13

Re: Limitar el maximo numero de ordenes al día MT4

Notapor baltic46 » 09 Feb 2015, 16:15

El MT4 generalmente actúa cuando se produce un tick, por lo que las 8:00:00 es difícil de pillarlo, lo que puedes hacer son dos formas, una es utilizar la función OnTime que realiza cálculos cada segundo y otra que es como lo hago yo es darle margen para calcular lo de las 8:00, a ver si lo explico, utilizo en la función Start() que se calcula a cada tick una variable que la llamo lahoradecimal y que es double, esta variable utiliza 3 variables más una llamada labora=hour(), otra elminutodecimal=minute()/100, y otra llamada elsegundodecimal=Secods()/10000, de forma que lahoradecimal=lahora+elminutodecimal+elsegundodecimal de forma que las 8:00:00 sería la horadecimal= 8.0000 y las 8 y 15 segundos sería lahoradecimal=8.0015. Para hacer el recuento de órdenes a las 8:0000 le pongo el condicionante que eso lo haga cuando laboradecimal>=8 y labora decimal<=8.0015 de forma que garanticemos que en esos 15 segundos se produce un tick y poder hacer el recuento de órdenes, eso si cuando metas órdenes debes de pedirle al EA que las haga después de las 8:0015
Es un poco a lo bruto pero yo soy bastante novato en MT4 pero a mi me funciona :)
Existen otras formas más elegantes como cuando se produzca un chartevent pero no he investigado por ese lado.

En tu caso que le has puesto hour()>=8 te va a calcular las órdenes totales en cada tick que se de entré las 8:00 y las 8:5959 y es una hora de margen debes de limitar con un <= para utilizar un intervalo de tiempo con 10-15 seg vas sobrado
Saludos
baltic46
 
Mensajes: 57
Registrado: 21 Jul 2014, 18:40
Ubicación: TENERIFE
Karma: 0

Re: Limitar el maximo numero de ordenes al día MT4

Notapor cdtrader » 09 Feb 2015, 17:05

chicos, escribi el codigo de una forma de fijarse cuantas ordenes hay, lo hice como subprograma, para que simplemente coloquen antes de OrderSend en sus EA el codigo

if(Cuenta_ordenes( ... )< "el numero que quieran") OrderSend(...);


espero les sea util
Adjuntos
Cuenta Ordenes.mq4
(2.48 KiB) 483 veces
Imagen
Avatar de Usuario
cdtrader
 
Mensajes: 1428
Registrado: 23 Ago 2014, 13:47
Karma: 17

Siguiente

Volver a MetaTrader 4

¿Quién está conectado?

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

cron