[¡Archivo!] Cualquier pregunta de novato, para no saturar el foro. Profesionales, no pasen de largo. No puedo ir a ningún sitio sin ti - 4. - página 385

 
Las-tochka:

Sólo hay que transferirlos a un gráfico, establecer los parámetros y utilizar


Aunque no esto es mejor)))

Tipos de archivos


En MQL4 hay 3 tipos de archivos con código de programa: mq4, ex4 y mqh.

Los archivos de tipo mq4 son el código fuente de un programa. Los archivos de este tipo contienen los códigos fuente de todo tipo de programas (Asesores Expertos, scripts e indicadores). Para la creación de códigos de programas se utiliza el MetaEditor. Una vez completado total o parcialmente el código de un programa, puede guardarse y volver a abrirse posteriormente en este editor para realizar nuevas modificaciones. Los archivos de tipo mq4 no pueden ser utilizados para su ejecución en el terminal del cliente. Para iniciar la ejecución de un programa, éste debe ser compilado previamente. Tras la compilación del código fuente del programa, se crea un archivo con el mismo nombre y con la extensión ex4.

Un archivo ex4 es un programa compilado que está listo para su uso práctico en el terminal del cliente. Para los archivos de este tipo no se ofrece la posibilidad de editarlos. Si hay que hacer cambios en un programa, hay que dirigirse a su código fuente (archivo mq4), editarlo y volver a compilarlo. El nombre de un archivo ex4 no permite determinar el tipo de programas a los que se refiere: si es un script, un Asesor Experto o un indicador. Los archivos ex4 pueden utilizarse como archivos de biblioteca.

Los archivos de tipo mqh son archivos de inclusión. Se trata del código fuente de los bloques de programas de usuario más utilizados. Estos archivos pueden incluirse en las fuentes de los Asesores Expertos, los scripts y los indicadores personalizados en la etapa de compilación. Normalmente, los archivos incluidos contienen descripciones de las funciones que se van a importar (véanse, por ejemplo, los archivos stdlib.mqh o WinUser32.mqh) o descripciones de constantes y variables comunes (stderror.mqh y WinUser32.mqh). Por regla general, los archivos mqh se almacenan en el directorio Directory_terminal\experts\include.

Los archivos de inclusión se llaman así porque normalmente se "incluyen" en la fase de compilación al archivo fuente principal utilizando la directiva #include. A pesar de que los archivos mqh pueden contener el código fuente de un programa y de que MetaEditor los compila, no son independientes y autosuficientes, es decir, no requieren compilación para producir archivos ejecutables del tipo ex4. Los archivos .mq4 también pueden ser utilizados como archivos de inclusión, que también deben ser almacenados en terminal_directory\\Nexperts\include .

En el navegador del terminal cliente en las secciones "Asesores Expertos", "Indicadores Personalizados" y "Scripts" sólo se muestran los nombres de los archivos que tienen la extensión ex4 y se encuentran en el directorio correspondiente. Los archivos compilados en una versión anterior del MetaEditor no se inician y aparecen en gris.

También hay otros tipos de archivos que no forman un programa completo, pero que se utilizan al crear programas de aplicación. Por ejemplo, se puede compilar un programa a partir de varios archivos distintos o utilizar para ello una biblioteca creada previamente. El usuario puede crear bibliotecas de funciones de usuario para almacenar los bloques de programas de usuario más utilizados. Se recomienda almacenar las bibliotecas en el directorio terminal_experts\libraries. Los archivos mq4 y ex4 pueden utilizarse como bibliotecas. Las bibliotecas no pueden ponerse en marcha por sí solas. El uso de archivos de inclusión es preferible al uso de bibliotecas, debido al consumo adicional de recursos informáticos al llamar a funciones de biblioteca.

En la primera parte del tutorial "Introducción a la programación MQL4", nos interesaremos por los archivos de código fuente de los programas mq4 y los archivos compilados de los programas ex4.

 
¿dónde lo pongo para aplicarlo en el gráfico?
 
Las-tochka:


Encontré otra cosa curiosa, un robot, al ser probado con diferentes brokers en sus terminales mt4, da resultados de prueba diferentes por la ausencia de cotizaciones, ¡tanto uno como otro! Pero con todo esto no hay errores de desalineación en absoluto??? Estoy sorprendido.

El efecto mariposa está de cara)))

¿Qué te parece?

Creo que el probador no tiene que mostrar las ganancias/pérdidas potenciales de forma fiable, es sólo para ver si la lógica del EA está funcionando correctamente y si todos los errores matemáticos y lógicos en el código están bien.
 

BeerGod:
Думаю что тестер никоем образом не обязан достоверно показывать потенциальную прибыль/убытки, он лишь для того чтобы увидеть правильно ли рабоает логика советника, всё ли в порядке с математикой и логическими ошибками в коде.

¿Hay alguna información sobre el fondo de la cuestión?

La cuestión no es el beneficio. Para lo que sirve el probador, en mi opinión, es una herramienta, y cómo utilizarla es cosa de cada uno.


 
Myth63:
¿Dónde debo colocarlo para utilizarlo en el gráfico?


Si desea ejecutar un experto, un indicador o un script en un gráfico, basta con hacer clic con el botón izquierdo del ratón en el programa correspondiente de la barra de herramientas del navegador y arrastrarlo al gráfico.

Pero es mejor descargar el tutorial de https://book.mql4.com/ru/ en la parte inferior izquierda de la página) ¡Suerte!

 

¡Buenos días!

Utilizo un indicador que muestra MAs de otros períodos.

Si pongo un par de ellas en la ventana, ¡el terminal empieza a ralentizarse terriblemente!

Expertos, ¿cuál es el problema de la lentitud del indicador, sólo tiene 15 líneas?

Arregla quien lo entienda.

Te lo agradezco.

#property indicator_chart_window
#property indicator_buffers 1

extern double tf = 240; // Тф с какого береть МА
extern int period = 34; // Период МА
extern string _МА_ = "0--SMA 1--EMA 2--SMMA 3--LWMA";
extern int method = 2; // Метод МА
extern int price = 4; //
extern int shift = 0; //

extern string _LINE_ = "ЦВЕТ ТОЛЩИНА СТИЛЬ БАР";
extern color clr = Yellow; // Цвет линии
extern int width = 2; // Толщина линии
extern int style = 2; // Стиль линии
extern int CountBars = 500; // Количество баров отрисовки МА

datetime time_0;
double ma[];
//+------------------------------------------------------------------+
int init() {
//----
SetIndexBuffer(0, ma);
SetIndexStyle(0, DRAW_LINE, style, width, clr);
SetIndexLabel(0, "MA " + tf);
IndicatorShortName("Moving Average (" + tf + ", " + period + ")");
if (CountBars >= Bars)
CountBars = Bars;
SetIndexDrawBegin(0, Bars - CountBars + 1);
return (0);
}
//+------------------------------------------------------------------+
int start() {
//----
int cb = IndicatorCounted();
SetIndexDrawBegin(0, Bars - CountBars + 1);
int i = Bars - cb - 1;
double ctf = Period();
double r = tf / ctf;
while(i >= 0) {
int k = MathFloor(i / r);
ma[i] = iMA(Symbol(), tf, period, shift, method, price, k);
i --;
}
if (Time[0] == time_0) return (0);
time_0 = Time[0];
return (0);
}
//+------------------------------------------------------------------+

 
Myth63:
¿Dónde debo ponerlo en el gráfico?
Los expertos a los expertos en carpetas, y todos los demás tipos son similares por su nombre. Después de reiniciar el terminal, estarán disponibles en el navegador, pero estarán en gris, a diferencia de los que tienen el código fuente.
 

Hola, por favor, aconsejen: Mi problema es el siguiente: en el Asesor Experto, sólo debería haber una señal para operar (cuando los tres indicadores han cruzado sus respectivas zonas)

if(SignalType_1 && (RSI >= 35 && Stoch >= 20 && CCI >= -100)) return(+1)

Esta es la pregunta. Cómo escribir esta línea correctamente, para que sólo haya UNA señal. (Por lo demás, resulta que el Asesor Experto hace tratos según el siguiente algoritmo: RSI cruza la línea 35 - trato; STOCH cruza la línea 20 - trato; CCI cruza la línea -100 - trato; hace tres tratos)

Sólo hay UNA señal de comercio cuando los tres indicadores han cruzado sus zonas

 
artemka_1981:

Hola, por favor, aconsejen: Mi problema es el siguiente: en el Asesor Experto, sólo debería haber una señal para operar (cuando los tres indicadores han cruzado sus respectivas zonas)

if(SignalType_1 && (RSI >= 35 && Stoch >= 20 && CCI >= -100)) return(+1)

Esta es la pregunta. Cómo escribir esta línea correctamente, para que sólo haya UNA señal. (Por lo demás, resulta que el Asesor Experto hace tratos según el siguiente algoritmo: RSI cruza la línea 35 - trato; STOCH cruza la línea 20 - trato; CCI cruza la línea -100 - trato; hace tres tratos)

La señal de un acuerdo sólo se produce cuando los tres indicadores cruzan sus zonas

Pruébalo así:

bool GO = true;// глобальная переменная
//---------------------

if(GO && SignalType_1 && RSI >= 35 && Stoch >= 20 && CCI >= -100) {GO=false; return(+1);}//запретить повторный вход
//---------------
{OrderClose(.......); GO = true; }//открыть семафор при закрытии позиции.
 
DhP:

Inténtalo de esta manera:

Gracias. Lo intentaré.
Razón de la queja: