2047728: Здравствуйте, начал изучать MQL4 по видеоурокам за 2013 год, в точности переписываю код из ролика добавляя незначительные изменения из другого ролика нужные мне, в итоге получаю 25 ошибок. Пытался искать решение этих ошибок но как я понял изменился билд терминала и с в следствии произошли некие изменения в написании кода. Буду благодарен если кто-то поможет отредактировать код или хотя бы даст дельный совет, заранее спасибо.
И чем это Вам поможет? В следующий раз сразу же во Фриланс обращайтесь
Здравствуйте, начал изучать MQL4 по видеоурокам за 2013 год, в точности переписываю код из ролика добавляя незначительные изменения из другого ролика нужные мне, в итоге получаю 25 ошибок. Пытался искать решение этих ошибок но как я понял изменился билд терминала и с в следствии произошли некие изменения в написании кода. Буду благодарен если кто-то поможет отредактировать код или хотя бы даст дельный совет, заранее спасибо.
Добавляйте изменения по одному и исправляйте ошибки - постепенно научитесь. Хотите выучить язык - начинайте с простых примеров
Добрый день! Помогите пожалуйста разобраться в коде индикатора. Имеется нулевой уровень, на его основе нужно заполнить первый уровень. Что не делаю не чего не получается. Вот код индикатора:
//+---------------------------------------------------------------------------------------------------------+//| 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); // Причина деинициализации
}
Пишем скрипт для сохранения данных с графика в файл *.csv (файл 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);
}
Исполняем скрипт на графиках нестандартных таймфреймов. В результате работы скрипта в каталоге experts/filies получаем стандартные файлы *.csv с данными нестандартных таймфреймов.
---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------Если можно сделаете скрипт
Цена на рынке меняется с достаточно большой частотой, чтобы для технического анализа было удобно пользоваться графиком непосредственного изменения цены, так называемого тикового графика. Для упрощения восприятия изменений цены и обеспечения возможности использования в анализе большие интервалы времени используется отображение графиков в виде...
Поэтому результаты тестов при одинаковых настройках бывает немного отличаются из-за изменения свопа. Или результаты в оптимизации и тестах отличаются, если оптимизация долгой была и за это время своп изменился.
Поэтому результаты тестов при одинаковых настройках бывает немного отличаются из-за изменения свопа. Или результаты в оптимизации и тестах отличаются, если оптимизация долгой была и за это время своп изменился.
никогда не обращал на это внимание! я думал свопа в мт4 в тестере стратегий не было.
Вопросик такой, В тестере ордер модифицируется без всяких проблем, а вот на демо счёте эта модификация не проходит.
Модифицируется стоплосс. В тестре стоплосс может стоять хоть 1 пункт от текущей цены, а вот на демо счёте даже если ставить стоп на расстоянии спреда + ещё 6-8 пунктов приходится.
MODE_STOPLEVEL=0, MODE_FREEZELEVEL=0. ДЦ Альпари.
Подскажите пожалуйста, почему так и как правильно сделать модификацию.
Вопросик такой, В тестере ордер модифицируется без всяких проблем, а вот на демо счёте эта модификация не проходит.
Модифицируется стоплосс. В тестре стоплосс может стоять хоть 1 пункт от текущей цены, а вот на демо счёте даже если ставить стоп на расстоянии спреда + ещё 6-8 пунктов приходится.
MODE_STOPLEVEL=0, MODE_FREEZELEVEL=0. ДЦ Альпари.
Подскажите пожалуйста, почему так и как правильно сделать модификацию.
0 означает плавающий стоп. В тестере спред фиксированный. Если поставили 1 значит 1 будет всегда. А вот в реале он плавает.
Здравствуйте, начал изучать MQL4 по видеоурокам за 2013 год, в точности переписываю код из ролика добавляя незначительные изменения из другого ролика нужные мне, в итоге получаю 25 ошибок. Пытался искать решение этих ошибок но как я понял изменился билд терминала и с в следствии произошли некие изменения в написании кода. Буду благодарен если кто-то поможет отредактировать код или хотя бы даст дельный совет, заранее спасибо.
И чем это Вам поможет? В следующий раз сразу же во Фриланс обращайтесь
Здравствуйте, начал изучать MQL4 по видеоурокам за 2013 год, в точности переписываю код из ролика добавляя незначительные изменения из другого ролика нужные мне, в итоге получаю 25 ошибок. Пытался искать решение этих ошибок но как я понял изменился билд терминала и с в следствии произошли некие изменения в написании кода. Буду благодарен если кто-то поможет отредактировать код или хотя бы даст дельный совет, заранее спасибо.
Добавляйте изменения по одному и исправляйте ошибки - постепенно научитесь. Хотите выучить язык - начинайте с простых примеров
Добрый день! Помогите пожалуйста разобраться в коде индикатора. Имеется нулевой уровень, на его основе нужно заполнить первый уровень. Что не делаю не чего не получается. Вот код индикатора:
Помогите пожалуйста.
Ни как не получается создать скрипт по этой теме вот страница https://www.mql5.com/ru/articles/1368
----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
Пишем скрипт для сохранения данных с графика в файл *.csv (файл s_ExportChartToCSV_v1.mq4 приложения):
Исполняем скрипт на графиках нестандартных таймфреймов. В результате работы скрипта в каталоге experts/filies получаем стандартные файлы *.csv с данными нестандартных таймфреймов.
---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------Если можно сделаете скрипт
заранее благодарен
с каких пор в тестере стратегий начал начисляться своп?
или я не замечал?
почему бы его не включить в HTML версию отчета?
с каких пор в тестере стратегий начал начисляться своп?
или я не замечал?
почему бы его не включить в HTML версию отчета?
Всегда так было.
Поэтому результаты тестов при одинаковых настройках бывает немного отличаются из-за изменения свопа. Или результаты в оптимизации и тестах отличаются, если оптимизация долгой была и за это время своп изменился.
Всегда так было.
Поэтому результаты тестов при одинаковых настройках бывает немного отличаются из-за изменения свопа. Или результаты в оптимизации и тестах отличаются, если оптимизация долгой была и за это время своп изменился.
никогда не обращал на это внимание! я думал свопа в мт4 в тестере стратегий не было.
Всем добрый вечер!
Вопросик такой, В тестере ордер модифицируется без всяких проблем, а вот на демо счёте эта модификация не проходит.
Модифицируется стоплосс. В тестре стоплосс может стоять хоть 1 пункт от текущей цены, а вот на демо счёте даже если ставить стоп на расстоянии спреда + ещё 6-8 пунктов приходится.
MODE_STOPLEVEL=0, MODE_FREEZELEVEL=0. ДЦ Альпари.
Подскажите пожалуйста, почему так и как правильно сделать модификацию.
Всем добрый вечер!
Вопросик такой, В тестере ордер модифицируется без всяких проблем, а вот на демо счёте эта модификация не проходит.
Модифицируется стоплосс. В тестре стоплосс может стоять хоть 1 пункт от текущей цены, а вот на демо счёте даже если ставить стоп на расстоянии спреда + ещё 6-8 пунктов приходится.
MODE_STOPLEVEL=0, MODE_FREEZELEVEL=0. ДЦ Альпари.
Подскажите пожалуйста, почему так и как правильно сделать модификацию.