Tnew[1] - выходит за пределы массива, массив описан как Tnew[1], поэтому к его элементам можно обращаться только как к Tnew[0], так как индекс начинается с нуля.
Какой вывод? В данном случае Tnew[1]-неправильное выражение, но допустимое? Правильное выражение Tnew[0] ,Тnew[], или что то еще? Результат работы эксперта, похоже, не меняется, при ипользовании Tnew[1], Tnew[0], Tnew[]
Ренат, если я Вас правильно понял, то коды возврата ENUM_TRADE_RETURN_CODES для структуры MqlTradeResult, также распространяются и на структуру MqlTradeCheckResult
ias: Какой вывод? В данном случае Tnew[1]-неправильное выражение, но допустимое? Правильное выражение Tnew[0] ,Тnew[] или что то еще? Результат работы эксперта, похоже, не меняется, при ипользовании Tnew[1],Tnew[0],Tnew[]
Результат не может быть одинаков, по крайней мере если из массива читаются данные по индексу которого нет. Что по вашему лежит по адресу Tnew[1]?
На счет пишется не уверен, при выходе из диапазона эксперт может сообщить об ошибке и пойти дальше. только вот что в этом случае будет находиться в Tnew[0]?
Kos: Ренат, если я Вас правильно понял, то коды возврата ENUM_TRADE_RETURN_CODES для структуры MqlTradeResult, также распространяются и на структуру MqlTradeCheckResult
Да, база торговых кодов ошибок одна на все пространство торговых функций.
Описания для новых функций поправим - просто не успели сразу.
Результат не может быть одинаков, по крайней мере если из массива читаются данные по индексу которого нет. Что по вашему лежит по адресу Tnew[1]?
На счет пишется не уверен, при выходе из диапазона эксперт может сообщить об ошибке и пойти дальше. только вот что в этом случае будет находиться в Tnew[0]?
Результат работы эксперта, не меняется, при ипользовании datetime Tnew[1];Tnew[0];Tnew[];.Следует ли из этого, что в эксперте Exp_TEMA.mq5 из статьи "Создание эксперта, торгующего на разных инструментах" , функция
//+X================================================================X+//| IsNewBar() function |//+X================================================================X+bool IsNewBar(int Number, string symbol, ENUM_TIMEFRAMES timeframe)
{
//----+staticdatetime Told[];
datetime Tnew[1];
//----+ Объвление переменной для хранения размеров массивов переменныхstaticint Size_ = 0;
//----+ Изменение размеров массивов переменныхif (Number + 1 > Size_)
{
uint size = Number + 1;
//----if (ArrayResize(Told, size) == -1)
{
string word = "";
StringConcatenate(word, "IsNewBar( ", Number,
" ): Ошибка!!! Не удалось изменить размеры массивов переменных!!!");
Print(word);
//---- int error = GetLastError();
ResetLastError();
if (error > 4000)
{
StringConcatenate(word, "IsNewBar( ", Number, " ): Код ошибки ", error);
Print(word);
}
//----
Size_ = -2;
return(false);
}
}
CopyTime(symbol, timeframe, 0, 1, Tnew);
if (Tnew[0] != Told[Number])
{
Told[Number] = Tnew[0];
return(true);
}
//----+return(false);
}
//+X================================================================X+
не работает?
Что по вашему лежит по адресу Tnew[1]?
После CopyTime(symbol, timeframe, 0, 1, Tnew); по адресу Tnew[1] должно находится время начала пердыдущего бара.
Результат работы эксперта, не меняется, при ипользовании datetime Tnew[1];Tnew[0];Tnew[];.Следует ли из этого, что в эксперте Exp_TEMA.mq5 из статьи "Создание эксперта, торгующего на разных инструментах" , функция
не работает?
Что по вашему лежит по адресу Tnew[1]?
После CopyTime(symbol, timeframe, 0, 1, Tnew); по адресу Tnew[1] должно находится время начала пердыдущего бара.
Будем разбираться по порядку
Вот эти две строки объявляют массивы, один из которых динамический - (Told), а второй - (Tnew) содержит как я понял только одну запись.
staticdatetime Told[];
datetime Tnew[1];
Тут происходит попытка изменить размерность динамического массива. Предполагается, что количество записей в массиве будет равно size.
if (ArrayResize(Told, size) == -1)
Это строка копирует одну запись (дату бара), начиная с бара номер 0 в массив Tnew. После этого эта дата становится доступна примерно так Tnew[0] (поскольку массив нумеруется с НУЛЯ).
CopyTime(symbol, timeframe, 0, 1, Tnew);
Тут сравнивается единственная запись массива Tnew с записью, которая находится в ячейке массива Told под номером Number-1 (помним, что нумерация ведется с 0).
Если эти даты не совпадают, то записываем значение массива Tnew в ячейку массива Told.
if (Tnew[0] != Told[Number])
{
Told[Number] = Tnew[0];
return(true);
}
В документации не нашел описания кодов ответа (Retcode) для структуры результатов проверки торгового запроса MqlTradeCheckResult. Будут ли они?
Все описания есть в документации.
Посмотрите функцию OrderSend, структуру MqlTradeResult и список кодов ответа торговых операций.
Told - пустой массив без размера
Tnew[1] - выходит за пределы массива, массив описан как Tnew[1], поэтому к его элементам можно обращаться только как к Tnew[0], так как индекс начинается с нуля.
Все описания есть в документации.
Посмотрите функцию OrderSend, структуру MqlTradeResult и список кодов ответа торговых операций.
Какой вывод? В данном случае Tnew[1]-неправильное выражение, но допустимое? Правильное выражение Tnew[0] ,Тnew[] или что то еще? Результат работы эксперта, похоже, не меняется, при ипользовании Tnew[1],Tnew[0],Tnew[]
Результат не может быть одинаков, по крайней мере если из массива читаются данные по индексу которого нет. Что по вашему лежит по адресу Tnew[1]?
На счет пишется не уверен, при выходе из диапазона эксперт может сообщить об ошибке и пойти дальше. только вот что в этом случае будет находиться в Tnew[0]?
Ренат, если я Вас правильно понял, то коды возврата ENUM_TRADE_RETURN_CODES для структуры MqlTradeResult, также распространяются и на структуру MqlTradeCheckResult
Да, база торговых кодов ошибок одна на все пространство торговых функций.
Описания для новых функций поправим - просто не успели сразу.
Результат не может быть одинаков, по крайней мере если из массива читаются данные по индексу которого нет. Что по вашему лежит по адресу Tnew[1]?
На счет пишется не уверен, при выходе из диапазона эксперт может сообщить об ошибке и пойти дальше. только вот что в этом случае будет находиться в Tnew[0]?
Результат работы эксперта, не меняется, при ипользовании datetime Tnew[1];Tnew[0];Tnew[];.Следует ли из этого, что в эксперте Exp_TEMA.mq5 из статьи "Создание эксперта, торгующего на разных инструментах" , функция
не работает?
Что по вашему лежит по адресу Tnew[1]?
После CopyTime(symbol, timeframe, 0, 1, Tnew); по адресу Tnew[1] должно находится время начала пердыдущего бара.
Результат работы эксперта, не меняется, при ипользовании datetime Tnew[1];Tnew[0];Tnew[];.Следует ли из этого, что в эксперте Exp_TEMA.mq5 из статьи "Создание эксперта, торгующего на разных инструментах" , функция
не работает?
Что по вашему лежит по адресу Tnew[1]?
После CopyTime(symbol, timeframe, 0, 1, Tnew); по адресу Tnew[1] должно находится время начала пердыдущего бара.
Будем разбираться по порядку
Вот эти две строки объявляют массивы, один из которых динамический - (Told), а второй - (Tnew) содержит как я понял только одну запись.
Тут происходит попытка изменить размерность динамического массива. Предполагается, что количество записей в массиве будет равно size.
Это строка копирует одну запись (дату бара), начиная с бара номер 0 в массив Tnew. После этого эта дата становится доступна примерно так Tnew[0] (поскольку массив нумеруется с НУЛЯ).
Тут сравнивается единственная запись массива Tnew с записью, которая находится в ячейке массива Told под номером Number-1 (помним, что нумерация ведется с 0).
Если эти даты не совпадают, то записываем значение массива Tnew в ячейку массива Told.
В документации не нашел описания кодов ответа (Retcode) для структуры результатов проверки торгового запроса MqlTradeCheckResult. Будут ли они?
В файле MetaTrader 5\MQL5\Include\ErrorDescription.mqh
У меня вопрос. Не рассматривается ли вопрос графики без дыр ? https://www.mql5.com/ru/forum/100491
Очень трудно все синхронизировать, я вроде старался все учесть в индикаторе, но с этими дырами очень сложно бороться
2010.07.19 02:20:12 Проверка дыр (EURUSD,M1) Количество дыр в истории 260 от даты 2010.07.09 21:35:00
2010.07.19 02:20:12 Проверка дыр (EURUSD,M1) Дыра GBPUSD 2010.07.19 00:20:00
2010.07.19 02:20:12 Проверка дыр (EURUSD,M1) Дыра USDJPY 2010.07.19 00:15:00
2010.07.19 02:20:12 Проверка дыр (EURUSD,M1) Дыра EURGBP 2010.07.16 22:43:00
2010.07.19 02:20:12 Проверка дыр (EURUSD,M1) Дыра GBPUSD 2010.07.16 22:43:00
2010.07.19 02:20:12 Проверка дыр (EURUSD,M1) Дыра GBPUSD 2010.07.16 22:38:00
2010.07.19 02:20:12 Проверка дыр (EURUSD,M1) Дыра AUDUSD 2010.07.16 22:21:00
и т.д.....
и второй вопрос: есть ли еще какие то подводные камни в этом мультивалютном индикаторе, которые я не проверил ?