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

 
Artem Mordvinkin:

написал

Также нужна информация: билд в котором Вы компилируете советника и билд торгового сервера (теперь это можно посмотреть в журнале - строка вида

2020.03.09 20:04:22.798 Network '19332146': authorized on MetaQuotes-Demo through Access Point US 1 (ping: 272.08 ms, build 2361)

)

 
Vladimir Karputov:

Также нужна информация: билд в котором Вы компилируете советника и билд торгового сервера (теперь это можно посмотреть в журнале - строка вида

)

2020.03.09 22:01:16.785 Network '----------': authorized on ------- through RFD Access Server 2 (ping: 6.39 ms, build 2190)

UPD

В разделе терминала "О программе" билд 2361 от 8 марта 2020

 
Artem Mordvinkin:

2020.03.09 22:01:16.785 Network '----------': authorized on ------- through RFD Access Server 2 (ping: 6.39 ms, build 2190)

UPD

В разделе терминала "О программе" билд 2361 от 8 марта 2020

Да уж ... уважают своих клиентов ...

 
кто нибуд помогите я тут новычок как перейти на реалний счет? подскажите немогу разобратся ато уменя толка демо счет показивает
 
я с андроида зашел
 
baxromsaid:
кто нибуд помогите я тут новычок как перейти на реалний счет? подскажите немогу разобратся ато уменя толка демо счет показивает


baxromsaid:
я с андроида зашел


MetaQuotes не является брокером - поэтому на серверах MetaQuotes-Demo можно открыть только демо-счёт.

Реальный торговый счёт нужно открывать у брокера.

 

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


Подскажите, пожалуйста, почему в моем коде не получают значения переменные vol и ask ? Постоянно выводится в Принт значение ноль. Спред нормально "цепляется", показывает корректную величину.

Присоединяю эксперт(учебный) к графику LTCUSD.

В чем ошибка?

#include <Trade\SymbolInfo.mqh>
CSymbolInfo m_symbol;
int a=0,b=0,c=0,spread=0,i=0,j=0;
double x=0,y=0,z=0,m=0,ask=0;
input int vyb=7;
bool bool_1=true,bool_2=true,bool_3=true;
string str_1="",str_2="",str_3="",name="",Text[101];
ulong vol=0;

//+------------------------------------------------------------------+
//| Expert initialization function                                   |
//+------------------------------------------------------------------+
int OnInit()
  {
//---
  name=_Symbol;
  Print("текущий символ: ",name); 
  spread=m_symbol.Spread();
  Print("спред по символу: ",spread);
  vol=m_symbol.Volume();
  Print("обьєм по символу ",name," - ",vol);
  ask=m_symbol.Ask();
  Print("Цена Аск равно ",ask);
 
odyn:

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


Подскажите, пожалуйста, почему в моем коде не получают значения переменные vol и ask ? Постоянно выводится в Принт значение ноль. Спред нормально "цепляется", показывает корректную величину.

Присоединяю эксперт(учебный) к графику LTCUSD.

В чем ошибка?

Перед получением нужно применять или метод CSymbolInfo::Refresh (Обновляет данные по символу) или CSymbolInfo::RefreshRates (Обновляет котировки по символу) - в зависимости от того, что именно Вам нужно.

Вот код этих функций:

//+------------------------------------------------------------------+
//| Refresh cached data                                              |
//+------------------------------------------------------------------+
bool CSymbolInfo::Refresh(void)
  {
   long tmp=0;
//---
   if(!SymbolInfoDouble(m_name,SYMBOL_POINT,m_point))
      return(false);
   if(!SymbolInfoDouble(m_name,SYMBOL_TRADE_TICK_VALUE,m_tick_value))
      return(false);
   if(!SymbolInfoDouble(m_name,SYMBOL_TRADE_TICK_VALUE_PROFIT,m_tick_value_profit))
      return(false);
   if(!SymbolInfoDouble(m_name,SYMBOL_TRADE_TICK_VALUE_LOSS,m_tick_value_loss))
      return(false);
   if(!SymbolInfoDouble(m_name,SYMBOL_TRADE_TICK_SIZE,m_tick_size))
      return(false);
   if(!SymbolInfoDouble(m_name,SYMBOL_TRADE_CONTRACT_SIZE,m_contract_size))
      return(false);
   if(!SymbolInfoDouble(m_name,SYMBOL_VOLUME_MIN,m_lots_min))
      return(false);
   if(!SymbolInfoDouble(m_name,SYMBOL_VOLUME_MAX,m_lots_max))
      return(false);
   if(!SymbolInfoDouble(m_name,SYMBOL_VOLUME_STEP,m_lots_step))
      return(false);
   if(!SymbolInfoDouble(m_name,SYMBOL_VOLUME_LIMIT,m_lots_limit))
      return(false);
   if(!SymbolInfoDouble(m_name,SYMBOL_SWAP_LONG,m_swap_long))
      return(false);
   if(!SymbolInfoDouble(m_name,SYMBOL_SWAP_SHORT,m_swap_short))
      return(false);
   if(!SymbolInfoInteger(m_name,SYMBOL_DIGITS,tmp))
      return(false);
   m_digits=(int)tmp;
   if(!SymbolInfoInteger(m_name,SYMBOL_ORDER_MODE,tmp))
      return(false);
   m_order_mode=(int)tmp;
   if(!SymbolInfoInteger(m_name,SYMBOL_TRADE_EXEMODE,tmp))
      return(false);
   m_trade_execution=(ENUM_SYMBOL_TRADE_EXECUTION)tmp;
   if(!SymbolInfoInteger(m_name,SYMBOL_TRADE_CALC_MODE,tmp))
      return(false);
   m_trade_calcmode=(ENUM_SYMBOL_CALC_MODE)tmp;
   if(!SymbolInfoInteger(m_name,SYMBOL_TRADE_MODE,tmp))
      return(false);
   m_trade_mode=(ENUM_SYMBOL_TRADE_MODE)tmp;
   if(!SymbolInfoInteger(m_name,SYMBOL_SWAP_MODE,tmp))
      return(false);
   m_swap_mode=(ENUM_SYMBOL_SWAP_MODE)tmp;
   if(!SymbolInfoInteger(m_name,SYMBOL_SWAP_ROLLOVER3DAYS,tmp))
      return(false);
   m_swap3=(ENUM_DAY_OF_WEEK)tmp;
   if(!SymbolInfoDouble(m_name,SYMBOL_MARGIN_INITIAL,m_margin_initial))
      return(false);
   if(!SymbolInfoDouble(m_name,SYMBOL_MARGIN_MAINTENANCE,m_margin_maintenance))
      return(false);
   if(!SymbolInfoDouble(m_name,SYMBOL_MARGIN_LONG,m_margin_long))
      return(false);
   if(!SymbolInfoDouble(m_name,SYMBOL_MARGIN_SHORT,m_margin_short))
      return(false);
   if(!SymbolInfoDouble(m_name,SYMBOL_MARGIN_LIMIT,m_margin_limit))
      return(false);
   if(!SymbolInfoDouble(m_name,SYMBOL_MARGIN_STOP,m_margin_stop))
      return(false);
   if(!SymbolInfoDouble(m_name,SYMBOL_MARGIN_STOPLIMIT,m_margin_stoplimit))
      return(false);
   if(!SymbolInfoInteger(m_name,SYMBOL_EXPIRATION_MODE,tmp))
      return(false);
   m_trade_time_flags=(int)tmp;
   if(!SymbolInfoInteger(m_name,SYMBOL_FILLING_MODE,tmp))
      return(false);
   m_trade_fill_flags=(int)tmp;
//--- succeed
   return(true);
  }
//+------------------------------------------------------------------+
//| Refresh cached data                                              |
//+------------------------------------------------------------------+
bool CSymbolInfo::RefreshRates(void)
  {
   return(SymbolInfoTick(m_name,m_tick));
  }
Документация по MQL5: Стандартная библиотека / Торговые классы / CSymbolInfo / Refresh
Документация по MQL5: Стандартная библиотека / Торговые классы / CSymbolInfo / Refresh
  • www.mql5.com
Стандартная библиотека / Торговые классы / CSymbolInfo / Refresh - справочник по языку алгоритмического/автоматического трейдинга для MetaTrader 5
 
Vladimir Karputov:

Перед получением нужно применять или метод CSymbolInfo::Refresh (Обновляет данные по символу) или CSymbolInfo::RefreshRates (Обновляет котировки по символу) - в зависимости от того, что именно Вам нужно

Большое спасибо, уважаемый Владимир!

Может, еще подскажете: как получить имя символа с помощью метода CSymbolInfo  Name ? Я когда пробую делать так  

#include <Trade\SymbolInfo.mqh>
CSymbolInfo m_symbol;
int a=0,b=0,c=0,spread=0,i=0,j=0;
double x=0,y=0,z=0,m=0,ask=0;
input int vyb=7;
bool bool_1=true,bool_2=true,bool_3=true;
string str_1="",str_2="",str_3="",name="",Text[101];
ulong vol=0;

//+------------------------------------------------------------------+
//| Expert initialization function                                   |
//+------------------------------------------------------------------+
int OnInit()
  {
//---
  name=m_symbol.Name(Symbol())
  Print("текущий символ: ",name); 

в переменную name получаю булевое значение true.

 
odyn:

Большое спасибо, уважаемый Владимир!

Может, еще подскажете: как получить имя символа с помощью метода CSymbolInfo  Name ? Я когда пробую делать так  

в переменную name получаю булевое значение true.

Я делаю так - инициализирую переменную класса CSymbolInfo

//+------------------------------------------------------------------+
//| Expert initialization function                                   |
//+------------------------------------------------------------------+
int OnInit()
  {
//---
***
   if(!m_symbol.Name(Symbol())) // sets symbol name
     {
      Print(__FILE__," ",__FUNCTION__,", ERROR: CSymbolInfo.Name");
      return(INIT_FAILED);
     }
   RefreshRates();
***
//---
   return(INIT_SUCCEEDED);
  }
//+------------------------------------------------------------------+
//| Refreshes the symbol quotes data                                 |
//+------------------------------------------------------------------+
bool RefreshRates()
  {
//--- refresh rates
   if(!m_symbol.RefreshRates())
     {
      if(InpPrintLog)
         Print(__FILE__," ",__FUNCTION__,", ERROR: ","RefreshRates error");
      return(false);
     }
//--- protection against the return value of "zero"
   if(m_symbol.Ask()==0 || m_symbol.Bid()==0)
     {
      if(InpPrintLog)
         Print(__FILE__," ",__FUNCTION__,", ERROR: ","Ask == 0.0 OR Bid == 0.0");
      return(false);
     }
//---
   return(true);
  }


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

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

//+------------------------------------------------------------------+
//| Is position exists                                               |
//+------------------------------------------------------------------+
bool IsPositionExists(void)
  {
   for(int i=PositionsTotal()-1; i>=0; i--)
      if(m_position.SelectByIndex(i)) // selects the position by index for further access to its properties
         if(m_position.Symbol()==m_symbol.Name() && m_position.Magic()==InpMagic)
            return(true);
//---
   return(false);
  }


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

Name

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

string  Name() const

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

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


Name

Устанавливает наименование финансового инструмента для дальнейшей работы с ним.

bool  Name(string name)

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

Нет.

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