Любые вопросы новичков по MQL4 и MQL5, помощь и обсуждение по алгоритмам и кодам - страница 2296
Вы упускаете торговые возможности:
- Бесплатные приложения для трейдинга
- 8 000+ сигналов для копирования
- Экономические новости для анализа финансовых рынков
Регистрация
Вход
Вы принимаете политику сайта и условия использования
Если у вас нет учетной записи, зарегистрируйтесь
Понятно что пустой массив до его заполнения , (то есть только объявленный, но не заполненный массив), лежит в теле ( в коде) Советника. Потом в теле этого же Советника этот массив инициализируется, то есть ,заполняется значениями.
ВОПРОС. А получится у меня только объявить этот же массив но не в теле Советника , а в файле mqh . А заполнить объявленный в файле mqh массив значениями (инициализировать) в теле Советника?
Обращаю Ваше внимание на то, что я говорю не об изменении значений уже заполненного массива в файле mqh , а о первоначальном заполнении пустого массива в файле mqh первоначальными значениями.
В предыдущих постах однозначно говорилось , что изменять уже заполненные значения массива в файле mqh при помощи кода mql4 невозможно.
Я же в своем вопросе спрашиваю не об изменении а о первоначальном заполнении значениями.
Спасибо
Андрей, у меня к вам какое-то странное отношение. Сам не могу понять какое…
То мне надоедает такой, простите тупизм, то почитав какие вам дают советы и что вы понимаете в этих советах становится жалко вашу психику. Боюсь что вы можете сойти с ума.
Извините, это сказано не для того чтобы обидеть вас.
Теперь по существу. Попытаюсь вам объяснить, на мой взгляд подоходчивей.
Если заполнять массив в теле советника, то файл .mqh тут совсем не при делах. Всё что пишется в файле .mqh может быть изменено ИСКЛЮЧИТЕЛЬНО ВРУЧНУЮ С КЛАВИАТУРЫ. Чем-бы вы не заполнили массив, не зависимо от того где он объявлен, вы не сможете этот массив сохранить в этом .mqh файле. Самый лучший вариант вам работать с файлом .bin который можно и писать на диск, и читать, и после первоначального заполнения или внесения изменений перезаписывать. После прочтения массива из файла .bin вы просто работаете с этим массивом, а после изменений перезаписываете файл .bin и тогда другой советник прочтёт этот массив уже с внесёнными изменениями.
И если я правильно помню, вы хотите чтобы с этим массивом могли работать несколько советников. Отсюда и был мой первый совет сохранять промежуточные изменения массива в файл .bin и находиться он должен в общей папке терминалов.
Забудьте про .mqh как страшный сон и долго о нём не вспоминайте.
Андрей, у меня к вам какое-то странное отношение. Сам не могу понять какое…
То мне надоедает такой, простите тупизм, то почитав какие вам дают советы и что вы понимаете в этих советах становится жалко вашу психику. Боюсь что вы можете сойти с ума.
Извините, это сказано не для того чтобы обидеть вас.
Теперь по существу. Попытаюсь вам объяснить, на мой взгляд подоходчивей.
Если заполнять массив в теле советника, то файл .mqh тут совсем не при делах. Всё что пишется в файле .mqh может быть изменено ИСКЛЮЧИТЕЛЬНО ВРУЧНУЮ С КЛАВИАТУРЫ. Чем-бы вы не заполнили массив, не зависимо от того где он объявлен, вы не сможете этот массив сохранить в этом .mqh файле. Самый лучший вариант вам работать с файлом .bin который можно и писать на диск, и читать, и после первоначального заполнения или внесения изменений перезаписывать. После прочтения массива из файла .bin вы просто работаете с этим массивом, а после изменений перезаписываете файл .bin и тогда другой советник прочтёт этот массив уже с внесёнными изменениями.
И если я правильно помню, вы хотите чтобы с этим массивом могли работать несколько советников. Отсюда и был мой первый совет сохранять промежуточные изменения массива в файл .bin и находиться он должен в общей папке терминалов.
Забудьте про .mqh как страшный сон и долго о нём не вспоминайте.
Спасибо Забыть про .mqh я почему то не хочу. Наверное потому что я слегка дотошный человек и раз начал изучать тему .mqh , то хочу изучить ее до определенного конца и по возможности со всех доступных моему пониманию сторон. Поэтому я хочу получить ответ свой вопрос о том можно ли объявить массив в в файле .mqh , а заполнить этот массив( то есть , инициализировать) в Советнике(из Советника) на mql4. Из моего желания получить ответ на этот вопрос вовсе не вытекает того что я буду пользоваться файлом .mqh. Просто я должен знать на будущее ответ на свой вопрос.
ВАШИ СЛОВА, которые вероятно по Вашему мнению являются ответом на мой вопрос " Всё что пишется в файле .mqh может быть изменено ИСКЛЮЧИТЕЛЬНО ВРУЧНУЮ С КЛАВИАТУРЫ." Я это уже давно понял. И поэтому задаю вопрос не об изменении значений массива который лежит в в файле .mqh , а о заполнении (инициализации) массива который объявлен в файле .mqh , а точнее о заполнении этого массива значениями из Советника на mql 4.
Если это возможно, то в дальнейшем я УЖЕ не планирую изменять данные этого инициализированного массива в файле.mqh( как я пытался делать первоначально). Только инициализация и ничего больше. И свое желание использовать один массив из файла .mqh в разных Советниках я уже так же давно аннулировал после общения здесь на эту тему.
Для меня ответ на этот вопрос содержит определенную интригу потому что пользователь Алексей Федотов и Алексей Степаненко уверенно и однозначно утверждают что инициализировать объявленный в mqh массив из Советника на mql4 можно, а Вы почему то не даете прямого и однозначного ответа на этот вопрос, не смотря на то что я его формулировал неоднократно. К тому же Вы еще и критикуете какие то ответы других участников моей беседы .
Возможно мы с вами не очень быстро понимаем друг друга по причине нашей недостаточной внимательности , которая случается у нас иногда :):):)
Спасибо Забыть про .mqh я почему то не хочу. Наверное потому что я слегка дотошный человек и раз начал изучать тему .mqh , то хочу изучить ее до определенного конца и по возможности со всех доступных моему пониманию сторон. Поэтому я хочу получить ответ свой вопрос о том можно ли объявить массив в в файле .mqh , а заполнить этот массив( то есть , инициализировать) в Советнике(из Советника) на mql4. Из моего желания получить ответ на этот вопрос вовсе не вытекает того что я буду пользоваться файлом .mqh. Просто я должен знать на будущее ответ на свой вопрос.
ВАШИ СЛОВА, которые вероятно по Вашему мнению являются ответом на мой вопрос " Всё что пишется в файле .mqh может быть изменено ИСКЛЮЧИТЕЛЬНО ВРУЧНУЮ С КЛАВИАТУРЫ." Я это уже давно понял. И поэтому задаю вопрос не об изменении значений массива который лежит в в файле .mqh , а о заполнении (инициализации) массива который объявлен в файле .mqh , а точнее о заполнении этого массива значениями из Советника на mql 4.
Если это возможно, то в дальнейшем я УЖЕ не планирую изменять данные этого инициализированного массива в файле.mqh( как я пытался делать первоначально). Только инициализация и ничего больше. И свое желание использовать один массив из файла .mqh в разных Советниках я уже так же давно аннулировал после общения здесь на эту тему.
Для меня ответ на этот вопрос содержит определенную интригу потому что пользователь Алексей Федотов и Алексей Степаненко уверенно и однозначно утверждают что инициализировать объявленный в mqh массив из Советника на mql4 можно, а Вы почему то не даете прямого и однозначного ответа на этот вопрос, не смотря на то что я его формулировал неоднократно. К тому же Вы еще и критикуете какие то ответы других участников моей беседы .
Возможно мы с вами не очень быстро понимаем друг друга по причине нашей недостаточной внимательности , которая случается у нас иногда :):):)
код во включаемом файле ничем не отличается от кода советника. Компилятор вставляет код мкх файла в место где написано инклуд и компилирует код советника с этой вставкой. Можете по экспериментировать, даже если в коде мкх файла не будет всех переменных и он компилируется с ошибками, его можно вставить в любом месте кода советника. мкх файл при компиляции остается кодом, в отличие от исполняемых файлов советников индикаторов скриптов, которые превращаются в исполняемый файл ex4.
Поэтому без разницы где вы объявите массив или другие переменные. Все так же как и в основном коде.
Спасибо Забыть про .mqh я почему то не хочу. Наверное потому что я слегка дотошный человек и раз начал изучать тему .mqh , то хочу изучить ее до определенного конца и по возможности со всех доступных моему пониманию сторон. Поэтому я хочу получить ответ свой вопрос о том можно ли объявить массив в в файле .mqh , а заполнить этот массив( то есть , инициализировать) в Советнике(из Советника) на mql4. Из моего желания получить ответ на этот вопрос вовсе не вытекает того что я буду пользоваться файлом .mqh. Просто я должен знать на будущее ответ на свой вопрос.
ВАШИ СЛОВА, которые вероятно по Вашему мнению являются ответом на мой вопрос " Всё что пишется в файле .mqh может быть изменено ИСКЛЮЧИТЕЛЬНО ВРУЧНУЮ С КЛАВИАТУРЫ." Я это уже давно понял. И поэтому задаю вопрос не об изменении значений массива который лежит в в файле .mqh , а о заполнении (инициализации) массива который объявлен в файле .mqh , а точнее о заполнении этого массива значениями из Советника на mql 4.
Если это возможно, то в дальнейшем я УЖЕ не планирую изменять данные этого инициализированного массива в файле.mqh( как я пытался делать первоначально). Только инициализация и ничего больше. И свое желание использовать один массив из файла .mqh в разных Советниках я уже так же давно аннулировал после общения здесь на эту тему.
Для меня ответ на этот вопрос содержит определенную интригу потому что пользователь Алексей Федотов и Алексей Степаненко уверенно и однозначно утверждают что инициализировать объявленный в mqh массив из Советника на mql4 можно, а Вы почему то не даете прямого и однозначного ответа на этот вопрос, не смотря на то что я его формулировал неоднократно. К тому же Вы еще и критикуете какие то ответы других участников моей беседы .
Возможно мы с вами не очень быстро понимаем друг друга по причине нашей недостаточной внимательности , которая случается у нас иногда :):):)
Андрей, вот так выглядит файл .mqh
Находится он тут
И любая из этих функций может быть добавлена в советник при компиляции. Те функции к которым советник не обращается в советник включены не будут. Но ведь можно взять любую из этих функций и скопировать в код советника. Ведь ничего не изменится.
Точно так-же и с массивом. Его можно объявить в .mqh и можно объявить в коде советника. Ничего не изменится. Можно объявить динамическим, можно статическим. Можно заполнять в коде советника, можно написать функцию заполнения в .mqh или как вы показали где-то раньше уже заполненный массив.
Что осталось непонятным? Ведь я долго вообще не встревал. Вам говорили «можно» вы опять задавали вопрос. Опять «можно» опять вопрос. Вот я и подумал, что вопрос в другом.
На этом я опять ныряю в тину и молчу…
Спасибо Забыть про .mqh я почему то не хочу. Наверное потому что я слегка дотошный человек и раз начал изучать тему .mqh , то хочу изучить ее до определенного конца и по возможности со всех доступных моему пониманию сторон. Поэтому я хочу получить ответ свой вопрос о том можно ли объявить массив в в файле .mqh , а заполнить этот массив( то есть , инициализировать) в Советнике(из Советника) на mql4. Из моего желания получить ответ на этот вопрос вовсе не вытекает того что я буду пользоваться файлом .mqh. Просто я должен знать на будущее ответ на свой вопрос.
ВАШИ СЛОВА, которые вероятно по Вашему мнению являются ответом на мой вопрос " Всё что пишется в файле .mqh может быть изменено ИСКЛЮЧИТЕЛЬНО ВРУЧНУЮ С КЛАВИАТУРЫ." Я это уже давно понял. И поэтому задаю вопрос не об изменении значений массива который лежит в в файле .mqh , а о заполнении (инициализации) массива который объявлен в файле .mqh , а точнее о заполнении этого массива значениями из Советника на mql 4.
Если это возможно, то в дальнейшем я УЖЕ не планирую изменять данные этого инициализированного массива в файле.mqh( как я пытался делать первоначально). Только инициализация и ничего больше. И свое желание использовать один массив из файла .mqh в разных Советниках я уже так же давно аннулировал после общения здесь на эту тему.
Для меня ответ на этот вопрос содержит определенную интригу потому что пользователь Алексей Федотов и Алексей Степаненко уверенно и однозначно утверждают что инициализировать объявленный в mqh массив из Советника на mql4 можно, а Вы почему то не даете прямого и однозначного ответа на этот вопрос, не смотря на то что я его формулировал неоднократно. К тому же Вы еще и критикуете какие то ответы других участников моей беседы .
Возможно мы с вами не очень быстро понимаем друг друга по причине нашей недостаточной внимательности , которая случается у нас иногда :):):)
"Чтобы правильно задать вопрос, надо знать 80% ответа."
Файл .mqh именно что "включается" в исходный текст программы, т.е., "становится его частью", поэтому абсолютно без разницы, где объявлять и где (после объявления) инициализировать массив.
И даже писать в файл .mqh тоже, в принципе, можно, но на вашем текущем уровне понимания лучше считать, что нет.
"Чтобы правильно задать вопрос, надо знать 80% ответа."
Файл .mqh именно что "включается" в исходный текст программы, т.е., "становится его частью", поэтому абсолютно без разницы, где объявлять и где (после объявления) инициализировать массив.
И даже писать в файл .mqh тоже, в принципе, можно, но на вашем текущем уровне понимания лучше считать, что нет.
Ок. всем спасибо за участие в беседе со мной . Она была для меня очень познавательной. Задавать больше вопросов по этой теме пока больше не планирую. Считаю нужным сначала осмыслить как следует полученную информацию.
И даже писать в файл .mqh тоже, в принципе, можно, но на вашем текущем уровне понимания лучше считать, что нет.
Именно это(писать в файл . mqh) я и хотел понять. Как записать данные в массив (инициализировать его) в файл mqh из Советника на mql4.
Понимаю что Советнику без разницы где будет инициализирован массив. Если в теле советника , то он сразу обратится к этому массиву. Если в файле mqh, то Советник сначала возьмет массив из файла mqh и после этого вставит массив в свой код , а потом так же обратится к этому же массиву.
Я у всех спрашиваю о том как инициализировать массив объявленный в файле mqh, а мне вместо ответа на этот вопрос все говорят что это не имеет смысла и что это нецелесообразно . И я с этим согласен. Код массива один и тот же , просто может находится в разных местах. В теле и в файле. Но вопрос то я задавал не о целесообразности инициализации массива в файле mqh, а о том как проинициализировать , или как вы сказали писать данные в массив который объявлен в mqh.
Просто я не знал и даже не догадывался , что процесс инициализации массива объявленного в файле mqh недоступен моему пониманию. Вероятно участники беседы со мной намного лучше проинформированы об уровне моего понимания и о моей способности что то понять , чем я сам. Забавный парадокс.....
Если бы мне прислали код с комментариями при помощи которого можно инициализировать массив объявленный во включаемом файле из Советника на mql4, я был бы очень признателен , и на этом успокоился бы...
Если в теле советника , то он сразу обратится к этому массиву. Если в файле mqh, то Советник сначала возьмет массив из файла mqh и после этого вставит массив в свой код , а потом так же обратится к этому же массиву.
Вот в этом ваше ключевое заблуждение, как мне видится.
Файл .mqh - это не "советник возьмёт из файла", а "компилятор возьмёт этот файл и вставит в тело советника".
Писать в файл .mqh, в принципе, возможно, но, вероятно, это совсем не то, чего вы хотите добиться. Любые изменения в этом файле повлияют только на последующие компиляции советников, использующих этот файл.Вот в этом ваше ключевое заблуждение, как мне видится.
Файл .mqh - это не "советник возьмёт из файла", а "компилятор возьмёт этот файл и вставит в тело советника".
Спасибо. Но мне кажется , что это не заблуждение и тем более не ключевое. А просто моя не достаточно точная формулировка . Ведь если я не ошибаюсь, результат компиляции будет одинаковым как в случае если инициализированный массив будет лежать в теле Советника , так и в случае если он будет лежать во включаемом файле. И поэтому , до некоторой степени я согласен что инициализировать массив во включаемом файле , до некоторой степени, не имеет смысла. Но тем не менее , я хочу научиться инициализировать массив который объявлен в во вкл. файле, а не в теле советника.
Спасибо. Но мне кажется , что это не заблуждение и тем более не ключевое. А просто моя не достаточно точная формулировка . Ведь если я не ошибаюсь, результат компиляции будет одинаковым как в случае если инициализированный массив будет лежать в теле Советника , так и в случае если он будет лежать во включаемом файле.
Результат компиляции будет одинаковым, в обоих случаях в результате инициализированный массив, вместе с телом советника, будет лежать в файле .ex4