Не работает класс CSymbolInfo

 

Добрый день.

‌Пишу советник:

#property copyright   "Copyright 2009-2016, MetaQuotes Software Corp."
#property link        "http://www.mql5.com"
#property version     "5.50"
#include <Trade\Trade.mqh>
#include <Trade\SymbolInfo.mqh>
#include <Trade\PositionInfo.mqh>
#include <Trade\AccountInfo.mqh>
//---
CSymbolInfo   my_symbol;
//+------------------------------------------------------------------+
//| Expert initialisation function                                   |
//+------------------------------------------------------------------+
int OnInit(void)
  {
   return(INIT_SUCCEEDED);
  }
//+------------------------------------------------------------------+
//| Expert new tick handling function                                |
//+------------------------------------------------------------------+
void OnTick(void){
   testProcess();
  }
//+------------------------------------------------------------------+
//| Test                                              |
//+------------------------------------------------------------------+
void testProcess(void)
   {
     double bid, ask;
     bid = my_symbol.Bid();
     ask = my_symbol.Ask();
   }

‌методы класса CSymbolInfo Bid() и Ask() возвращают нули, почему?

 
Nexxtor:

Добрый день.

‌методы класса CSymbolInfo Bid() и Ask() возвращают нули, почему?

Потому, что в них еще нет данных.

Загрузить бы... Надо сперва выбрать символ (функция Name()), а потом - перед тем, как нужны цены - прорефрешить внутренние данные (Refresh())

Вобще, во всех случаях "непонятной работы классов СБ" рекомендую поглядеть на исходные коды. ‌

 
Просто стал переделывать один из своих советников, непосредственно работу по открыванию сделок я не трогал, хотя переписал много. Буквально вчера все работало...
 

Перед Bid() и Ask() надо какой-то Refresh() вызывать.

Refresh() или RefreshRates‌(), надо в код заглянуть

 

Простой советник. Проверка размера бара. Покупка/продажа:

Добавлено: пожалуйста код вставляйте правильно: Правильно вставляем код на форуме (Ваш код я вставил заново - теперь в нём есть подсветка синтаксиса)

Простой советник. Проверка размера бара. Покупка/продажа
Простой советник. Проверка размера бара. Покупка/продажа
  • www.mql5.com
Что должен делать советник: на каждом тике проверять размер бара как только размер бара станет равным или превысит заданный размер то: если свеча б...
 

@George Merts , спасибо!

‌‌Добавил  две строчки:

my_symbol.Name(Symbol());

my_symbol.RefreshRates();‌

‌Все заработало.

Ч‌то-то раньше не обращал внимание на это.

@Vladimir Karputov спасибо за ссылку.‌

George Merts
George Merts
  • www.mql5.com
Профиль трейдера
 
Возврат нулей, когда Вы этого не ожидаете - добро пожаловать в реальный мир :)
Причина обращения: