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

 
Andrey Dik #:

Большое пожелание к разработчикам: моноширинный текст в Comment () так же как в Print ().

Поддерживаю.

 
Andrey Dik #:

Большое пожелание к разработчикам: моноширинный текст в Comment () так же как в Print ().

И пожелание поменьше: моноширинный текст в "Обзор рынка".

Зачем это надо? Текста разве не меньше будет на строчку?

 
Aleksey Vyazmikin #:

Зачем это надо? Текста разве не меньше будет на строчку?

кому не надо - тот не заметит изменений.

а кому надо, тому будет удобнее выводить структурированную и упорядоченную информацию на экран.

можно заморочится и сделать вывод инфы на канвас, но зачем все эти телодвижения, когда бывает необходимо просто вывести текстовую информацию на экран?

уверен, программисту Metaquotes займет времени не больше минуты заменить шрифт в коментах.

 

Валюта счёта GPB.

В окне "Обзор рынка" оставляю один символ DJ30.

Запускаю такой скрипт:

void OnStart(void) {

  int symbols_total = ::SymbolsTotal(true);
  Print(__FUNCTION__, " > symbols_total: ", symbols_total);
  
  for(int i = 0; i < symbols_total; i++) {
    
    string symbol_name = ::SymbolName(i, true);
    Print(__FUNCTION__, " > i: ", i, "; symbol: ", symbol_name);
  }
}

Результат:

2023.03.15 12:36:01.128 OnStart > symbols_total: 1
2023.03.15 12:36:01.128 OnStart > i: 0; symbol: DJ30.

Всё правильно.

Теперь запускаю такой скрипт:

void OnStart(void) {

  string symbol  = _Symbol;
  double lot_min = ::SymbolInfoDouble(symbol, SYMBOL_VOLUME_MIN);
  double ask     = ::SymbolInfoDouble(symbol, SYMBOL_ASK);
  double bid     = ::SymbolInfoDouble(symbol, SYMBOL_BID);
  double profit  = 0.0;
  
  bool res1 = ::OrderCalcProfit(ORDER_TYPE_BUY, symbol, lot_min, ask, bid, profit);

  int symbols_total = ::SymbolsTotal(true);
  Print(__FUNCTION__, " > symbols_total: ", symbols_total);
  
  for(int i = 0; i < symbols_total; i++) {
    
    string symbol_name = ::SymbolName(i, true);
    Print(__FUNCTION__, " > i: ", i, "; symbol: ", symbol_name);
  }
}

Результат:

2023.03.15 12:37:35.754 OnStart > symbols_total: 2
2023.03.15 12:37:35.754 OnStart > i: 0; symbol: DJ30.
2023.03.15 12:37:35.754 OnStart > i: 1; symbol: GBPUSD

Всё правильно, но в окне "Обзор рынка" всё ещё один символ:


На мой взгляд нужно добавлять все символы используемые в текущий момент для расчётов в окно "Обзор рынка".

Если это не баг и так задумано, то как определить программно те символы, которые только отображаются в окне "Обзор рынка", исключив те, которые используются только для расчётов.

 
Anatoli Kazharski #:

Валюта счёта GPB.

В окне "Обзор рынка" оставляю один символ DJ30.

Запускаю такой скрипт:

Результат:

Всё правильно.

Теперь запускаю такой скрипт:

Результат:

Всё правильно, но в окне "Обзор рынка" всё ещё один символ:


На мой взгляд нужно добавлять все символы используемые в текущий момент для расчётов в окно "Обзор рынка".

Если это не баг и так задумано, то как определить программно те символы, которые только отображаются в окне "Обзор рынка", исключив те, которые используются только для расчётов.

а чтение справки не помогает ?

 
Maxim Kuznetsov #:

а чтение справки не помогает ?

Мне помогает. Упустил этот момент.

 

Подскажите, как архитектурно правильно работать со входными параметрами конструктора при наследованиях?

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

class A
{
public:  
  A( const int iValueA1, const int iValueA2, const int iValueA3, const int iValueA4, const int iValueA5 )
  {
  }
};

class B : public A
{
public:  
  B( const int iValueB1, const int iValueB2, const int iValueB3, const int iValueB4, const int iValueB5,
     const int iValueA1, const int iValueA2, const int iValueA3, const int iValueA4, const int iValueA5 ) :
     A(iValueA1, iValueA2, iValueA3, iValueA4, iValueA5)
  {
  }  
};

class C : public B
{
public:  
  C( const int iValueC1, const int iValueC2, const int iValueC3, const int iValueC4, const int iValueC5,
     const int iValueB1, const int iValueB2, const int iValueB3, const int iValueB4, const int iValueB5,
     const int iValueA1, const int iValueA2, const int iValueA3, const int iValueA4, const int iValueA5 ) :
     B(iValueB1, iValueB2, iValueB3, iValueB4, iValueB5, iValueA1, iValueA2, iValueA3, iValueA4, iValueA5)
  {
  }  
};

  • Создавать спец. структуру с полями входных параметров и передавать подобные структуры?
  • В наследник передавать ссылку на родительский класс, а потом внутри вызывать конструктор с входным в виде этой ссылки.
  • Какие есть удобные варианты, которые несложно дорабатывать и удобно использовать?
 
fxsaber #:

Подскажите, как архитектурно правильно работать со входными параметрами конструктора при наследованиях?

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

  • Создавать спец. структуру с полями входных параметров и передавать подобные структуры?
  • В наследник передавать ссылку на родительский класс, а потом внутри вызывать конструктор с входным в виде этой ссылки.
  • Какие есть удобные варианты, которые несложно дорабатывать и удобно использовать?

Наверное так должно быть по логике. Как в C++.

Хотя, мне кажется в C# реализована более гибкая система через :: base()

 
Nikolai Semko #:

Наверное так должно быть по логике. Как в C++.

По ссылке нет никаких предложений.

 

Можно передавать структуру, можно портянку.

Оба варианта правильные.

  • В наследник передавать ссылку на родительский класс, а потом внутри вызывать конструктор с входным в виде этой ссылки.

Этого не понял.

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