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

Авторизуйтесь или зарегистрируйтесь, чтобы добавить комментарий
Nexxtor
728
Nexxtor  

Добрый день.

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

#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() возвращают нули, почему?

Georgiy Merts
8928
Georgiy Merts  
Nexxtor:

Добрый день.

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

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

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

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

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

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

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

Vladimir Karputov
Модератор
161242
Vladimir Karputov  

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

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

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

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

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

my_symbol.Name(Symbol());

my_symbol.RefreshRates();‌

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

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

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

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