Ошибки, баги, вопросы - страница 1780
![MQL5 - Язык торговых стратегий для клиентского терминала MetaTrader 5](https://c.mql5.com/i/registerlandings/logo-2.png)
Вы упускаете торговые возможности:
- Бесплатные приложения для трейдинга
- 8 000+ сигналов для копирования
- Экономические новости для анализа финансовых рынков
Регистрация
Вход
Вы принимаете политику сайта и условия использования
Если у вас нет учетной записи, зарегистрируйтесь
Ошибка возврата не актуальных данных функцией SymbolInfoTick() - перескок тиков. Билд 1525 х64. Тест из индикатора, на советнике не проверял:
#property indicator_chart_window
#property indicator_plots 0
//+------------------------------------------------------------------+
//| Custom indicator initialization function |
//+------------------------------------------------------------------+
int OnInit()
{
//--- indicator buffers mapping
//---
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[])
{
//---
static long prevMs = 0;
//---
MqlTick tick;
if( SymbolInfoTick( _Symbol, tick ) )
{
if( prevMs != 0 && tick.time_msc < prevMs )
{
Print( __FUNCTION__,": ОШИБКА ПОСЛЕДОВАТЕЛЬНОСТИ! SymbolInfoTick() вернуло не последнее значение!" );
Print( __FUNCTION__,": Текущее время мс = ",tick.time_msc," ("+TimeToString( tick.time, TIME_DATE|TIME_SECONDS )+"), предыдущее = ",prevMs );
}
//---
prevMs = tick.time_msc;
}
else
Print( __FUNCTION__,": ОШИБКА #",GetLastError(),". Значение текущего тика не получено!" );
//--- return value of prev_calculated for next call
return(rates_total);
}
//+------------------------------------------------------------------+
Результат:
2017.02.02 21:54:20.450 test_SymbolInfoTick_20170202 (VTBR-3.17,M1) OnCalculate: Текущее время мс = 1486065260384 (2017.02.02 19:54:20), предыдущее = 1486065260387
2017.02.02 22:11:31.025 test_SymbolInfoTick_20170202 (GOLD-3.17,M3) OnCalculate: ОШИБКА ПОСЛЕДОВАТЕЛЬНОСТИ! SymbolInfoTick() вернуло не последнее значение!
2017.02.02 22:11:31.025 test_SymbolInfoTick_20170202 (GOLD-3.17,M3) OnCalculate: Текущее время мс = 1486066290963 (2017.02.02 20:11:30), предыдущее = 1486066290966
2017.02.02 22:12:44.939 test_SymbolInfoTick_20170202 (BR-3.17,M1) OnCalculate: ОШИБКА ПОСЛЕДОВАТЕЛЬНОСТИ! SymbolInfoTick() вернуло не последнее значение!
2017.02.02 22:12:44.939 test_SymbolInfoTick_20170202 (BR-3.17,M1) OnCalculate: Текущее время мс = 1486066364884 (2017.02.02 20:12:44), предыдущее = 1486066364890
2017.02.02 22:29:36.358 test_SymbolInfoTick_20170202 (Si-3.17,M1) OnCalculate: ОШИБКА ПОСЛЕДОВАТЕЛЬНОСТИ! SymbolInfoTick() вернуло не последнее значение!
2017.02.02 22:29:36.358 test_SymbolInfoTick_20170202 (Si-3.17,M1) OnCalculate: Текущее время мс = 1486067376304 (2017.02.02 20:29:36), предыдущее = 1486067376307
2017.02.02 22:31:26.462 test_SymbolInfoTick_20170202 (Si-3.17,M1) OnCalculate: ОШИБКА ПОСЛЕДОВАТЕЛЬНОСТИ! SymbolInfoTick() вернуло не последнее значение!
2017.02.02 22:31:26.462 test_SymbolInfoTick_20170202 (Si-3.17,M1) OnCalculate: Текущее время мс = 1486067486339 (2017.02.02 20:31:26), предыдущее = 1486067486344
2017.02.02 22:32:14.441 test_SymbolInfoTick_20170202 (Si-3.17,M1) OnCalculate: ОШИБКА ПОСЛЕДОВАТЕЛЬНОСТИ! SymbolInfoTick() вернуло не последнее значение!
2017.02.02 22:32:14.441 test_SymbolInfoTick_20170202 (Si-3.17,M1) OnCalculate: Текущее время мс = 1486067534360 (2017.02.02 20:32:14), предыдущее = 1486067534363
2017.02.02 22:36:07.509 test_SymbolInfoTick_20170202 (Si-3.17,M1) OnCalculate: ОШИБКА ПОСЛЕДОВАТЕЛЬНОСТИ! SymbolInfoTick() вернуло не последнее значение!
2017.02.02 22:36:07.510 test_SymbolInfoTick_20170202 (Si-3.17,M1) OnCalculate: Текущее время мс = 1486067767443 (2017.02.02 20:36:07), предыдущее = 1486067767463
2017.02.02 22:39:29.606 test_SymbolInfoTick_20170202 (Si-3.17,M1) OnCalculate: ОШИБКА ПОСЛЕДОВАТЕЛЬНОСТИ! SymbolInfoTick() вернуло не последнее значение!
2017.02.02 22:39:29.606 test_SymbolInfoTick_20170202 (Si-3.17,M1) OnCalculate: Текущее время мс = 1486067969557 (2017.02.02 20:39:29), предыдущее = 1486067969558
Реал, Открытие, Access Server V. Печаль! Обратите внимание на проблему, пожалуйста. А также на проблему в заявке #1598238 (начиная с 10 стр., пост от 2017.01.26 09:43).
Уважаемые разработчики, давайте править тики! Код предоставлен, вот она - проблема, ничего искать не нужно, только отреагируйте и исправьте!
Ошибка возврата не актуальных данных функцией SymbolInfoTick() - перескок тиков. Билд 1525 х64. Тест из индикатора, на советнике не проверял:
Уважаемые разработчики, давайте править тики! Код предоставлен, вот она - проблема, ничего искать не нужно, только отреагируйте и исправьте!
Пожалуйста, оформите ваше сообщение заявкой в сервисдеск.
Ошибка при компиляции
"ABC"
"DEF"; //нормально
static string text2 =
#ifndef MACRO
"ABC"
#endif
"DEF"; //Error: 'DEF' - some operator expected
Неверный порядок вызова функций при смене периода графика
Последовательность действий:
Результат:
#шаг 1: присоединение
I::I->M5
OnInit->M5
#шаг 2: смена периода M5 ->M15
I::I->M15
OnInit->M15
#шаг 3: смена периода M15->M30
I::I->M30
OnInit->M30
OnDeinit->M15:3
I::~I->M15
#шаг 4: удаление
OnDeinit->M5:1 ##эта строка ожидалась на шаге #2 в таком виде: OnDeinit->M5:3
I::~I->M5 ##эта строка ожидалась на шаге #2
OnDeinit->M30:1
I::~I->M30
Ожидалось, что строки помеченные ## будут выведены на шаге #2 и кроме того ожидалась деинициализия по причине смены периода (REASON_CHARTCHANGE:3), а не удаления с графика (REASON_REMOVE:1). Другими словами шаг #2 ожидался схожим с шагом #3
void Prn( string f, int i = -1 ) { Print( f, "->", StringSubstr( EnumToString( Period()), 7 ), (i == -1 ? "" : ":" + i )); }
struct I {
I() { Prn( __FUNCTION__ ); }
~I() { Prn( __FUNCTION__ ); }
};
static const I i;
void OnInit() { Prn( __FUNCTION__ ); }
void OnDeinit( const int reason ) { Prn( __FUNCTION__, reason ); }
int OnCalculate( const int, const int, const int, const double& [] ) { return 0; }
struct B {
B();
~B();
const int h;
static const string name;
};
const string B::name = "Test_i";
B::B() : h( iCustom( NULL, 0, name ))
{
if ( !ChartIndicatorAdd( 0, 0, h ) ) Print( "-1:", GetLastError());
}
B::~B()
{
if ( !ChartIndicatorDelete( 0, 0, name ) ) Print( "-2:", GetLastError());
if ( !IndicatorRelease( h ) ) Print( "-3:", GetLastError());
}
static const B b;
void OnInit() export {}
Глюки при установке индикаторов Билла Вильямса
ставлю фракталы - ставится
ставлю АО - ставится ADX
билд 1031
Глюки при установке индикаторов Билла Вильямса
ставлю фракталы - ставится
ставлю АО - ставится ADX
билд 1031
не только при установке этого индикатора, но время от времени и других.
перезагрузка терминала устраняет проблему.
заметил что начинается после тестирования.
Периодически мерцает (без перерисовки) поставочный индикатор ZigZag в MT5 bild 1525