Можно ли интуитивно изучить язык программирования? Почему постоянно такие критические высказывания, например, "Вы не знаете язык Си и т.п. - значит Вы не сможете писать программы". Известно, языки создаются для облегчения пользователей. Предлагаю разобрать язык MQL5. Открыть терминал MQL5 и сосредоточить своё внимание на любом из индикаторов, например "Relative Strength Index" и др. В течение 2-3 часов, уже понятно становятся принципы построения языка. Формулы, по которой работают индикаторы, даны в справочной системе МТ5. Например, осциллятор RSI, определен одной формулой: RSI = 100 - (100 / (1 + U / D))
Где:
U — среднее значение положительных ценовых изменений;
D — среднее значение отрицательных ценовых изменений.
В MQL5 данное решение представлено следующим описанием:
//--- calculate first visible value
ExtPosBuffer[ExtPeriodRSI]=SumP/ExtPeriodRSI;
ExtNegBuffer[ExtPeriodRSI]=SumN/ExtPeriodRSI;
if(ExtNegBuffer[ExtPeriodRSI]!=0.0)
ExtRSIBuffer[ExtPeriodRSI]=100.0-(100.0/(1.0+ExtPosBuffer[ExtPeriodRSI]/ExtNegBuffer[ExtPeriodRSI]));
else
{
if(ExtPosBuffer[ExtPeriodRSI]!=0.0)
ExtRSIBuffer[ExtPeriodRSI]=100.0;
else
ExtRSIBuffer[ExtPeriodRSI]=50.0;
}
//--- prepare the position value for main calculation
pos=ExtPeriodRSI+1;
}
//--- the main loop of calculations
for(i=pos;i {
diff=price-price[i-1];
ExtPosBuffer=(ExtPosBuffer[i-1]*(ExtPeriodRSI-1)+(diff>0.0?diff:0.0))/ExtPeriodRSI;
ExtNegBuffer=(ExtNegBuffer[i-1]*(ExtPeriodRSI-1)+(diff<0.0?-diff:0.0))/ExtPeriodRSI;
if(ExtNegBuffer!=0.0)
ExtRSIBuffer=100.0-100.0/(1+ExtPosBuffer/ExtNegBuffer);
else
{
if(ExtPosBuffer!=0.0)
ExtRSIBuffer=100.0;
else
ExtRSIBuffer=50.0;
}
}
//--- OnCalculate done. Return new prev_calculated.
return(rates_total);
}
//+------------------------------------------------------------------+
Очевидно, из школьной программы, For, If, else, return - операторы циклы, поэтому углубляться в их описание не будем.
Формула спрятана в следующих двух строчках
ExtRSIBuffer[ExtPeriodRSI]=100.0-(100.0/(1.0+ExtPosBuffer[ExtPeriodRSI]/ExtNegBuffer[ExtPeriodRSI]))
ExtRSIBuffer=100.0-100.0/(1+ExtPosBuffer/ExtNegBuffer)
Очевидно, что ExtPosBuffer - среднее значение положительных ценовых изменений;
ExtNegBuffer - среднее значение отрицательных ценовых изменений.
Вышеуказанные функции являются носителями двух параметров переменных:
ExtPeriodRSI и i.
Разберем их. Переводим заголовок, например с помощью Гугла. Первое вычисление предназначено для явного вычисления, второе для основного цикла расчетов.
В начале программы происходит описание переменных, констант и типа данных - известно из базового курса программирования. Думаю ни чего сложного в чтении MQL5 нет.
Редактировалось: 3 раз (Последний: 18 ноября 2012 в 22:52)
Прежде чем дальше изучать язык программирования MQL5. Следует повторить основы стандартных (классических) языков: Бейсик, Паскаль и Си, т.к. основы MQL5 идентичны с классикой, в которую входят: "Типы данных", "Операторы", "Переменные", "Операции и Выражения" и " Функции". Их описывать не стоит, т.к. это можно найти в любом самоучителе по программированию, хоть на Бейсике, хоть на Паскале. Также они подробно расписаны в справочной системе MQL5.
Отметить необходимо то, что в функциях следует различать термины «Параметр функции» и «Аргумент функции». Тем не менее, в MQL5 на этом не заостряют внимание. Арифметические операции, операции отношения и логические операции идут стандартно, как и в других языках программирования.
Есть особенные отличия в MQL5 от стандартных (классических) языков программирования это описание Торговых функций, Операций с графиками и т.п. Но это не должно особенно пугать новичков в программировании.
MetaQuotes Language 5 (MQL5) - встроенный язык программирования торговых стратегий, разработанный компанией MetaQuotes Software Corp. на основе своего многолетнего опыта в создании торгово-информационных платформ. Этот язык позволяет писать собственные программы-эксперты (Expert Advisors), автоматизирующие управление торговыми процессами и идеально подходящие для реализации собственных торговых стратегий. Кроме того, на MQL5 можно создавать собственные технические индикаторы (Custom Indicators), скрипты (Scripts) и библиотеки функций (Libraries).
В состав MQL5 включено большое количество функций, необходимых для анализа текущих и пришедших ранее котировок, встроены основные индикаторы и функции по управлению торговыми позициями и контролю над ними.
Нужно не интуитивно изучать программирование, а под конкретные задачи, что впрочем не означает что не надо знать основ. Конечно же бесполезно все нюансы и тонкости того же си шарпа изучать, жизни не хватит просто, только под решение конкретных вопросов.
Интуитивно можно сделать и это...Помнитеся я Бейсик составляла на экзамене по инфоматике, рассчитывая лишь на свою интуицию. Трудно это, да и нервишки щекочет, полагаться лишь на свою интуицию и ничегоне понимать в этом деле. Сначала теория - потом только практика.
Где в новом мастере модули сигналов пересечения средних скользящих? Где сигналы alligatora? У каждого индикатора где то по несколько видов сигналов. Как сделать так что бы допустим MACD отрабатывал только сигналы пересечения нулевого уровня? Спасибо...
yuliyasuper1 в данном варианте доступно исключительно самообучение на началах энтузиазма. Любой другой вид обучения за отдельную плату. kooss Тема раскрывается с описания индикатора Relative Strength Index, на примере которого, каждый желающий, просматривает свои собственные алгоритмы построение индикаторов alligatora и другие.
Как сделать так что бы допустим MACD отрабатывал только сигналы пересечения нулевого уровня? вопрос скорее к программистам, чем к преподавателям. Задача преподавателя - обучить элементам языка.
В связи с переносом ранее открытых тем в неоплачиваемые разделы, данная тема также ликвидируется.