Ошибки, баги, вопросы - страница 1813
![MQL5 - Язык торговых стратегий для клиентского терминала MetaTrader 5](https://c.mql5.com/i/registerlandings/logo-2.png)
Вы упускаете торговые возможности:
- Бесплатные приложения для трейдинга
- 8 000+ сигналов для копирования
- Экономические новости для анализа финансовых рынков
Регистрация
Вход
Вы принимаете политику сайта и условия использования
Если у вас нет учетной записи, зарегистрируйтесь
Вам нужно почистить cookie для www.mql5.com.
На хроме 56.0.2924.87 полет нормальный, как с, так и без ручного обновления страницы отзыва.
Подскажите, как?
Но в хроме это можно сделать так:
Нажать F12 находясь на сайте www.mql5.com => на панели разработчика перейти во вкладку Application => раздел Cookies => ПКМ на записях cookies => Clear all from ...
Гугл в помощь.
Но в хроме это можно сделать так:
Нажать F12 находясь на сайте www.mql5.com => на панели разработчика перейти во вкладку Application => раздел Cookies => ПКМ на записях cookies => Clear all from ...
Нет такой
Воспроизвелось. Записал ваш код в скрипт, он при запуске в режиме отладки выдаёт правильное значение (1001199), а если скомпилировать релиз и запускать его из дерева в МТ5, то стабильно выдавал 11199. Смог локализовать
Это действительно баг компилятора, пишите в сервисдеск.
Нет такой
Подскажите, пожалуйста
МТ4 начал весить 1,8 Гигабайт (оперативки). Весь ВПС сожрал, второй терминал не могу толком включить. Не подскажите, как "почистить" оперативную память от МТ?
Подскажите, пожалуйста
МТ4 начал весить 1,8 Гигабайт (оперативки). Весь ВПС сожрал, второй терминал не могу толком включить. Не подскажите, как "почистить" оперативную память от МТ?
Перезапустить не пробовали терминал?
Память высвобождается, если уменьшить количество баров на графике, но нужна перезагрузка потом.
Перезапустить не пробовали терминал?
Память высвобождается, если уменьшить количество баров на графике, но нужна перезагрузка потом.
Ошибка определения типа параметров индикатора ENUM_DATATYPE.
Запускаю тестовый индикатор. Во входных параметр каждый параметр имеет уникальный тип:
#property indicator_plots 0
//+------------------------------------------------------------------+
//| |
//+------------------------------------------------------------------+
input bool inpBool = false; //1
input char inpChar = 0; //2
input uchar inpUChar = 0; //3
input short inpShort = 0; //4
input ushort inpUShort=0; //5
input color inpColor=clrWhite; //6
input int inpInt=0; //7
input uint inpUInt=0; //8
input datetime inpDatetime=0; //9
input long inpLong=0; //10
input ulong inpULong = 0; //11
input float inpFloat = 0.0; //12
input double inpDouble = 0.0; //13
input string inpString = ""; //14
//+------------------------------------------------------------------+
//| Custom indicator initialization function |
//+------------------------------------------------------------------+
int OnInit()
{
IndicatorSetString(INDICATOR_SHORTNAME,"DATATYPE");
return(INIT_SUCCEEDED);
}
//+------------------------------------------------------------------+
//| Custom indicator iteration function |
//+------------------------------------------------------------------+
int OnCalculate(const int rates_total,
const int prev_calculated,
const datetime &time[],
const double &open[],
const double &high[],
const double &low[],
const double &close[],
const long &tick_volume[],
const long &volume[],
const int &spread[])
{
return(rates_total);
}
//+------------------------------------------------------------------+
Далее, ищу его через скрипт и делаю распринтовку типа его параметров:
//| Script program start function |
//+------------------------------------------------------------------+
void OnStart()
{
//--- Проверяем количество аналогичных индикаторов на всех открытых окнах
long id=ChartFirst();
int indicatorsTotal=0;
int windowsTotal=0;
//---
int ctr=0;
//---
do
{
windowsTotal=(int)ChartGetInteger(id,CHART_WINDOWS_TOTAL);
for(int i=0; i<windowsTotal; i++)
{
indicatorsTotal=ChartIndicatorsTotal(id,i);
for(int j=0; j<indicatorsTotal; j++)
{
//Print( __FUNCTION__,": Имя индикатора: "+ChartIndicatorName( id, i, j ) );
//---
string shortName=ChartIndicatorName(id,i,j);
if(StringFind(shortName,"DATATYPE")<0)
continue;
else
{
//--- получим хэндл индикатора
int handle=ChartIndicatorGet(id,i,shortName);
//---
if(handle==INVALID_HANDLE) // Если хэндл не получен
{
Print(__FUNCTION__,": ОШИБКА #",GetLastError(),": хэндл индикатора "+shortName+" не получен!");
return; // Ошибка! Переходим к следующему индикатору
}
//--- Получаем параметры индикатора
MqlParam parameters[]; // Массив-приемник параметров
ENUM_INDICATOR indicator_type; // Тип индикатора
//--- Получение..
int params=IndicatorParameters(handle,indicator_type,parameters);
//---
for(int p=1; p<params; p++)
Print(__FUNCTION__,": p#",p,": type = ",EnumToString(parameters[p].type));
}
}
}
}
while(( id=ChartNext(id))>=0);
}
На выходе получаю:
2017.02.20 09:08:58.147 test_DATATYPE (BR-3.17,M1) OnStart: p#2: type = TYPE_CHAR
2017.02.20 09:08:58.147 test_DATATYPE (BR-3.17,M1) OnStart: p#3: type = TYPE_UCHAR
2017.02.20 09:08:58.147 test_DATATYPE (BR-3.17,M1) OnStart: p#4: type = TYPE_SHORT
2017.02.20 09:08:58.147 test_DATATYPE (BR-3.17,M1) OnStart: p#5: type = TYPE_USHORT
2017.02.20 09:08:58.147 test_DATATYPE (BR-3.17,M1) OnStart: p#6: type = TYPE_UINT
2017.02.20 09:08:58.147 test_DATATYPE (BR-3.17,M1) OnStart: p#7: type = TYPE_INT
2017.02.20 09:08:58.147 test_DATATYPE (BR-3.17,M1) OnStart: p#8: type = TYPE_UINT
2017.02.20 09:08:58.147 test_DATATYPE (BR-3.17,M1) OnStart: p#9: type = TYPE_LONG
2017.02.20 09:08:58.147 test_DATATYPE (BR-3.17,M1) OnStart: p#10: type = TYPE_LONG
2017.02.20 09:08:58.147 test_DATATYPE (BR-3.17,M1) OnStart: p#11: type = TYPE_ULONG
2017.02.20 09:08:58.147 test_DATATYPE (BR-3.17,M1) OnStart: p#12: type = TYPE_DOUBLE
2017.02.20 09:08:58.147 test_DATATYPE (BR-3.17,M1) OnStart: p#13: type = TYPE_DOUBLE
2017.02.20 09:08:58.147 test_DATATYPE (BR-3.17,M1) OnStart: p#14: type = TYPE_STRING
Видно, что вместо типа TYPE_COLOR(#6) показывает тип TYPE_UINT, вместо типа TYPE_DATETIME (#9) показывает тип TYPE_LONG, вместо типа TYPE_FLOAT (#12) показывает тип TYPE_DOUBLE. Хотя типы TYPE_COLOR, TYPE_DATETIME и TYPE_FLOAT описаны в перечислении и должны иметь свои собственные значения!
Сервисдеск #1677120