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

 
Valeriy Yastremskiy #:

Вопрос возник

Структура 

MqlTick last_tick;



Ask где объявлен?
 
Artyom Trishkin #:
Ask где объявлен?

Глобально. 

В глобальной области объявил MqlTick тоже

#define Ask SymbolInfoDouble(Symbol,SYMBOL_ASK) // верный результат
#define Ask last_tick.ask                       // возвращает ноль

MqlTick last_tick; 

int OnInit()
  {
 ......
else LevelPrice[NumberLevelsDoun]= Ask;         // Массив глобально объявлен
......

else LevelPrice[NumberLevelsDoun]= last_tick.ask;         // тоже ноль возвращает


}
Документация по MQL5: Константы, перечисления и структуры / Структуры данных / Структура для получения текущих цен
Документация по MQL5: Константы, перечисления и структуры / Структуры данных / Структура для получения текущих цен
  • www.mql5.com
Структура для получения текущих цен - Структуры данных - Константы, перечисления и структуры - Справочник MQL5 - Справочник по языку алгоритмического/автоматического трейдинга для MetaTrader 5
 
Valeriy Yastremskiy #:

Глобально. 

В глобальной области объявил MqlTick тоже

Тогда другой вопрос: где объявлен Symbol ?

Насчёт использования структуры - вы её где-то заполняете при помощи SymbolInfoTick() ? Или решили, что её полтергейст за вас заполнит? :)

 
Artyom Trishkin #:

Тогда другой вопрос: где объявлен Symbol ?

Насчёт использования структуры - вы её где-то заполняете при помощи SymbolInfoTick() ? Или решили, что её полтергейст за вас заполнит? :)

Спасибо, понял.) 

Вообще про заполнение можно было бы и написать явно))), а не так

MqlTick

Переменная типа MqlTick позволяет за один вызов функции SymbolInfoTick() получить значения Ask, Bid, Last и Volume.

 
Valeriy Yastremskiy #:

Спасибо, понял.) 

Вообще про заполнение можно было бы и написать явно))), а не так

MqlTick

Переменная типа MqlTick позволяет за один вызов функции SymbolInfoTick() получить значения Ask, Bid, Last и Volume.

В справке есть пример.

Документация по MQL5: Константы, перечисления и структуры / Структуры данных / Структура для получения текущих цен
Документация по MQL5: Константы, перечисления и структуры / Структуры данных / Структура для получения текущих цен
  • www.mql5.com
Структура для получения текущих цен - Структуры данных - Константы, перечисления и структуры - Справочник MQL5 - Справочник по языку алгоритмического/автоматического трейдинга для MetaTrader 5
 
Вот его я и не до конца понял. Можно получить и заполняет структуру))) Не ожидал равенства)
 
Valeriy Yastremskiy #:
Вот его я и не до конца понял. Можно получить и заполняет структуру))) Не ожидал равенства)

А что непонятного в этой записи в справке?

"Переменная типа MqlTick позволяет за один вызов функции SymbolInfoTick() получить значения Ask, Bid, Last и Volume."

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

Если в структуру ничего не записывать, то что будет в её полях, как думаете?

В справке написано "за один вызов функции SymbolInfoTick()", а это означает, что вызов этой функции заполнит переданную в неё структуру MqlTick.

Сама по себе переменная с типом структуры MqlTick ничего в себя волшебным образом не запишет.

Вы вот в свою переменную что-то же записываете? Например, Ask=SymbolInfoDouble(Symbol(),SYMBOL_ASK);, а не сразу после объявления пытаетесь из неё цену получить.

А какая тогда разница между этими переменными, что Вы сразу после объявления переменной с типом MqlTick хотите увидеть её заполненной данными?

 
Artyom Trishkin #:

А что непонятного в этой записи в справке?

"Переменная типа MqlTick позволяет за один вызов функции SymbolInfoTick() получить значения Ask, Bid, Last и Volume."

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

Если в структуру ничего не записывать, то что будет в её полях, как думаете?

В справке написано "за один вызов функции SymbolInfoTick()", а это означает, что вызов этой функции заполнит переданную в неё структуру MqlTick.

Сама по себе переменная с типом структуры MqlTick ничего в себя волшебным образом не запишет.

Вы вот в свою переменную что-то же записываете? Например, Ask=SymbolInfoDouble(Symbol(),SYMBOL_ASK);, а не сразу после объявления пытаетесь из неё цену получить.

А какая тогда разница между этими переменными, что Вы сразу после объявления переменной с типом MqlTick хотите увидеть её заполненной данными?

Дело в разности восприятия.))) Со мной это второй раз уже. ОрдерСелект тоже заполняет структуру, и узнал я об этом нв форуме, а из справки я этого не понял. Может дело конечно во мне))))

Решения могут быть разными))) )))

 
Valeriy Yastremskiy #:

Дело в разности восприятия.))) Со мной это второй раз уже. ОрдерСелект тоже заполняет структуру, и узнал я об этом нв форуме, а из справки я этого не понял. Может дело конечно во мне))))

Решения могут быть разными))) )))

Если в функцию по ссылке передаётся что-либо (массив, структура, переменная), то логично предположить, что она заполняется в функции, и результат сразу же отображён в массиве, структуре, переменной

 
Artyom Trishkin #:

Если в функцию по ссылке передаётся что-либо (массив, структура, переменная), то логично предположить, что она заполняется в функции, и результат сразу же отображён в массиве, структуре, переменной

Массив и структура ВСЕГДА передаются в функцию по ссылке.

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