Ошибки, баги, вопросы - страница 980

 
Renat:

Безусловно.

И очень плохо, что Вы не понимаете таких простых вещей.

Не могли бы Вы объяснить мне разницу? Искренний вопрос, без троллинга.
 
voix_kas:
Не могли бы Вы объяснить мне разницу? Искренний вопрос, без троллинга.

Постарайтесь сами, это самый лучший способ обучения.

Хотя, если дополнить первый вопрос условием, что флаг изначально true и целевое использование кода "сработать всего 1 раз и миллион раз пропустить присвоение", то совет будет другой. Но исходный вопрос не содержал таких уточнений.

 

На некоторых инструментах не определяется способ вычисления величины залоговых средств по инструменту. Сервер MQ. Например, можно увидеть на инструментах в разделе GBOT. Почему?

Вот этот код можно протестировать:

//+------------------------------------------------------------------+
//| СКРИПТ                                                           |
//+------------------------------------------------------------------+
void OnStart()
  {
   Print(GetStringTradeCalcMode(SymbolInfoInteger(_Symbol,SYMBOL_TRADE_CALC_MODE)));
   //---
   if(GetLastError()>0)
     Print("GetLastError(): ",GetLastError());
  }
//+------------------------------------------------------------------+
//| Возвращает строку о способе вычисления                           |
//| величины залоговых средств по инструменту                        |
//+------------------------------------------------------------------+
string GetStringTradeCalcMode(long mode)
  {
   string str="?";
//---
   switch((int)mode)
     {
      case SYMBOL_CALC_MODE_FOREX       :
         str="Forex mode";                 break;
      case SYMBOL_CALC_MODE_FUTURES     :
         str="Futures mode";               break;
      case SYMBOL_CALC_MODE_CFD         :
         str="CFD mode";                   break;
      case SYMBOL_CALC_MODE_CFDINDEX    :
         str="CFD index mode";             break;
      case SYMBOL_CALC_MODE_CFDLEVERAGE :
         str="CFD Leverage mode";          break;
     }
//---
   return(str);
  }
 

Вопрос к MQ. Гарантируется ли сортировка сделок/ордеров в порядке их исторического возникновения после выполнения HistorySelect?

Или же для гарантии хронологического порядка требуется:

1. Помещение всех сделок/ордеров, выбранных функцией HistorySelect, во временный массив, включая номер ордера/сделки и дату регистрации. Достаточно ли только номера?

2. Соответствующая сортировка массива.

3. Последующая обработка в порядке исторической хронологии.

 

Здравствуйте.

Подскажите, пожалуйста, имеется ли в MQL5 возможность вернуть ссылку на переменную?

То есть, что-то вроде этого:

class Array{

int data[];

Array(int n){

        ArrayResize(data,n);

        ArrayInitialize(data,0); 

} 

int& operator[](const int index){

        return data[index];

} 

} ;
В данном случае компилятор сообщает, что ссылка не может быть использована.
 
voix_kas:

Вопрос к MQ. Гарантируется ли сортировка сделок/ордеров в порядке их исторического возникновения после выполнения HistorySelect?

Или же для гарантии хронологического порядка требуется:

1. Помещение всех сделок/ордеров, выбранных функцией HistorySelect, во временный массив, включая номер ордера/сделки и дату регистрации. Достаточно ли только номера?

2. Соответствующая сортировка массива.

3. Последующая обработка в порядке исторической хронологии.

Никакая сортировка сделок/ордеров не гарантируется.

Делайте всё по указанным Вами пунктам

 
stringo:

Никакая сортировка сделок/ордеров не гарантируется.

Делайте всё по указанным Вами пунктам

Спасибо. Ещё хотелось бы понять один уточняющий нюанс. Вероятно, некоторым он покажется очевидным, но, опять таки в документации это явно не указано, поэтому хотелось бы услышать ответ из первоисточника (представителя MQ).

На какую (одну) переменную правильнее (достовернее) опираться, при сортировке истории сделок в порядке их исторической хронологии: DEAL_TIME/DEAL_TIME_MSC или тикет?

Пока я склоняюсь к сортировке по тикету, т.к. предполагаю, что номер тикета - автоинкремент в БД на сервере. И нет возможности нарушить эту последовательность, например, если брокер пожелает внести изменения в историю, добавив новую сделку со значением тикета, меньшим, чем последняя сделка на сервере (даже не на счёте). Т.е. новая сделка может быть датирована (вручную) хоть прошлым годом, однако тикет будет сформирован со значением автоинкремента от последней сделки на сервере.

Подскажите, пожалуйста, верны ли мои предположения? Можно ли использовать тикет сделки в качестве самой достоверной опорной точки для построения истиной исторической хронологии ведения/регистрации сделок?

 

voix_kas:

Можно ли использовать тикет сделки в качестве самой достоверной опорной точки для построения истиной исторической хронологии ведения/регистрации сделок?

нет.
 
sergeev:
нет.

Можете раскрыть свой ответ? Причины, альтернативы, Ваш личный опыт/мнение.

 

П.С.

По-прежнему, очень бы хотелось услышать развёрнутый ответ разработчика (MQ).

 
voix_kas:

Можете раскрыть свой ответ? Причины, альтернативы, Ваш личный опыт/мнение.

а вам разве непонятно, что если хотите хронологию - то вам нужно время?

при чем тут тикет, время которого может меняться.

Причина обращения: