
Está perdiendo oportunidades comerciales:
- Aplicaciones de trading gratuitas
- 8 000+ señales para copiar
- Noticias económicas para analizar los mercados financieros
Registro
Entrada
Usted acepta la política del sitio web y las condiciones de uso
Si no tiene cuenta de usuario, regístrese
gordon: It doesn't imply anything, but specifically in both C and C++ arrays are passed by reference as well (technically a pointer to the array's first element is passed, that pointer is passed by value).
Matutin: ¡Muy interesante ! Desafortunadamente, EA necesita parámetros, y a veces muchos, así que no podemos evitarlos y tenemos que tener cuidado por todas las razones mencionadas en https://www.mql4.com/go?http://www.c2.com/cgi/wiki?GlobalVariablesAreBad
Por qué no escribir en un archivo y que todos los EAs puedan leerlos.
gordon : Esta discusión es sobre variables definidas en el ámbito global (declaradas fuera de la función especial start(), init(), deinit()) y no sobre GV's... No mezcles las dos cosas.
Yo siempre digo variables de alcance global y GlobalVariables para evitar confusiones. MT4 y MT5 pueden hacer mejor usando una terminología diferente para estos.
¿Por qué resolver un problema que no existe? ¿Por qué reinventar la rueda? ¿Por qué inventar un código poco claro que sólo funcionaría en casos limitados?
Bueno, porque escribí una función que trabaja de esa manera, tiene varios promedios en movimiento en una matriz de 1 a 7, si alguno es cruzado por una línea de señal, toma el índice de la matriz*1000 + la dirección (0 para arriba, 1 para abajo) *100, esto devuelve un número de identificación único para cada orden que contiene tres informaciones.
Por ejemplo, una señal de apertura de orden con el número 3100 se crea cuando la tercera MA se cruza hacia abajo, la señal número 2000 se crea si la segunda MA se cruza hacia arriba.
Esto significa que mi función de cruce de líneas puede enviar ese número a mi función de órdenes abiertas, ya que ahora contiene 3 informaciones. en primer lugar es el número mágico, en segundo lugar ordertype = signal%1000/100 el resultado es un uno o un cero decide si debe ser una orden de venta o de compra.
entonces el número mágico contiene información sobre qué línea de MA fue cruzada para generarla en primer lugar. int MA=número mágico/1000 el resultado es un valor de 1 a 7 que corresponde al índice de la matriz original de las medias móviles
en tercer lugar, el número mágico es un identificador único para cada orden y evita que se abran múltiples órdenes debido a la repetición de señales, ya que no se permiten dos órdenes con el mismo número mágico
más adelante en el programa, si quiero realizar una operación basada en el tipo de orden que es, hago type=(magicnumber%1000)/100; si el resultado es 1, es una orden de venta, si es cero, es una orden de compra, si quiero saber qué línea de la MA creó esa orden, hago int MA=magicnumber/1000, obviamente, el interger deja de lado cualquier punto flotante y me da el índice original de la MA del 1 al 7
Pensé que esta era una forma limpia de crear más de una información recuperable y utilizable a partir de un único retorno de función.
Pues porque [...]
Eso está muy bien, pero, de nuevo, ¿por qué no hacerlo de la manera directa, universal, clara y bien aceptada? ¿Por qué tomarse tantas molestias? ¿No crees que esto es más sencillo?
No sé, supongo que eso también habría funcionado, sólo me pareció una buena idea en ese momento, principalmente porque estaba trabajando en un EA para gestionar varias estrategias de negociación diferentes al mismo tiempo, así que elaboré ese sistema para gestionar las órdenes por números mágicos en función de los criterios de negociación a los que pertenecían, así que, por ejemplo, puedes cerrar todas las órdenes de venta abiertas por un cruce de media móvil de 55 periodos independientemente de todas las demás órdenes porque 55 MA es el índice 3, los números mágicos de esas órdenes se basarían en 3000, entonces me di cuenta de que podía ir un paso más allá e incorporar el tipo de orden también, así que las órdenes de venta en esa línea de MA tienen el número mágico 3100 3101 3102, etc. esto significa que puedes identificar todas las órdenes abiertas por ese criterio de negociación, o todas las órdenes de compra abiertas por ese criterio de negociación o todas las órdenes de venta abiertas por cualquier criterio de negociación, etc. todo por el número mágico especial