Вопросы от начинающих MQL5 MT5 MetaTrader 5 - страница 1247

 
MrBrooklin:

Всем доброго вечера!

На старость лет пытаюсь освоить азы MQL5. Раздирает любопытство - неужели если человеку под 60, то программирование уже не под силу. Хотя с простым языком HTML в полтинник удалось подружиться, даже сайты себе на нём писал. Простенькие, правда, но всё же... Если мои вопросы будут вызывать раздражение, то скажите сразу, тогда больше не буду задавать наивные вопросы и нервировать народ.

Итак, открыл первый попавшийся на глаза код. При помощи Гугл переводчика и справочника MQL5 закомментировал смысл одной строки этого кода. Что прошу от сообщества? Посмотрите комментарии и если они не соответствуют действительности, то, пожалуйста, поправьте ход моих мыслей:

Для кого-то - это открытая книга, а как по мне, так те же китайские иероглифы. Прошу сильно не смеяться.

Для чего это делаю? Таким образом просто хочу для себя понять, насколько безнадёжен в программировании.

С уважением, Владимир.

Рекомендую пользоваться хелпом в ME - там назначение всех операторов и функций языка описано.

https://www.mql5.com/ru/docs/trading/positionselect

Документация по MQL5: Торговые функции / PositionSelect
Документация по MQL5: Торговые функции / PositionSelect
  • www.mql5.com
Выбирает открытую позицию для дальнейшей работы с ней. Возвращает true при успешном завершении функции. Возвращает false при неудачном завершении функции. Чтобы получить информацию об ошибке, необходимо вызвать функцию GetLastError(). При независимом представлении позиций (ACCOUNT_MARGIN_MODE_RETAIL_HEDGING) по каждому символу одновременно...
 
MrBrooklin:

Всем доброго вечера!

На старость лет пытаюсь освоить азы MQL5. Раздирает любопытство - неужели если человеку под 60, то программирование уже не под силу. Хотя с простым языком HTML в полтинник удалось подружиться, даже сайты себе на нём писал. Простенькие, правда, но всё же... Если мои вопросы будут вызывать раздражение, то скажите сразу, тогда больше не буду задавать наивные вопросы и нервировать народ.

Итак, открыл первый попавшийся на глаза код. При помощи Гугл переводчика и справочника MQL5 закомментировал смысл одной строки этого кода. Что прошу от сообщества? Посмотрите комментарии и если они не соответствуют действительности, то, пожалуйста, поправьте ход моих мыслей:

Для кого-то - это открытая книга, а как по мне, так те же китайские иероглифы. Прошу сильно не смеяться.

Для чего это делаю? Таким образом просто хочу для себя понять, насколько безнадёжен в программировании.

С уважением, Владимир.

Было-бы желание, это лучше для мозга чем разгадывание кроссвордов. Только сразу постарайтесь понять, что для счетов Hadge пишется не так как для счетов Netting. Эта строка кода

if(PositionSelect(_Symbol)) // если выбираем открытую позицию на графике текущего символа

используется для Netting, но для Hadge может давать ошибки если открыто больше одной позиции.

 
Aleksey Vyazmikin:

Рекомендую пользоваться хелпом в ME - там назначение всех операторов и функций языка описано.

https://www.mql5.com/ru/docs/trading/positionselect

Здравствуйте, Алексей!

Спасибо за отклик. В MetaEditor хелпом пользуюсь. Основная пока проблема в том, чтобы понять назначение операторов и функций, а так же почему, тот или иной оператор и функция, нужны именно в том конкретном месте программного кода. Вроде бы в хелпе всё расписано, но так понимаю, что эта информация не для того, кто начинает вникать с нуля, а для того, кто уже имеет определенный опыт программирования на других языках.

С уважением, Владимир.

 
Alexey Viktorov:

Было-бы желание, это лучше для мозга чем разгадывание кроссвордов. Только сразу постарайтесь понять, что для счетов Hadge пишется не так как для счетов Netting. Эта строка кода

используется для Netting, но для Hadge может давать ошибки если открыто больше одной позиции.

Здравствуйте, Алексей!

Спасибо за подсказку по поводу Hadge и Netting счетов, а так же за поддержку.

Понимаю так, что если нет корректировки в комментарии к строке кода, то это уже хорошо. Значит максимально близко понял суть этой строчки кода. Буду дальше вникать в программирование на языке MQL5 и периодически выкладывать коды со своими комментариями. Может потом, на каком-то этапе самообучения и получится самостоятельно разработать код простенького советника.

Суважением, Владимир.

Документация по MQL5 - справочник по языку алгоритмического/автоматического трейдинга для MetaTrader 5
Документация по MQL5 - справочник по языку алгоритмического/автоматического трейдинга для MetaTrader 5
  • www.mql5.com
MetaQuotes Language 5 (MQL5) - язык программирования технических индикаторов, торговых роботов и вспомогательных приложений для автоматизации торговли на финансовых рынках. MQL5 является современным языком высокого уровня и разработан MetaQuotes Software Corp. для собственной торгово-информационной платформы. Синтаксис языка максимально близок...
 

Всем привет!

Продолжаю изучать языл MQL5 и вот новая строка кода, которая не понятна даже после работы с ней хэлпом и Гугл переводом.

FileSeek(FileHandle,0,SEEK_SET); // перемещаем положение указателеля в файле с уникальным указателем на "0" байт в начале файла

Комментарий сделан мной, но не совсем понятен её смысл. Еле разобрался, что такое FileHandle. Разбил на два слова File и Handle. Гугл перевел, как дескриптор файла. Что такое дескриптор, с чем его едят? Хорошо, что здесь https://www.mql5.com/ru/articles/496 автор статьи объяснил для начинающих, что на русском языке Handle - это уникальный указатель на что-либо (на файл, на индикатор и т.п.).

Теперь остается понять смысл всего кода. Прошу помощи у сообщества, т.к. засиделся разбирая этот код до 3-х часов ночи и голова уже совсем не соображает.

С уважением, Владимир.

Быстрый старт или краткий курс для начинающих
Быстрый старт или краткий курс для начинающих
  • www.mql5.com
Здравствуй дорогой читатель. В данной статье я попробую рассказать и покажу как можно просто и быстро освоить принципы построения торговых советников, работу с индикаторами и т.д. Эта статья ориентирована на новичков, в ней не будет сложных и трудных для понимания примеров. Скорей всего, она не будет интересной и познавательной для тех, кто уже...
 
MrBrooklin:

Всем привет!

Продолжаю изучать языл MQL5 и вот новая строка кода, которая не понятна даже после работы с ней хэлпом и Гугл переводом.

Комментарий сделан мной, но не совсем понятен её смысл. Еле разобрался, что такое FileHandle. Разбил на два слова File и Handle. Гугл перевел, как дескриптор файла. Что такое дескриптор, с чем его едят? Хорошо, что здесь https://www.mql5.com/ru/articles/496 автор статьи объяснил для начинающих, что на русском языке Handle - это уникальный указатель на что-либо (на файл, на индикатор и т.п.).

Теперь остается понять смысл всего кода. Прошу помощи у сообщества, т.к. засиделся разбирая этот код до 3-х часов ночи и голова уже совсем не соображает.

С уважением, Владимир.

А зачем что-то переводить гуглой, если в документации всё по русски написано

Перемещает положение файлового указателя на указанное количество байт относительно указанного положения.

И я-бы ваш комментарий перевёл так: «Перемещает указатель файла от начала на 0 байт. Другими словами, в начало файла»

Точка отсчета для смещения. Может принимать одно из значений перечисления ENUM_FILE_POSITION

Идентификатор

Описание

SEEK_SET

Начало файла

SEEK_CUR

Текущая позиция файлового указателя

SEEK_END

Конец файла

Документация по MQL5: Файловые операции / FileSeek
Документация по MQL5: Файловые операции / FileSeek
  • www.mql5.com
//|                                                Demo_FileSeek.mq5 | //|                        Copyright 2013, MetaQuotes Software Corp. | //|                                              https://www.mql5.com | //| Script program start function                                    |...
 
Alexey Viktorov:

А зачем что-то переводить гуглой, если в документации всё по русски написано

И я-бы ваш комментарий перевёл так: «Перемещает указатель файла от начала на 0 байт. Другими словами, в начало файла»

Идентификатор

Описание

SEEK_SET

Начало файла

SEEK_CUR

Текущая позиция файлового указателя

SEEK_END

Конец файла

Здравствуйте, Алексей!

Гуглом переводил смысл словосочетания FileHandle. Хотел понять, что это такое и откуда оно взялось. Хелп не помог, поэтому пришлось обратиться к Гуглу. Когда разобрался, оказалось, что это автор кода сам создал переменную для хранения файла с уникальным указателем. В плане FileSeek и SEEK_SET хелп помог, но только не был понятен смысл всей строки. Теперь, с помощью Вашей подсказки стало ясно для чего это делается в файле с уникальным указателем.

Спасибо Вам большое за то, что помогаете!!!

С уважением, Владимир.

Документация по MQL5: Константы, перечисления и структуры / Константы ввода/вывода / Позиционирование внутри файла
Документация по MQL5: Константы, перечисления и структуры / Константы ввода/вывода / Позиционирование внутри файла
  • www.mql5.com
Большая часть файловых функций связана с операциями чтения/записи информации. При этом с помощью функции FileSeek() можно указывать положение файлового указателя на позицию внутри файла, с которой будет...
 
MrBrooklin:

Здравствуйте, Алексей!

Гуглом переводил смысл словосочетания FileHandle. Хотел понять что это такое и откуда оно взялось. Хелп не помог, поэтому пришлось обратиться к Гуглу. В плане FileSeek и SEEK_SET хелп помог, но только не был понятен смысл всей строки. Теперь, с помощью Вашей подсказки стало ясно для чего это делается в файле с уникальным указателем.

Спасибо Вам большое за то, что помогаете!!!

С уважением, Владимир.

Указатель не уникален, это просто положение начала записи или чтения. Типа как мы пишем заявление. Шапка начинается со второй половины листа, остальной текст с левого края листа. Или новый абзац начинаем писать чуть отступив от края строки. Вот начало строки и есть указатель. В нашем случае мы можем переместить начало записи в любое место имеющегося текста и туда произвести запись или прочесть с этого места.

Уникальным считается handle файла. Это можно назвать ещё идентификатором. А по сути это обычная переменная. Можете её назвать хоть abrakadabra и присвоить ей хендл файла.

 
Sergey:

Добрый день!

Разбираю код индикатора. Застрял на одной строчке.

Что значит последняя строка и как ее можно переписать проще (понятнее) ?

Она написана куда проще, чем любая другая конструкция. Называется: тернарный оператор

cancl[i] = (acD==1 && aoD==1) ? 0 : (acD==2 && aoD==2) ? 1 : (acD==1 && aoD==2)? 2 : 3;
cancl[i] = if(acD==1 && aoD==1) { 0 } else { if(acD==2 && aoD==2) { 1 else { (acD==1 && aoD==2)? 2 : 3;
Код показал условно, надеюсь, разберётесь дальше 
Документация по MQL5: Основы языка / Операторы / Условный оператор ?:
Документация по MQL5: Основы языка / Операторы / Условный оператор ?:
  • www.mql5.com
В качестве первого операнда – "выражение1" – может быть использовано любое выражение, результатом которого является значение типа bool. Если результат равен , то выполняется третий операнд – "выражениеЗ". Второй и третий операнды, то есть "выражение2" и "выражениеЗ", должны возвращать значения одного типа и не должны иметь тип void. Результатом...
 
Sergey:

Добрый день!

Разбираю код индикатора. Застрял на одной строчке.

Что значит последняя строка и как ее можно переписать проще (понятнее) ?

// cancl[i] = (acD==1 && aoD==1) ? 0 : (acD==2 && aoD==2) ? 1 : (acD==1 && aoD==2)? 2 : 3;

if      (acD==1 && aoD==1)   { cancl[i]=0; }
else if (acD==2 && aoD==2)   { cancl[i]=1; }
else if (acD==1 && aoD==2)   { cancl[i]=2; }
else                         { cancl[i]=3; }

но такое на мой взгляд не проще и не понятней. Зато почти в стиле MT :-) чтобы совсем совсем в стиль попасть - строк должно быть больше и идти должны "лесенкой" :-)

Причина обращения: