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

Vladimir Karputov:


Если нужно получить имя (например при сравнении символа позиции и текущего символ), нужно использовать метод CSymbolInfo::Name().

Пример использования:


В справке показаны две формы вызова метода Name

Name

Получает наименование финансового инструмента.

Возвращаемое значение

Наименование финансового инструмента.

У меня вопрос именно по этой форме метода Name. 

КАК мне получить в переменную именно ИМЯ инструмента?  Потому как, делая так: 

#include <Trade\SymbolInfo.mqh>
CSymbolInfo m_symbol;
string str_1="",str_2="",str_3="",name="";
name=m_symbol.Name();
Print("текущий символ: ",name);

в  name получается булевое true.  Как в него получить строку с именем инструмента, используя  метод CSymbolInfo::Name() ??

Документация по MQL5: Стандартная библиотека / Торговые классы / CSymbolInfo / Name
Документация по MQL5: Стандартная библиотека / Торговые классы / CSymbolInfo / Name
  • www.mql5.com
Стандартная библиотека / Торговые классы / CSymbolInfo / Name - справочник по языку алгоритмического/автоматического трейдинга для MetaTrader 5
odyn:

У меня вопрос именно по этой форме метода Name. 

КАК мне получить в переменную именно ИМЯ инструмента?  Потому как, делая так: 

в  name получается булевое true.  Как в него получить строку с именем инструмента, используя  метод CSymbolInfo::Name() ??

Сначала ИНИЦИАЛИЗИРУЕМ. Потом уже используем метод Name().

Код запускаем на символе ''

//+------------------------------------------------------------------+
//|                                                            1.mq5 |
//|                              Copyright © 2020, Vladimir Karputov |
//+------------------------------------------------------------------+
#property copyright "Copyright © 2019, Vladimir Karputov"
#property version   "1.00"
#include <Trade\SymbolInfo.mqh>
//---
CSymbolInfo    m_symbol;                     // object of CSymbolInfo class
//+------------------------------------------------------------------+
//| Script program start function                                    |
//+------------------------------------------------------------------+
void OnStart()
  {
   if(!m_symbol.Name(Symbol())) // sets symbol name
     {
      Print(__FILE__," ",__FUNCTION__,", ERROR: CSymbolInfo.Name");
      return;
     }
   string name=m_symbol.Name();
   Print("текущий символ: ",name);
//---
  }
//+------------------------------------------------------------------+

Результат:

1 (EURUSD,H1)   текущий символ: EURUSD
Vladimir Karputov:

Сначала ИНИЦИАЛИЗИРУЕМ. Потом уже используем метод Name().

Код запускаем на символе ''

Результат:

Дошло. Спасибо за терпение )).


ПС: у меня компилятор ругается на return в вашем коде. Когда убрал - все нормально.

odyn:

Дошло. Спасибо за терпение )).


ПС: у меня компилятор ругается на return в вашем коде. Когда убрал - все нормально.

Это скрипт (я дал пример скрипта), а не советник. Если Вы мой код скопировали в советник - будет ошибка.

Привет знатокам!

Вопрос по функции CopyHigh(CopyLow  таккже): какую цену выбирают эти функции? Аск или Бид?

odyn:

Привет знатокам!

Вопрос по функции CopyHigh(CopyLow  таккже): какую цену выбирают эти функции? Аск или Бид?

А откройте терминал (любой график) и посмотрите по каким ценам строится бар - это и будет ответ.

Vladimir Karputov:

А откройте терминал (любой график) и посмотрите по каким ценам строится бар - это и будет ответ.

Я знаю, что график строится по бид. 

Так что, єти функции тоже используют бид?

Для CopyHigh как бы немного нелогично использовать бид, т.к. цена аск все же повыше, значит, получается некорректные данные.

odyn:

Я знаю, что график строится по бид. 

Так что, єти функции тоже используют бид?

Для CopyHigh как бы немного нелогично использовать бид, т.к. цена аск все же повыше, значит, получается некорректные данные.

Всё абсолютно логично: терминал отрисовывает бары по Bid. Следовательно все данные OHLC также по Bid.

А вот если Вам ТАК ВАЖНО Bid или Ask то Вы можете изучить дополнительные функции:

Документация по MQL5: Доступ к таймсериям и индикаторам / CopySpread
Документация по MQL5: Доступ к таймсериям и индикаторам / CopySpread
  • www.mql5.com
Функция получает в массив spread_array исторические данные спредов для указанной пары символ-период в указанном количестве. Необходимо отметить, что отсчет элементов от стартовой позиции ведется от настоящего к прошлому, то есть стартовая позиция, равная 0, означает текущий бар. При копировании заранее неизвестного количества данных...
Существует ли возможность, чтобы при попытке закрыть терминал МТ5 выскакивало предупреждение "У вас есть открытые позиции/отложенные ордера - Продолжить закрытие/Отмена"? Паранойя, конечно, но тем не менее... Спасибо!  
odyn:

Привет знатокам!

Вопрос по функции IndicatorSetString.

Пытаюсь установить с ее помощью короткое имя индикатора.

Но кор. имя не устанавливается, и получает значение по умолчанию.

Почему, что не так сделал?

ПС: В журнал принтом выводится не значение, назначаемое ф-цией  IndicatorSetString (iMA_navch Demo), а умолчательное МА(8).

Короткое имя индикатора устанавливается в функции OnInit()

А в функции OnDeinit() она бесполезна.