Funciones útiles de KimIV - página 3

 
KimIV:

Función ExistOrders().

Devuelve un indicador de la existencia de una orden ...

He hecho (para mí) "devolver" el número de pedidos. Inmediatamente mata 2 pájaros de un tiro (no es necesario escribir 2 funciones) - si > 0, el orden existe + podemos analizar ... Si hay "agujeros en la rejilla", la activación de las "inversiones", etc. (Aunque, la función tarda mucho en funcionar. (Es cierto que la función tarda más tiempo en ejecutarse, lo que no se justifica sólo a efectos de la declaración)

Además, me parece que es visualmente más intuitivo y, al haber asignado una variable, puedes utilizarla más

... (ExistOrders("", OP_BUYLIMIT)+ExistOrders("", OP_SELLLIMIT)) > 0 ...

que ...

... (ExistOrders("", OP_BUYLIMIT) || ExistOrders("", OP_SELLLIMIT)) ...
 
SergNF писал (а):
He hecho (para mí) una "devolución" del número de pedidos.
Habrá una función NumberOfOrders() más adelante.
 
KimIV:
zhuki escribió (a):

Muestre su versión de los retrasos entre operaciones comerciales

No hago retrasos entre las operaciones comerciales. Es decir, si necesito colocar dos o más órdenes, hago estas operaciones sin una pausa entre ellas. Sin embargo, entre los intentos de operación, que deben repetirse si hay un error al acceder al servidor, hago una pausa según las recomendaciones de los desarrolladores de MT4. Como ejemplo, puede ver cómo se implementan estas pausas en mi función SetOrder() para el comercio en línea. Se realizan diferentes pausas para diferentes errores devueltos por el servidor de comercio.



Esta función SetOrder() se utiliza para establecer órdenes pendientes. Se recomienda su uso en el comercio en línea en las cuentas de demostración y reales.


Si hay más de 20 EAs operando, siempre se produce el error 146. La función sólo es capaz de resolver el problema para unos pocos (2-4) EAs, pero, en principio, un retraso fijo no resuelve el problema...
Cuando se opera con 20 o más Asesores Expertos, es necesario arbitrar, al menos utilizando el protocolo Ethernet... Entonces cada Asesor Experto podrá entrar en el mercado cuando reciba una señal.
 
Igor, por favor, "trátame" de las funciones de cierre y modificación de pedidos. ;-)
 
Lukyanov:
Igor, por favor "trátame" con funciones para cerrar y modificar órdenes. ;-)

Sí, definitivamente... Pero primero terminaré con la función SetOrder. Ahora estoy esperando la apertura de operaciones para dar más ejemplos de cómo utilizar esta función con los registros del protocolo. El script de prueba ya está listo, pero hay que probarlo en línea.

Se prevé publicar las funciones por orden alfabético:
- BorrarPedidos
- ExistOrdersByLot
- GetLotLastOrder
- ObtenerPrecioAbiertoDePedido
- ÍndicePorBillete
- ModificarOrden
- NúmeroDePedidos
- SeleccionarPorBillete
- SelectByTicketFromHistory

Ustedes (los visitantes del hilo) pueden ajustar la secuencia de publicación con sus deseos. Pero en primer lugar voy a considerar el uso lógico de las funciones, porque muchas de ellas están conectadas entre sí. En otras palabras, las primeras en ser publicadas serán las funciones que pueden ser utilizadas en la aplicación de otras funciones, colocadas posteriormente.

 

Igor, ¡estás haciendo un buen trabajo!

Sin embargo... con tanto bagaje, y el foro y el libro, la referencia y el kodobase.
Todavía tengo preguntas candentes que a veces me da vergüenza hacer.
(Afortunadamente, soy un dummies, y no lo oculto ... pero todavía aprender ... :))

Y preguntas exactamente en esas nimiedades y matices, que permiten conectar piezas de código
...más concretamente, para garantizar que los bloques (módulos) del programa estén interconectados...

Lo comprendo, y a menudo peco de la pregunta ¿cómo?
La respuesta es, en el mejor de los casos, que sí...
Por ejemplo, el trailing stop. Y cuando se le pregunta si puede utilizar su propio ST
Cuando preguntes si puedes usar tu propia ST, la respuesta será en el mejor de los casos: en el 100% de los casos sí, en el 90% de los casos añade tu propia ST, en el 80% de los casos pregunta cuál vas a usar :)))
etc... en orden descendente...
Y cómo exactamente, letra por letra, por desgracia, no es siempre el caso.

Así que yo también esperaré con interés los posts que describan las funciones de modificación,
y quizás una aplicación más detallada de los mismos en la práctica...

 
klot писал (а):
Cuando se opera con 20 o más EAs, es necesario arbitrar, al menos utilizando el protocolo Ethernet... Entonces cada Asesor Experto puede entrar en el mercado al recibir una señal.
¿Qué quiere decir con "arbitraje"?
 
kombat писал (а):
Y las preguntas están en esas nimiedades y matices, que permiten conectar piezas de código
Más precisamente asegurando la interconexión de los bloques (módulos) del programa...

En cuanto a mis funciones, responderé a cualquier pregunta. Si puedo :-) ... Para eso está el hilo. Es decir, puedes preguntar aquí desde otros hilos en los que he puesto mis funciones sin dar explicaciones detalladas. Así que no dude en hacerlo. Este es un tema que pienso mantener durante mucho tiempo. He planificado 4 meses sólo para la publicación de artículos. Y más respuestas a las preguntas...

kombat escribió (a):
Así que yo también esperaré con impaciencia los posts con la descripción de las funciones de modificación,
y tal vez una aplicación más detallada de los mismos en la práctica...
La función ModifyOrder es universal. Se aplica tanto a las órdenes como a las posiciones. Pensaré en integrarlo en el tema lo antes posible.
 
KimIV:
klot escribió:

Cuando se opera con 20 o más Asesores Expertos, se debe arbitrar, al menos usando el protocolo Ethernet... Entonces cada Asesor Experto podrá entrar en el mercado cuando se reciba una señal.
¿Qué quiere decir con "arbitraje"?

¡Hola!
Por "arbitraje" me refiero a proporcionar un acceso garantizado al flujo de operaciones a muchos Asesores Expertos que trabajan simultáneamente. Hace tiempo me enfrenté a este problema y llegué a la conclusión de que es mejor utilizar el acceso múltiple con detección de colisiones del protocolo Ethernet.
La esencia es simple. Comprobamos si el flujo comercial está ocupado. Si el flujo está ocupado, generamos una pausa aleatoria (a partir de 1 segundo). Si el flujo comercial está libre, "enviamos" una orden inmediatamente. Cuando se opera con múltiples Asesores Expertos, cada Asesor Experto tendrá su propia pausa aleatoria y los Asesores Expertos ocuparán el hilo de negociación por turnos. No habrá conflictos entre los expertos.
Por ejemplo:
if( IsTradeContextBusy() )  Sleep(MathRand()+1000);
 
Si 10 expertos están esperando que se libere un flujo comercial (cada uno en su propio flujo independiente) qué puede pasar si por casualidad coinciden al menos 2.
Calculo y uso otros principios. Si un hilo de comercio está ocupado por alguien, los restantes EAs simplemente no funcionan (vuelven) y esto se comprueba al principio de un EA (para qué analizarlo si no se puede hacer nada de todos modos).
No lo creo, gracias.