2047728: Hola, he empezado a estudiar MQL4 usando videotutoriales de 2013. Estoy reescribiendo el código exactamente del video, añadiendo algunos cambios menores de otro video, como resultado tengo 25 errores. He intentado buscar la solución a estos errores, pero desde que la compilación del terminal ha cambiado y se han producido algunos cambios en la codificación. Agradeceré si alguien puede ayudarme a editar el código o al menos dar algún consejo útil, gracias de antemano.
¿Y cómo te ayuda eso? La próxima vez, ve directamente a Freelance.
Hola, he empezado a estudiar MQL4 utilizando los videotutoriales de 2013, he ido reescribiendo el código exactamente del vídeo, añadiendo algunos cambios menores de otro, según los necesito. Como resultado me salen 25 errores. He intentado buscar la solución a estos errores, pero desde que la compilación del terminal ha cambiado y se han producido algunos cambios en la codificación. Agradeceré si alguien puede ayudarme a editar el código o al menos darme algún consejo útil, gracias de antemano.
Añade los cambios uno a uno y corrige los errores - aprenderás paso a paso. Si quiere aprender el idioma, empiece con ejemplos sencillos
¡Buena tarde! Por favor, ayúdame a entender el código del indicador. Hay un nivel cero, basado en él, debe completar el primer nivel. Lo que no hago, lo que no funciona. Aquí está el código del indicador:
//+---------------------------------------------------------------------------------------------------------+//| Trend Levels.mq5 |//| Serzh |//+---------------------------------------------------------------------------------------------------------+#property copyright"Serzh"#property version"1.00"//--------------------------------Входные параметры----------------------------------------------------------#property indicator_chart_window// Индикатор отображается в окне графика#property indicator_buffers4// К-во индикаторных буферов#property indicator_plots2// К-во графических серий//--------------------------------Инициализация графических серий--------------------------------------------#property indicator_label1"Максимумы 1-го ровня"// Название индикаторной серии#property indicator_type1DRAW_ARROW// Тип линии индикатора#property indicator_color1clrDarkGreen// Цвет линии индикатора#property indicator_width12// Толщина линии индикатора#property indicator_label2"Минимумы 1-го ровня"// Название индикаторной серии#property indicator_type2DRAW_ARROW// Тип линии индикатора#property indicator_color2clrCrimson// Цвет линии индикатора#property indicator_width22// Толщина линии индикатора//--------------------------------Инициализация индикаторных массивов----------------------------------------double Max_1[],Min_1[]; // Индикаторные массивыdouble Max_0[],Min_0[]; // Вспомогательные массивы//+---------------------------------------------------------------------------------------------------------+//| Функция обработки события OnInit |//+---------------------------------------------------------------------------------------------------------+intOnInit ()
{
EventSetTimer ( _Period ); // Установка Таймера//-----------------------------------------------------------------------------------------------------------SetIndexBuffer ( 0 ,Max_1, INDICATOR_DATA ); // Присвоение индикаторного массива буферуSetIndexBuffer ( 1 ,Min_1, INDICATOR_DATA ); // Присвоение индикаторного массива буферуPlotIndexSetInteger ( 0 , PLOT_ARROW , 159 ); // Установка кода символа для PLOT_ARROWPlotIndexSetInteger ( 1 , PLOT_ARROW , 159 ); // Установка кода символа для PLOT_ARROWPlotIndexSetInteger ( 0 , PLOT_ARROW_SHIFT ,- 10 ); // Установка сдвига символа в пикселяхPlotIndexSetInteger ( 1 , PLOT_ARROW_SHIFT , 10 ); // Установка сдвига символа в пикселяхPlotIndexSetDouble ( 0 , PLOT_EMPTY_VALUE , 0 ); // Установка пустого значенияPlotIndexSetDouble ( 1 , PLOT_EMPTY_VALUE , 0 ); // Установка пустого значения//----------------------------------------------------------------------------------------------------------- SetIndexBuffer ( 2 ,Max_0, INDICATOR_CALCULATIONS ); // Присвоение индикаторного массива буферуSetIndexBuffer ( 3 ,Min_0, INDICATOR_CALCULATIONS ); // Присвоение индикаторного массива буферуArraySetAsSeries (Max_0, true ); // Установка индексаци массива как в таймсерииArraySetAsSeries (Min_0, true ); // Установка индексаци массива как в таймсерии//--------------------------------Инициализация массивов-----------------------------------------------------return ( INIT_SUCCEEDED );
}
//+---------------------------------------------------------------------------------------------------------+//| Функция обработки события OnCalculate |//+---------------------------------------------------------------------------------------------------------+intOnCalculate ( constint rates_total, // Всего баровconstint prev_calculated, // Расчитаных баровconstdatetime &time[], // Время открытияconstdouble &open[], // Цена открытияconstdouble &high[], // Максимальная ценаconstdouble &low[], // Минимальная ценаconstdouble &close[], // Цена закрытияconstlong &tick_volume[], // Тиковый объемconstlong &volume[], // Объемconstint &spread[]) // Спред
{
//--------------------------------Объявление переменных------------------------------------------------------int i0, i_1max, i_1min, i_1maxH= 0 , i_1minH= 0 ; // Индексыint Max_1Index= 0 , Min_1Index= 0 ; // Индексы максимальных и минимальных баровint Step_0, Step_1max, Step_1min; // Шаги цикловint Start_1max, Start_1min; // Стартовая позицияint Stop_1maxA= 0 , Stop_1minA= 0 , Stop_1maxB= 0 , Stop_1minB= 0 ; // Ограничитель дальнейших действийint Shift_max1= 0 , Shift_min1= 0 ; // Шифтыint TotalMax_0= 0 , TotalMin_0= 0 ; // Всего баров в нулевых массивахint TotalMax_1= 0 , TotalMin_1= 0 ; // Всего баров в массивах 1-го уровняint imax_0= 0 , imin_0= 0 , imax_1= 0 , imin_1= 0 ; // Инициализаторы массивов//--------------------------------Расчет 0-го уровня индикатора----------------------------------------------if (prev_calculated< 4 ) Step_0= 1 ; // Если расчетов еще небыло Step_0=1else Step_0=rates_total- 3 ; // Если расчеты уже были Step_0=rates_total-3for (i0=Step_0;i0<rates_total- 2 ;i0++) // Цикл для расчетов
{
if (high[i0+ 1 ]<high[i0] && high[i0]>=high[i0- 1 ]) Max_0[i0]=high[i0]; // Присвоение значения массиву Max_0else Max_0[i0]= 0 ; // Присвоение 0 значения массиву
TotalMax_0= ArrayRange (Max_0,imax_0); // Всего баров в массиве Max_0if (low[i0+ 1 ]>low[i0] && low[i0]<=low[i0- 1 ]) Min_0[i0]=low[i0]; // Присвоение значения массиву Min_0else Min_0[i0]= 0 ; // Присвоение 0 значения массиву
TotalMin_0= ArrayRange (Min_0,imin_0); // Всего баров в массиве Min_0
}
//--------------------------------Расчет максимума 1-го уровня индикатора------------------------------------if (TotalMax_1< 2 ) Step_1max= 1 ; // Если расчетов еще небыло Step_1max=1else Step_1max=TotalMax_0- 1 ; // Если расчеты уже были Step_1max=TotalMax_0-1for (i_1max=Step_1max;i_1max<TotalMax_0- 1 ;i_1max++) // Главный цикл для заполнения массива Max_1
{
if (Max_0[i_1max]>Min_0[i_1max] && Stop_1maxA< 1 ) // Нахождение ситуации когда Max_0 больше Min_0
{
Start_1max=i_1max; // Определение стартовой позиции
Stop_1maxA= 1 ; // Задается значение пераметру Stop_1maxA
Stop_1minA= 0 ; // Задается значение пераметру Stop_1minAfor (i_1maxH=i_1max;Max_0[i_1maxH]>=Min_0[i_1maxH];i_1maxH++) // Цикл для подсчета к-ва баров
{Shift_max1++;} // Подсчет к-ва баров для расчета максимального индекса
Max_1Index= ArrayMaximum (Max_0,Start_1max,Shift_max1); // Вычисление максимального индекса
}
if (i_1max==Max_1Index) Max_1[i_1max]=Max_0[i_1max]; // Присвоение значения массиву Max_1else Max_1[i_1max]= 0 ; // Присвоение 0 значения массиву Max_1
TotalMax_1= ArrayRange (Max_1,imax_1); // Всего баров в массиве Max_1if (Max_0[i_1max]<Min_0[i_1max] && Stop_1minA< 1 ) // Нахождение ситуации когда Max_0 меньше Min_0
{
Stop_1maxA= 0 ; // Изменение параметра Stop_1maxA
Stop_1minA= 1 ; // Изменение параметра Stop_1minA
}
}
//--------------------------------Расчет минимума 1-го уровня индикатора-------------------------------------if (TotalMin_1< 2 ) Step_1min= 1 ; // Если расчетов еще небыло Step_1min=1else Step_1min=TotalMin_0- 1 ; // Если расчеты уже были Step_1min=TotalMin_0-1for (i_1min=Step_1min;i_1min<TotalMin_0- 1 ;i_1min++) // Главный цикл для заполнения массива Min_1
{
if (Min_0[i_1min]>Max_0[i_1min] && Stop_1minB< 1 ) // Нахождение ситуации когда Min_0 больше Max_0
{
Start_1min=i_1min; // Определение стартовой позиции
Stop_1minB= 1 ; // Задается значение пераметру Stop_1minB
Stop_1maxB= 0 ; // Задается значение пераметру Stop_1maxBfor (i_1minH=i_1min;Min_0[i_1minH]>=Max_0[i_1minH];i_1minH++) // Цикл для подсчета к-ва баров
{Shift_min1++;} // Подсчет к-ва баров для расчета минимального индекса
Min_1Index= ArrayMinimum (Min_0,Start_1min,Shift_min1); // Вычисление максимального индекса
}
if (i_1min==Min_1Index) Min_1[i_1min]=Min_0[i_1min]; // Присвоение значения массиву Min_1else Min_1[i_1min]= 0 ; // Присвоение 0 значения массиву Min_1
TotalMin_1= ArrayRange (Min_1,imin_1); // Всего баров в массиве Min_1if (Min_0[i_1min]<Max_0[i_1min] && Stop_1maxB< 1 ) // Нахождение ситуации когда Min_0 меньше Max_0
{
Stop_1minB= 0 ; // Изменение параметра Stop_1minB
Stop_1maxB= 1 ; // Изменение параметра Stop_1maxB
}
}
//-------------------------------------------------------------- return (rates_total);
}
//+---------------------------------------------------------------------------------------------------------+//| Функция обработки события Таймер |//+---------------------------------------------------------------------------------------------------------+voidOnTimer (){}
//+---------------------------------------------------------------------------------------------------------+//+---------------------------------------------------------------------------------------------------------+//| Функция обработки события OnDeinit |//+---------------------------------------------------------------------------------------------------------+voidOnDeinit ( constint reason)
{
EventKillTimer (); // Удаление ТаймераPrint ( __FUNCTION__ , "_Код причины деинициализации = " ,reason); // Причина деинициализации
}
Escribimos un script para guardar los datos del gráfico en un archivo *.csv (aplicación s_ExportChartToCSV_v1.mq4):
int start(){
int h=FileOpen(Symbol()+Period()+".csv",FILE_WRITE|FILE_CSV,",");
for(int i=Bars-1;i>=0;i--){
FileWrite(h,TimeToStr(Time[i],TIME_DATE),TimeToStr(Time[i],TIME_MINUTES),Open[i],High[i],Low[i],Close[i],Volume[i]);
}
FileClose(i);
return(0);
}
Ejecutar el script en gráficos de plazos no estándar. Como resultado de la ejecución del script, recibimos archivos estándar *.csv con datos no estándar de los plazos en el directorio experts/filies.
---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------Если можно сделаете скрипт
Цена на рынке меняется с достаточно большой частотой, чтобы для технического анализа было удобно пользоваться графиком непосредственного изменения цены, так называемого тикового графика. Для упрощения восприятия изменений цены и обеспечения возможности использования в анализе большие интервалы времени используется отображение графиков в виде...
¿por qué no incluirlo en la versión HTML del informe?
Siempre ha sido así.
Por eso, los resultados de las pruebas con la misma configuración pueden ser ligeramente diferentes debido a los cambios de intercambio. O los resultados en la optimización y las pruebas difieren, si la optimización fue larga y el intercambio ha cambiado durante este tiempo.
Por eso, los resultados de las pruebas con los mismos ajustes pueden ser ligeramente diferentes debido a los cambios de intercambio. O los resultados son diferentes en la optimización y las pruebas, si la optimización fue larga y el intercambio ha cambiado durante este tiempo.
En el Probador de Estrategias la orden se modifica sin problemas, pero en una cuenta demo esta modificación no funciona.
Se modifica el Stop Loss. En el tester el stoploss puede estar a sólo 1 pip del precio actual, pero en las cuentas demo incluso si fijamos el stoploss a una distancia de spread + 6-8 pips más.
MODE_STOPLEVEL=0, MODE_FREEZELEVEL=0.
Por favor, indíqueme por qué y cómo hacer la modificación correcta.
En el Probador de Estrategias la orden se modifica sin problemas, pero en una cuenta demo esta modificación no funciona.
Se modifica el Stop Loss. En el tester el stoploss puede estar a sólo 1 pip del precio actual, pero en las cuentas demo incluso si fijamos el stoploss a una distancia de spread + 6-8 pips más.
MODE_STOPLEVEL=0, MODE_FREEZELEVEL=0.
Por favor, indíqueme por qué y cómo hacer la modificación correcta.
0 significa un tope flotante. En el probador, la dispersión es fija. Si se pone 1, el 1 siempre estará ahí. Pero en la vida real flota.
Hola, he empezado a estudiar MQL4 usando videotutoriales de 2013. Estoy reescribiendo el código exactamente del video, añadiendo algunos cambios menores de otro video, como resultado tengo 25 errores. He intentado buscar la solución a estos errores, pero desde que la compilación del terminal ha cambiado y se han producido algunos cambios en la codificación. Agradeceré si alguien puede ayudarme a editar el código o al menos dar algún consejo útil, gracias de antemano.
¿Y cómo te ayuda eso? La próxima vez, ve directamente a Freelance.
Hola, he empezado a estudiar MQL4 utilizando los videotutoriales de 2013, he ido reescribiendo el código exactamente del vídeo, añadiendo algunos cambios menores de otro, según los necesito. Como resultado me salen 25 errores. He intentado buscar la solución a estos errores, pero desde que la compilación del terminal ha cambiado y se han producido algunos cambios en la codificación. Agradeceré si alguien puede ayudarme a editar el código o al menos darme algún consejo útil, gracias de antemano.
Añade los cambios uno a uno y corrige los errores - aprenderás paso a paso. Si quiere aprender el idioma, empiece con ejemplos sencillos
¡Buena tarde! Por favor, ayúdame a entender el código del indicador. Hay un nivel cero, basado en él, debe completar el primer nivel. Lo que no hago, lo que no funciona. Aquí está el código del indicador:
Por favor, ayuda.
Parece que no puedo crear un script sobre este tema, aquí está la página https://www.mql5.com/ru/articles/1368
----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
Escribimos un script para guardar los datos del gráfico en un archivo *.csv (aplicación s_ExportChartToCSV_v1.mq4):
Ejecutar el script en gráficos de plazos no estándar. Como resultado de la ejecución del script, recibimos archivos estándar *.csv con datos no estándar de los plazos en el directorio experts/filies.
---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------Если можно сделаете скрипт
gracias de antemano
¿desde cuándo el probador de estrategias empezó a cobrar el canje?
¿o no me he dado cuenta?
¿por qué no incluirlo en la versión HTML del informe?
¿desde cuándo el probador de estrategias empezó a cobrar el canje?
¿o no me he dado cuenta?
¿por qué no incluirlo en la versión HTML del informe?
Siempre ha sido así.
Por eso, los resultados de las pruebas con la misma configuración pueden ser ligeramente diferentes debido a los cambios de intercambio. O los resultados en la optimización y las pruebas difieren, si la optimización fue larga y el intercambio ha cambiado durante este tiempo.
Esto siempre ha sido así.
Por eso, los resultados de las pruebas con los mismos ajustes pueden ser ligeramente diferentes debido a los cambios de intercambio. O los resultados son diferentes en la optimización y las pruebas, si la optimización fue larga y el intercambio ha cambiado durante este tiempo.
Nunca me di cuenta de eso! Pensé que no había intercambio en mt4 en el probador de estrategias.
Buenas noches a todos.
En el Probador de Estrategias la orden se modifica sin problemas, pero en una cuenta demo esta modificación no funciona.
Se modifica el Stop Loss. En el tester el stoploss puede estar a sólo 1 pip del precio actual, pero en las cuentas demo incluso si fijamos el stoploss a una distancia de spread + 6-8 pips más.
MODE_STOPLEVEL=0, MODE_FREEZELEVEL=0.
Por favor, indíqueme por qué y cómo hacer la modificación correcta.
Buenas noches a todos.
En el Probador de Estrategias la orden se modifica sin problemas, pero en una cuenta demo esta modificación no funciona.
Se modifica el Stop Loss. En el tester el stoploss puede estar a sólo 1 pip del precio actual, pero en las cuentas demo incluso si fijamos el stoploss a una distancia de spread + 6-8 pips más.
MODE_STOPLEVEL=0, MODE_FREEZELEVEL=0.
Por favor, indíqueme por qué y cómo hacer la modificación correcta.