|
|||||||
MarketInfo
Время создания: 30.07.2017 10:56
Текстовые метки: code
Раздел: MQL - Syntaxis
Запись: xintrea/mytetra_db_mcold/master/base/1501401394uh0it8cthd/text.html на raw.githubusercontent.com
|
|||||||
|
|||||||
Функция Symbol() сама по себе достаточно простая. В ней нам не нужно вводить никаких дополнительных параметров. Для практического примера использования Symbol(), давайте в блоке onTimer() мы с Вами введем локальную текстовую переменную string y и присвоим ей значение Symbol(). Далее, при помощи команды Comment(), выведем данную переменную на график. // БЛОК ЦИКЛА, ВЫПОЛНЯЮЩИЙСЯ ПО ТАЙМЕРУ void OnTimer() { string y = Symbol(); Comment(y); }
Компилируем наш код. Открываем терминал, перетаскиваем советник на график, нажимаем «OK» и смотрим, что же у нас получилось. На графике в левом верхнем углу мы видим валютную пару GBPUSD.
Как работает функция Symbol()? Она просто возвращает наименование того валютного инструмента, на котором у нас стоит график. В дальнейшем, в советниках она нам будет достаточно полезна.
Функция MQL4 — MarketInfo(); Теперь, давайте рассмотрим функцию MarketInfo(). Она уже более сложная. MarketInfo(EURUSD, MODE_HIGH);
Внутри нее нужно вводить входящую информацию, а именно:
А конкретно, в типе информации мы можем прописать одну из следующих констант для выбранной валютной пары:
В данном примере: MarketInfo(EURUSD, MODE_HIGH); функция MarketInfo() будет искать максимальную дневную цену на паре Евро/Доллар, которую мы прописали сами. Но, мы может не прописывать валютную пару, а вместо нее поставить Symbol(). Тогда Symbol() проанализирует наш график и ту валютную пару, которая отображается на данном графике, после чего сама подставит наименование этого валютного инструмента. MarketInfo(Symbol(), MODE_HIGH);
Давайте рассмотрим MarketInfo () более подробно на практике. Выводить всю информацию будем в функции Comment(). Что мы делаем? Мы в команду Comment() вставляем MarketInfo(), и в скобочках этой функции прописываем тот инструмент, по которому хотим видеть информацию. Но, на прямую прописывать этот валютный инструмент мы не будем, а сделаем возможность вводить наименование валютной пары во входящих значениях советника. Соответственно, нам нужно ввести глобальную переменную текстового типа (текстового, потому что мы будем писать наименование валютной пары, а это текст) и для вывода этой переменной во входящих значениях в свойствах советника, нам нужно перед ее объявлением поставить extern. Далее, в MarketInfo() первым параметром пропишем текстовую переменную, о которой говорили в абзаце выше, и вторым параметром мы пропишем константу MODE_SPREAD. И, как следствие, наш созданный советник выведет на экран спред по заданной нами валютной паре. Итак, код будет таким: //+------------------------------------------------------------------+ //| My_first_expert.mq4 | //| Copyright (с) Антон SanGReal Invest | //| https://sgr-tradeinvest.ru | //+------------------------------------------------------------------+ #property copyright "Copyright (с) Антон SanGReal Invest" #property link "https://sgr-tradeinvest.ru" #property version "1.00" #property strict extern string y = "EURUSD"; //Наименование валютной пары // БЛОК ИНИЦИАЛИЗАЦИИ int OnInit() { EventSetTimer(1); return(INIT_SUCCEEDED); } // БЛОК ДЕИНИЦИАЛИЗАЦИИ void OnDeinit(const int reason) { EventKillTimer(); } // БЛОК ЦИКЛА, ВЫПОЛНЯЮЩИЙСЯ ПО ТИКАМ void OnTick() { } // БЛОК ЦИКЛА, ВЫПОЛНЯЮЩИЙСЯ ПО ТАЙМЕРУ void OnTimer() { Comment(MarketInfo(y,MODE_SPREAD)); }
Компилируем код. Открываем терминал, перетаскиваем наш советник на график, жмем клавишу «OK» и смотрим результат:
101.0 это спред (в выходные дни) по паре EURUSD, заданной в настройках нашего советника:
Хотите изучить MQL4 быстро, легко и бесплатно? Несколько усложним код. Теперь выведем несколько значений из функции MarketInfo(). Каждое новое значение будет выводится с новой строки, для этого применим специальный символ переноса на новую строку — «\n». // БЛОК ЦИКЛА, ВЫПОЛНЯЮЩИЙСЯ ПО ТАЙМЕРУ void OnTimer() { Comment( MarketInfo(y,MODE_LOW),"\n", MarketInfo(y,MODE_HIGH),"\n", MarketInfo(y,MODE_BID),"\n", MarketInfo(y,MODE_ASK),"\n", MarketInfo(y,MODE_DIGITS),"\n", MarketInfo(y,MODE_SPREAD) ); }
И, для визуального удобства, сделаем в выводе информации текстовое описание выводимых значений. Напоминаю, когда мы в MQL4 выводим текстовую информацию, то ее нужно прописывать в кавычках. Также, не забываем разделять наше текстовое описание и сами значения запятыми. Вот что у нас должно получиться: // БЛОК ЦИКЛА, ВЫПОЛНЯЮЩИЙСЯ ПО ТАЙМЕРУ void OnTimer() { Comment( "минимальная дневная цена = ",MarketInfo(y,MODE_LOW),"\n", "максимальная дневная цена = ",MarketInfo(y,MODE_HIGH),"\n", "последняя поступившая цена предложения = ",MarketInfo(y,MODE_BID),"\n", "последняя поступившая цена продажи = ",MarketInfo(y,MODE_ASK),"\n", "количество цифр после запятой в цене инструмента = ",MarketInfo(y,MODE_DIGITS),"\n", "спрэд в пунктах = ",MarketInfo(y,MODE_SPREAD) ); }
И, напоследок, дополнительно выведем само название нашей валютной пары, при помощи следующего кода: "Валютная пара, по которой мы проводим исследование = ",y,"\n","\n",
Компилируем наш код. Открываем терминал и смотрим. У нас получился достаточно удобный текст справочной информации:
Для Вашего удобства, выкладываю MQL код полностью: //+------------------------------------------------------------------+ //| My_first_expert.mq4 | //| Copyright (с) Антон SanGReal Invest | //| https://sgr-tradeinvest.ru | //+------------------------------------------------------------------+ #property copyright "Copyright (с) Антон SanGReal Invest" #property link "https://sgr-tradeinvest.ru" #property version "1.00" #property strict extern string y = "EURUSD"; //Наименование валютной пары // БЛОК ИНИЦИАЛИЗАЦИИ int OnInit() { EventSetTimer(1); return(INIT_SUCCEEDED); } // БЛОК ДЕИНИЦИАЛИЗАЦИИ void OnDeinit(const int reason) { EventKillTimer(); } // БЛОК ЦИКЛА, ВЫПОЛНЯЮЩИЙСЯ ПО ТИКАМ void OnTick() { } // БЛОК ЦИКЛА, ВЫПОЛНЯЮЩИЙСЯ ПО ТАЙМЕРУ void OnTimer() { Comment("\n", "Валютная пара, по которой мы проводим исследование = ",y,"\n","\n", "Минимальная дневная цена = ",MarketInfo(y,MODE_LOW),"\n", "Максимальная дневная цена = ",MarketInfo(y,MODE_HIGH),"\n", "Последняя поступившая цена предложения = ",MarketInfo(y,MODE_BID),"\n", "Последняя поступившая цена продажи = ",MarketInfo(y,MODE_ASK),"\n", "Количество цифр после запятой в цене инструмента = ",MarketInfo(y,MODE_DIGITS),"\n", "Спрэд в пунктах = ",MarketInfo(y,MODE_SPREAD) ); } |
|||||||
Так же в этом разделе:
|
|||||||
|
|||||||
|