Придется всё же привести код эксперта :). Потому что это же проиисходит и при вызове индикатора из эксперта
//+------------------------------------------------------------------+
//| expert initialization function |
//+------------------------------------------------------------------+
int init() {
return(0);
}
//+------------------------------------------------------------------+
//| expert deinitialization function |
//+------------------------------------------------------------------+
int deinit() {
return(0);
}
//+------------------------------------------------------------------+
//| expert start function |
//+------------------------------------------------------------------+
int start() {
double Ind = iCustom(NULL,0,"Test",0,0);
return(0);
}
//+------------------------------------------------------------------+
2004.06.17 21:07 Test EURUSD,M1: Reset#73, Bars=1977, PreBars=1975, Time[1]=1087506360, BarTime=1087506300 2004.06.17 20:49 Test EURUSD,M1: Reset#72, Bars=1960, PreBars=1958, Time[1]=1087505280, BarTime=1087505220 2004.06.17 20:33 Test EURUSD,M1: Reset#71, Bars=1944, PreBars=1942, Time[1]=1087504320, BarTime=1087504260 2004.06.17 20:18 Test EURUSD,M1: Reset#70, Bars=1929, PreBars=1927, Time[1]=1087503420, BarTime=1087503360 2004.06.17 20:05 Test EURUSD,M1: Reset#69, Bars=1916, PreBars=1914, Time[1]=1087502640, BarTime=1087502580
Режим тестирования - по ценам открытия
P.S. То же имеет место при тестировании без визуализации
2005.12.30 22:58 Empty EURUSD,M1: ResetCnt=40637 2005.12.30 22:47 Test EURUSD,M1: Reset#40637, Bars=493537, PreBars=493535, Time[1]=1135982760, BarTime=1135982700 2005.12.30 22:38 Test EURUSD,M1: Reset#40636, Bars=493529, PreBars=493527, Time[1]=1135982220, BarTime=1135982160 2005.12.30 22:22 Test EURUSD,M1: Reset#40635, Bars=493519, PreBars=493517, Time[1]=1135981260, BarTime=1135981200
P.P.S. Кстати, эффект можно увидеть без всякого индикатора, достаточно вставить в пустой эксперт счётчик и напечатать в deinit значение счётчика и значение Bars. У меня получилось
2005.12.30 22:58 Empty EURUSD,M1: cnt=440097, Bars=493546
Вопрос: То, что эксперт при тестировании вызывается не на каждом баре - штатная ситуация?
Сейчас проверю Ваш эксперт
Вот более наглядный вариант: Эксперт просто ставит точку над каждым баром.
string OName;
int OCnt;
int i;
//+------------------------------------------------------------------+
//| expert initialization function |
//+------------------------------------------------------------------+
int init() {
OCnt = 0;
return(0);
}
//+------------------------------------------------------------------+
//| expert deinitialization function |
//+------------------------------------------------------------------+
int deinit() {
for(i=0;i<OCnt;i++) {
OName = "Empty_"+i;
ObjectDelete(OName);
}
return(0);
}
//+------------------------------------------------------------------+
//| expert start function |
//+------------------------------------------------------------------+
int start() {
OName = "Empty_"+OCnt;
ObjectCreate(OName,OBJ_ARROW,0,Time[1],High[1]+5*Point);
ObjectSet(OName,OBJPROP_ARROWCODE,158);
ObjectSet(OName,OBJPROP_COLOR,Blue);
OCnt++;
return(0);
}На картинке я вручную поставил галочки там, где точек нет.
Да, я тоже прогнал у себя советника и сделал выводы. Подождем Славу, его сегодня нет. Изначально я прогонял в режиме Every Tick и там было все норсмально.
Я тоже столкнулся с этой бедой. Бары пропускаются в режиме "по ценам открытия". При "всех тиках" все нормально. Погонял советника по ценам открытия на разной длине истории, получилось, что пропускается где-то около 20% баров.
Я тоже столкнулся с этой бедой. Бары пропускаются в режиме "по ценам открытия". При "всех тиках" все нормально. Погонял советника по ценам открытия на разной длине истории, получилось, что пропускается где-то около 20% баров.
Slawa ответил в ветке "Просьба проконсультировать по тестированию советника"
Вы упускаете торговые возможности:
- Бесплатные приложения для трейдинга
- 8 000+ сигналов для копирования
- Экономические новости для анализа финансовых рынков
Регистрация
Вход
Вы принимаете политику сайта и условия использования
Если у вас нет учетной записи, зарегистрируйтесь
#property indicator_chart_window int PreBars; datetime BarTime; int StartPos; //+------------------------------------------------------------------+ //| Custom indicator initialization function | //+------------------------------------------------------------------+ int init() { return(0); } //+------------------------------------------------------------------+ //| Custom indicator deinitialization function | //+------------------------------------------------------------------+ int deinit() { return(0); } //+------------------------------------------------------------------+ //| Custom indicator reset function | //+------------------------------------------------------------------+ int Reset() { static int cnt = 0; cnt++; Print("Reset#",cnt,", Bars=",Bars,", PreBars=",PreBars,", Time[1]=",Time[1],", BarTime=",BarTime); return(Bars-1); } //+------------------------------------------------------------------+ //| Custom indicator iteration function | //+------------------------------------------------------------------+ int start() { if (Bars == PreBars) return(0); if (Bars < 3) return(0); if (Bars-PreBars == 1 && BarTime==Time[1]) StartPos = 1; else StartPos = Reset(); PreBars = Bars; BarTime=Time[0]; return(0); }А вот часть лога - весь приводить нет смысла.
Код пустого эксперта не привожу для экономии места - он легко делается с помощью мастера.
Билд 206 от 6 июня.