Полное руководство для новичков MQL - страница 3

 
8284 wrote >>

О СиБи, о СиБи!

Ты очень жестокий. Ты действительно не хочешь держать меня за руку через это. Это та самая книга, написанная на греческом, латыни и марсианском языке, от которой я сбежал. Конечно, невозможно стать специалистом в какой-либо профессии, не изучив терминологию, но...

Вы напоминаете мне моего преподавателя логики доктора Отакпора (под логикой я имею в виду философию). Вам лучше никогда не задавать ему вопрос, если вы понятия не имеете, о чем спрашиваете. CB, книга о массивах довольно технична для меня (это была моя первая попытка кодирования). Я имею смутное представление о том, о чем она, но не полное понимание. Однако я воспринимаю это как вызов!

Я собираюсь искать то маленькое "...a", которое превратит мое "ah..." в "aha".

Я собираюсь прочитать и написать, а затем дать вам то, что я знаю о массивах (на самом деле их применение мне нужно знать больше всего).

Единственное, что это приведет к очень длинному посту. Есть куски кода, в которых я вижу использование массивов [], но я не совсем понимаю логику. Я надеялся, что если мне все объяснят, у меня не будет так много вопросов (что-то вроде недостающего кусочка головоломки).

Вы бросили мне вызов, и я думаю, что это полезно для моего развития, однако я прошу вас быть немного мягче со мной, потому что я неполноценен в научном плане. Я занимаюсь искусством. Когда я разговариваю с дамами, они говорят, что я говорю как поэт. Надеюсь, я не буду писать как поэт!!!

Серьезно, сегодня мне не до сна, в течение 24 часов я вернусь к своему пониманию массивов. Я надеюсь, что вы поправите меня, где я ошибся, и поможете мне понять применение массивов в программировании.

О, CB, о, CB!

Кстати, моими тремя лучшими преподавателями были доктор Отакпор, барр Ричард Идубор и барр Боб Осамор!!!

Доктор Отакпор (преподавал логику и философию) раскрывал лучшее в своих студентах, отвечая на их вопросы своими собственными вопросами, чтобы заставить их ответить на свои собственные вопросы.

Это делало занятия интерактивными. Если вы застряли, он мягко подталкивал вас, подсказывал, намекал, пока вы не получали ответ!

Если вы ничего не знали, хм... совсем другое дело!

 

Ваш вопрос скорее о том, ПОЧЕМУ вы используете массив, а не КАК?

Если да, то, с моей точки зрения, массив - это более аккуратный способ хранения набора экземпляров одной и той же переменной, каждый из которых можно найти, описав его местоположение.

Например, если вы написали приложение, которое реализует очень простой шифр, где A=1, B=2, C=3 и т.д., вы можете хранить буквы алфавита в одномерном (1x26) строковом массиве и находить каждую букву, подставляя номер. Если (как пример) вы написали советника, который хранит цены Ask и Bid по состоянию на первый тик после 3 минут каждого нового часа и хранит эти значения на скользящей основе за последние 5 часов, то вы могли бы использовать двумерный (2x5) двойной массив для достижения цели.


CB

 
cloudbreaker wrote >>

Ваш вопрос скорее о том, ПОЧЕМУ вы используете массив, а не КАК?

Если да, то, с моей точки зрения, массив - это более аккуратный способ хранения набора экземпляров одной и той же переменной, каждый из которых можно найти, описав его местоположение.

Например, если вы написали приложение, которое реализует очень простой шифр, где A=1, B=2, C=3 и т.д., вы можете хранить буквы алфавита в одномерном (1x26) строковом массиве и находить каждую букву, подставляя номер. Если (как пример) вы написали советника, который хранит цены Ask и Bid по состоянию на первый тик после 3 минут каждого нового часа и хранит эти значения на скользящей основе за последние 5 часов, то вы могли бы использовать двумерный (2x5) двойной массив для достижения цели.

CB

Хорошо, CB, мой вопрос больше сосредоточен на том, КАК, чем ПОЧЕМУ. Я знаю, зачем; для удобства. Я понимаю большую часть того, что вы написали выше, но не все!

Вы снова перешли на техно, понимаете, чтобы увлечь нас, вам нужен детский лепет и терпение. Мы обязательно заставим вас гордиться нами, но это займет некоторое время. Учитывая, что всего 3 дня назад ваш пост не имел бы для меня смысла, я почтительно спрашиваю, что вы подразумеваете под "скользящей основой"!

Я уверен, что когда вы объясните, мне захочется ударить себя, но сейчас я в замешательстве!

В любом случае, я понимаю, почему, но не понимаю, как.

Я работаю над эссе о массивах, которое я представлю здесь в течение следующих 24 часов, и если я что-то упущу, я ожидаю исправления. Если нет, я буду спрашивать о том, как и когда массивы!

Большое спасибо,

Я ценю вашу помощь!

 

Итак, CB, я готов написать свое эссе. Я уверен, что допустил ошибку или две, и буду рад, если мне укажут на это. Если уж на то пошло, я думаю, что в некотором смысле я звучал немного технично (говорил об инициализации, объявлении и прочем). Написание этой статьи заставило меня посмотреть на вещи немного по-другому, но потом я все равно научился этому.

Я собираюсь почитать о многомерных массивах.

Я хотел бы получить вашу честную (и всех остальных) критику по этому поводу.

Если есть новичок, которому это помогло, хотелось бы услышать и от вас.

Возможно, я также напишу эссе по функциям, потому что написание таких статей еще больше укрепит меня в этом!

 

Что такое массив?

Определение массива может не помочь новичку, поэтому лучше описать его. После этого любой сможет найти его техническое определение!

Массив можно представить как группу похожих данных.
Пример.
Население меняется каждый год.

2004 население = 4
2005 год = 5
2006 год население = 6
2007 год население = 7
2008 год население = 8
2009 население = 9 и так далее.

Если бы мы программировали на mql4, то для использования этих данных мы могли бы объявить их как переменные, например
int 2004pop = 4;
int 2005pop = 5;
int 2006pop = 6;
int 2007pop = 7; и так далее, пока не дойдем до 2009 или бесконечности.

Это может работать, но довольно громоздко. Здесь на помощь приходят массивы.
Все данные о населении - это массив.
Чтобы использовать массивы, вы должны сначала объявить их.
Они объявляются с помощью этих "[ ]".
Первое, что вы должны сделать, это указать программе тип массива, будь то целое число, двойка и т.д. В нашем примере это целое число.
Затем нужно дать массиву описательное имя, мы назовем его yearpop (сокращение от year population).
После описательного имени идут скобки [ ], а внутри скобок мы указываем, с чем мы работаем. В нашем случае у нас 6 данных, поэтому внутри скобки мы помещаем 6. Например, так [6].
На данный момент объявление нашего массива выглядит следующим образом
int yearpop [6];
Мы можем пойти дальше и инициализировать массив, показав значения отдельных лет следующим образом

int yearpop [6] = {4,5,6,7,8,9};

Теперь mql4 начинает отсчет с 0, а не с единицы. Здесь у нас шесть значений, поэтому вместо нумерации от 1 до 6, mql4 считает от 0 до 5. Чтобы получить значение для первого года, нужно использовать 0. Для второго года нужно использовать 1 и так далее.

Посмотрите на это еще раз
int yearpop [6] = {4,5,6,7,8,9} ;
Числа 4,5,6,7,8,9 называются элементами.
Способ получения значения элементов - через их индексы (надеюсь, я ничего не путаю).
Индексы начинаются от 0 до любого значения (в нашем случае 5)

Таким образом, если вы хотите получить значение для первого года, вы используете его индекс, который равен 0.

yearpop [0] // это даст вам население первого года
yearpop [1]// население второго года.
Таким образом, вы можете удобно производить множество вычислений (я думаю)
например
int overpopulation ;
overpopulation = yearpop[0] +yearpop [3] / yearpop [2];

Как это применимо к mql4?
Пока я знаю только то, что в mql4 текущий бар или таймфрейм или символ или график всегда равен 0 или NULL.
Во-вторых, mql4 считает в обратном порядке следующим образом
543210 (справа налево).
В качестве примера, на любом графике (извините, я не умею работать с графикой)
текущий бар, который еще не сформировался, имеет значение 0.
Бар, расположенный сразу слева от него, имеет значение 1, следующий слева от него - 2 и так далее.
Сразу же после этого столбик, имеющий значение 0, завершается, он принимает значение 1, а новый формирующийся столбик принимает значение 0, и все остальные сдвигаются соответственно.
Теперь предположим, что у нас есть массив самых высоких ценовых уровней для баров (что мы, собственно, и делаем), мы могли бы сделать что-то вроде этого
double highlevels [200];// значит, у нас 200 баров // в нашем массиве.
На самом деле в mql4 есть функция, которая может сообщить нам максимумы и минимумы всех баров.
Предположим, вы хотите узнать разницу между 150-м баром и первым баром.
Если бы массивов не было, вам пришлось бы объявить и, возможно, инициализировать по меньшей мере 150 баров, что заняло бы много времени (CB, вот почему массивы).
Но поскольку у нас есть массивы, все, что нам нужно сделать, это обратиться к ним по их индексным номерам и произвести вычисления, например, так
двойная разница;

difference = highlevels [0] - highlevels[149] // помните, что мы // считаем от 0
0 - это текущий формирующийся бар. Если мы хотим использовать для расчета завершенный бар, то вместо него мы используем highlevel [1].

До сих пор я говорил только об одномерных массивах. Это как таблица с одной строкой.

Mql4 позволяет использовать 4-мерные массивы, и это то, с чем я еще не разобрался.

 
Кто-нибудь уже видел это?
 

Привет, ребята!

Приятно видеть, что в этой теме появились сообщения после моего исчезновения. Я отошел на задний план, работая над стратегией с коучингом от кого-то весьма исключительного с этого форума. Поэтому, если говорить реалистично, боюсь, что в ближайшее время я не смогу внести большой вклад в эту тему, по крайней мере, не такой "глубокий", как раньше :)

Между тем, всем новичкам: продолжайте поддерживать страсть к торговле и помните, если вы помогаете кому-то, помощь найдет вас, когда вы в ней нуждаетесь :)

 
привет,

я новичок и хотел бы спросить, реализованы ли встроенные функции метастока : ref() и stochmomentum() какими-либо функциями в метатрейдере?

спасибо
 
Huckleberry:

Привет, Нико,

Сегодня 4 июля. Ты вернулся из Турции?

С уважением

Гекльберри


Для тех, кому необходимо просмотреть документ, чтобы найти в нем что-то, здесь представлена PDF-версия всей Документации...

Он был преобразован в PDF из скомпилированного HTML файла справки...

 
cloudbreaker:

8284 - Хорошие программисты стремятся к модульности - т.е. к созданию многократно используемых строительных блоков, которые можно многократно соединять друг с другом, оставляя минимум нового кода для написания каждой новой программы. Вы должны понимать, что этот подход подходит и для учебных материалов. Существует множество ресурсов, где можно почерпнуть основы программирования, о которых вы упомянули, поскольку они являются общими для всех технологий. Неэффективно дублировать эти учебные материалы для каждого языка программирования.


CB

Привет, CB,

Многое произошло с тех пор, как я писал выше. Я стал гораздо более опытным в написании кода, чем когда-либо думал, что смогу быть (хотя еще многое предстоит отшлифовать). Я нахожу вашу цитату выше такой проницательной (то, что я не оценил в то время).

Я хочу сказать вам спасибо за вашу помощь (я также учился на вашей помощи другим) и поздравить вас с назначением на должность модератора (очень заслуженно, я думаю)!

Поздравляю также Гордона и BB!