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
Y luego hay que buscar a qué se refieren esos cuatro paréntesis de la parte inferior.
Por cierto, me pone muy nervioso cuando el anidamiento es de más de dos niveles. Intento no escribirlo nunca así, repartiendo el código en funciones.
E incluso cuando hay dos niveles de anidación - asegúrese de escribir comentarios después de cada corchete de cierre - que bloque entierra (por ejemplo, la cabecera del bucle duplicado).
En cuanto al estilo, aquí está mi código para seleccionaruna posición de la historia para MT5 (por un mago especificado, símbolo, con un rango de fechas especificado):
La propia clase historia es descendiente de la interfaz abstracta CTradeHistoryI:
Seleccionando el historial requerido - puede recalcular sus componentes (posiciones para MT5 u órdenes para MT4), y obtener una interfaz para cualquier componente como una interfaz abstracta:
Para MT4 - hay clases de historia correspondientes también heredadas de estas interfaces - así, al mismo tiempo, se proporciona la multiplicidad de plataformas - un EA no necesita averiguar donde trabaja, todo el trabajo con la historia se hace a través de las interfaces abstractas.
No escriba funciones que sean siempre constantes y nunca cambien en este estilo
Escríbalos de forma concisa, de todas formas nadie los mira y ocupan la mitad de líneas
Dado que estas funciones no cambian, ¿por qué has puesto un montón de corchetes innecesarios? Quítalos y todo se comprimirá. Porque tu ejemplo parece absurdo: tú mismo has desdibujado el código y luego te inventas muletas para reducirlo.
Estoy de acuerdo, se pueden recortar 3 líneas más, y acortar el código, pero el propósito no era poner el código al uso, de hecho ni siquiera es mío, sino acortar, y esas funciones se pueden poner cinco en una pantalla, no una. Después, los programas son más fáciles de leer y no hay que desplazarse 150 veces. Y el peso del archivo disminuye.
Buen trabajo, me gusta, pero no me gusta la POO e intento prescindir de ella. No me gustan los procesadores con división de hilos (por ejemplo, 4 núcleos y 8 hilos). Hay que tener claro que la división y cualquier virtualización es una pérdida de rendimiento y de tiempo de máquina para su implementación, ya sea la división de hilos en el kernel o la virtualización de funciones en el código.
Estoy de acuerdo, se pueden recortar 3 líneas más, y acortar el código, pero el propósito no era poner el código a usar, ni siquiera es mío de hecho, sino acortarlo, y se pueden poner cinco funciones de este tipo en una pantalla, no una. Después, los programas son más fáciles de leer y no hay que desplazarse 150 veces. Y el peso del archivo se reduce.
Sinceramente.
Pantalla de trabajo de 27".
No voy a releerlo, me limitaré a citarlo: "No escribas funciones que sean siempre constantes y nunca cambien en ese estilo"
¿Por qué elegir los ojos sobre una función que se escribe una vez cuando se lanza la plataforma y que nunca cambiará en el futuro? ¿Sueles cambiar/editar el código en las funciones para obtener el tamaño del lote, el número de órdenes y lo típico? Entonces, ¿por qué extenderlo a través de 3 pantallas de un monitor de 32"?
P.D. El código adjunto está forjado en kodobase.
Contrapregunta ))) Tengo tales funciones están en el archivo MyFunc.mqh, no veo el más mínimo sentido en la compresión de la misma. ¿Por qué, para ahorrar 10-20 KB en el disco? Y francamente hablando, tal codestream me enferma ))
Contrapregunta ))) Tengo dichas funciones en el archivo MyFunc.mqh, no le veo el menor sentido a comprimirlo. ¿Por qué, para ahorrar 10-20 KB en el disco? Para ser honesto, este codestream me pone enfermo )).
En cuanto a mí, el código debe ser claro, corto, rápido de trabajar y debe funcionar en todas las condiciones sin errores.
Sinceramente.
Contrapregunta ))) Tengo dichas funciones en el archivo MyFunc.mqh, no le veo el menor sentido a comprimirlo. ¿Por qué, para ahorrar 10-20 KB en el disco? Y francamente hablando, tal codestino me pone enfermo ))
Así que cuenta: 1000 EAs x 10 Kb = 10 Mb - ya tienes que pensar en economizar ))
Contrapregunta ))) Tengo dichas funciones en el archivo MyFunc.mqh, no le veo el menor sentido a comprimirlo. ¿Por qué, para ahorrar 10-20 KB en el disco? Y francamente hablando, tal codestream me enferma ))
Yo también, pero hace tiempo llegué a la conclusión de que el código debe ser compacto en lugares donde nunca se mire, donde nunca se corrija ni se corregirá.
La dispersión del código de usuario con todas estas ranuras es un dolor de cabeza adicional, porque tendrá que arrastrar y soltar los archivos en diferentes terminales o compartirlos. Por supuesto, puedes transferir los includniks a todos los terminales, pero si cambias o añades algo en un terminal, entonces todos ellos deben ser reemplazados por uno nuevo.
Los Asesores Expertos y los indicadores son tan pequeños que no tiene sentido alejarlos del cuerpo del programa. Para ser más correctos, no son pequeños, son de un solo archivo, no es como un sitio con 10 000 páginas donde no se puede prescindir de clases e inludes. Además, ahora hay estructuras, y son suficientes para escribir un código compacto y 100% viable.
Por cierto, me pone muy nervioso cuando el anidamiento es de más de dos niveles. Intento no escribirlo nunca así, repartiendo el código en funciones.
E incluso cuando hay dos niveles de anidación - asegúrese de escribir los comentarios después de cada paréntesis de cierre, que el bloque que entierra (por ejemplo, la cabecera del bucle duplicado).
En cuanto al estilo, aquí está mi código para seleccionar laposición de la historia para MT5 (por magik especificado, símbolo, con rango de fechas especificado):
La propia clase historia es descendiente de la interfaz abstracta CTradeHistoryI:
Seleccionando el historial requerido - puede recalcular sus componentes (posiciones para MT5 u órdenes para MT4), y obtener una interfaz para cualquier componente como una interfaz abstracta:
Para MT4 existen las correspondientes clases de historial que también heredan de estas interfaces - así al mismo tiempo se proporciona la multiplicidad de plataformas - el Asesor Experto no necesita averiguar donde trabaja, todo el trabajo con el historial se realiza a través de interfaces abstractas.
Se ve bien, ¿podemos ver también TRACE_*** y ASSERT?
Para arrastrar y soltar un archivo a otro terminal, o para compartirlo, es necesario arrastrar no sólo un archivo, sino varios. Por supuesto, puede transferir las inluencias a todos los terminales, pero si cambia o añade algo en un terminal, deberá sustituirlo por uno nuevo en todos los terminales.