Бета-тестирование MetaTrader 5 началось! - страница 119

 
Alexander 11.11.2009 14:38

MetaTrader 5 Client Terminal build 220

  1. MetaEditor 5: Исправлена работа Undo\Redo
  2. MetaEditor 5: Добавлено предупреждение о неудачном завершении компиляции
  3. MetaEditor 5: Исправлен формат вывода переменных с плавающей точкой в отладчике.
  4. MetaEditor 5: Исправлен поиск в файлах по маске.
  5. Terminal: Исправлена проверка параметров эксперта при вводе.
  6. Terminal: Исправлено зависание при совершении торговых операций
Всё равно пока виснет--молча, без сообщений. Работает после перезагрузки компа. Если надо, программу подцеплю.
Завис Метаэдитор, когда хотел скомпилировать команду Alert. Выдал какую-то ошибку и завис намертво, что даже перезагрузка не помогает. Переустанавливать неохота, вроде очередной билд на подходе.
 
Interesting писал(а) >>

Прописал выводу времени на график при помощи

Стало выдавать ошибку - 'GMTTime' - missing default value for parameter.

Конечно можно и не указаывать 0 для Chart_id, но MQL4 вроде допускал и такой синтаксис...

MQL4 такой синтаксис не допускал. Если Вы указали для какого-либо параметра умолчательное значение, то и все последующие параметры должны иметь умолчательные значения

 
Interesting писал(а) >>
На мой взгляд, зря отказались от WindowsTotal(), предлагаю переименовать в ChartTotal() и вернуть.

ChartGetInteger(0,CHART_WINDOWS_TOTAL);

 

Вроде, не совсем верно работае ChartGetInteger.


ENUM_CHART_MODE ChartModeReal; //Текущий тип графика
color ChartFonColorReal; //Текущий цвет фона графика
.......................................
.......................................

ChartModeReal = ChartGetInteger(0,CHART_MODE,0);          //Тут компилятор выдает ошибку!!!
ChartFonColorReal = ChartGetInteger(0,CHART_SHOW_GRID,0); //Нормально работает


Вот такая ошибка вылезает при компиляции - ChartGetInteger - can`t convert enum

 
stringo >>:

ChartGetInteger(0,CHART_WINDOWS_TOTAL);

Я не совсем точно вопрос сформулировал (бывает)...


Предложение в следующем - Помимо ChartFirst() и ChartNext() ввести в работу еще и ChartTotal() как общее количество открытых графиков.

Не очень хочется вот так решать проблему (пример из справки):

//--- переменные для идентификаторов графиков
   long currChart,prevChart=ChartFirst();
   int i=0,limit=100;
   Print("ChartFirst =",ChartSymbol(prevChart)," ID =",prevChart);
   while(i<limit)// у нас наверняка не больше 100 открытых графиков
     {
      currChart=ChartNext(prevChart); // на основании предыдущего получим новый график
      if(currChart<0) break;          // достигли конца списка графиков
      Print(i,ChartSymbol(currChart)," ID =",currChart);
      prevChart=currChart;// запомним идентификатор текущего графика для ChartNext()
      i++;// не забудем увеличить счетчик
     }
 
 
Interesting писал(а) >>

Вроде, не совсем верно работае ChartGetInteger.

Вот такая ошибка вылезает при компиляции - ChartGetInteger - can`t convert enum

Используйте явное приведение типов

ChartModeReal = (ENUM_CHART_MODE)ChartGetInteger(0,CHART_MODE,0);
 
stringo >>:

Используйте явное приведение типов

Понятно, но хотелось без вских "(ENUM_CHART_MODE)"...

 

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

И поясните пожалуйста, как правильно использовать торговый поток?

 
pronych >>:

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

И поясните пожалуйста, как правильно использовать торговый поток?

Спасибо за сообщение, проблему с глобавльными переменными выявили и локализовали. Исправлено будет в следующем билде.

 
И не понятно почему при открытии и закрытии позиции, функция OnTrade() выполняется два раза подряд. А в остальных (модификация, отложник и тд) случаях один раз.