Любые вопросы новичков по MQL4 и MQL5, помощь и обсуждение по алгоритмам и кодам - страница 1960

 
to_ha #:

 Я по книге, по главам иду... Пол книги прошёл - в принципе всё понятно. Просто в мозгу появилась мысль - как ПРАВИЛЬНО это усвоить всё. Вот вы мне и подсказали, спасибо, зазубривать не надо)))

Книга С. Ковалёва устарела. Главное понять как заменить те функции которые описаны Ковалёвым на те которые надо применять сейчас.

 
Alexey Viktorov #:

Книга С. Ковалёва устарела. Главное понять как заменить те функции которые описаны Ковалёвым на те которые надо применять сейчас.

Да, я уже заметил, что многое изменилось и устарело. Но, сама структура понимания и написания практически осталась прежней. И на начальном этапе для лучшего усваивания помогает ютуб, там человек по книге с разъяснениями и более простыми фразами объясняет. Главное основу понять, а через месяц-второй я и до пятёрки доберусь, а там глядишь, и до вашего уровня недалеко будет;)

 
to_ha #:

Да, я уже заметил, что многое изменилось и устарело. Но, сама структура понимания и написания практически осталась прежней. И на начальном этапе для лучшего усваивания помогает ютуб, там человек по книге с разъяснениями и более простыми фразами объясняет. Главное основу понять, а через месяц-второй я и до пятёрки доберусь, а там глядишь, и до вашего уровня недалеко будет;)

Переносите код из книги создавая файлы через кнопку создать метаэдитора. Куда что вставлять обычно понятно. Старые инит, старт поддерживаются, но приводят к путанице, что есть что. Хорошая книга, но надо с умом читать, понимая, что многое изменилось. По функциям все поддерживается. В 14 - 16 году в 4ку добавлено много из 5ки в плане функций, массивов. В индикаторах стало 512 буферов вместо 8ми))) Как то так))) 

 
Valeriy Yastremskiy #:

Переносите код из книги создавая файлы через кнопку создать метаэдитора. 

Добрый день. Не могу сообразить, что за кнопка((( Можете уточнить? Запутался...

 
to_ha #:

Добрый день. Не могу сообразить, что за кнопка((( Можете уточнить? Запутался...

http://joxi.ru/5mdg41vtqB1qor

В верху слева. Под кнопкой Файл. Создать

Мастер MQL Файл (697 kb) закачан 18 мая 2022 г. Joxi
Мастер MQL Файл (697 kb) закачан 18 мая 2022 г. Joxi
  • joxi.ru
сделан при помощи Joxi.ru
 
Valeriy Yastremskiy #:

http://joxi.ru/5mdg41vtqB1qor

В верху слева. Под кнопкой Файл. Создать

Ага, понял, спасибо:) Меня просто в ступор взято количество вариантов создания, а оказывается просто через советник)

 

Всем доброго времени суток!
Вот простой код на mql 4

int LoS[15], Mgn=10,Tick;
void OnTick()
{
Tick++;
if (Tick == 2140)
{
for(int g=0; g<=14;g++) {LoS[g]= Mgn+ 100;} 
Mgn =  20;
for(int g1=0; g1<=14;g1++)Print("------------- ",LoS[g1],"   ",g1); 
}
} 

Элемент массива LoS[g] является суммой  Mgn + 100. После того как все 15 значений  LoS[g] заполнены значением 110 , именно после этого все 15 значений   LoS[g]мне нужно сразу изменить именно  путем и именно последующего  изменения значения   Mgn. То есть после изменения на том же тике ,значения  Mgn  = 20 ,все значения  LoS[g] на том же тике ,должны измениться и быть = 120 . Как изменить при помощи цикла я знаю. Но как изменить путем изменения значения  Mgn. Просто поменяв значение  Mgn(как в коде) изменить все 15  LoS[g] не получается. Мне почему то кажется что в  LoS[g] должна попадать не значение переменной  Mgn, а ссылка не переменную  Mgn. Если это так, то как передать ссылку на  Mgn в  LoS[g] . Или при помощи какой еще языковой конструкции можно реализовать мой замысел, который сводится к изменению значений элементов массива, после их заполнения путем изменения значения переменной, а не путем цикла ? 

Спасибо за помощь.

 
ANDREY #:

Всем доброго времени суток!
Вот простой код на mql 4

Элемент массива LoS[g] является суммой  Mgn + 100. После того как все 15 значений  LoS[g] заполнены значением 110 , именно после этого все 15 значений   LoS[g]мне нужно сразу изменить именно  путем и именно последующего  изменения значения   Mgn. То есть после изменения на том же тике ,значения  Mgn  = 20 ,все значения  LoS[g] на том же тике ,должны измениться и быть = 120 . Как изменить при помощи цикла я знаю. Но как изменить путем изменения значения  Mgn. Просто поменяв значение  Mgn(как в коде) изменить все 15  LoS[g] не получается. Мне почему то кажется что в  LoS[g] должна попадать не значение переменной  Mgn, а ссылка не переменную  Mgn. Если это так, то как передать ссылку на  Mgn в  LoS[g] . Или при помощи какой еще языковой конструкции можно реализовать мой замысел, который сводится к изменению значений элементов массива, после их заполнения путем изменения значения переменной, а не путем цикла ? 

Спасибо за помощь.

А ArrayInitialize() почему не подходит?

Или ArrayFill() где можно не полностью, а часть массива заполнить одним значением…

void  ArrayFill(
   void&  array[],       // массив
   int    start,         // индекс начального элемента
   int    count,         // количество элементов
   void   value          // значение, которым заполняется массив
   );
ArrayInitialize - Операции с массивами - Справочник MQL4
ArrayInitialize - Операции с массивами - Справочник MQL4
  • docs.mql4.com
ArrayInitialize - Операции с массивами - Справочник MQL4
 
Alexey Viktorov #:

А ArrayInitialize() почему не подходит?

Или ArrayFill() где можно не полностью, а часть массива заполнить одним значением…

Спасибо за помощь и за идею с ArrayFill() . Завтра попробую.

 
Alexey Viktorov #:

А ArrayInitialize() почему не подходит?

Или ArrayFill() где можно не полностью, а часть массива заполнить одним значением…

Переформулирую свой вопрос , что бы он стал более  понятен. 
ВОПРОС Можно ли в mql4  элементу массива присвоить не значение константы, не значение переменной( без самой переменной), а выражение , или переменную вместе с ее значением ?
Например   LoS[0]= х+у ; Где , например изначально эти переменные инициализированы   х = 10, а у = 20 и переменная LoS[0] после присвоения ей выражения  х+у   содержала бы значение  30. То, есть в   LoS[0] должна попадать не только сумма значений  Х и У, но  в   LoS[0] должны попадать и сами переменные  Х и У вместе со своими значениями.
А потом, после изменения в программе значения переменной х с 10 на 30 , значение элемента массива LoS[0]  автоматически стало бы 50 поскольку значение х в коде изменилось на 30.
То есть в этом случае для каждого  изменения значения  LoS[0]  не нужно было бы делать стандартную операцию присвоения  LoS[0]= х+у ; А поскольку  Х и У(как переменные) уже находятся внутри  LoS[0], то изменение значения   LoS[0] происходило бы автоматически , без операции присвоения , после того как в программе изменялось бы значение   Х и(или) У
Если в  LoS[0] попадают только значения  Х и У , то для изменения значения   LoS[0] каждый раз нужно делать операция присвоения. Если в  LoS[0] попадают НЕ только значения  Х и У ,но и сами переменные Х и У , то для изменения значения   LoS[0] каждый раз НЕ нужно делать операция присвоения, но достаточно изменить в коде значение переменных   Х и(или) У.

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