extern string FileName = "TestTicks.txt"; int handle; double tOpen, tHigh, tLow, tClose; int CountErrors; int PrevTime; int init() { PrevTime = Time[0]; tOpen = Bid; tHigh = Bid; tLow = Bid; tClose = Bid; CountErrors = 0; handle=FileOpen(FileName,FILE_READ|FILE_WRITE, "\t"); FileSeek(handle, 0, SEEK_END); return(0); } int deinit() { string Str; Str = "Bar Errors = " + DoubleToStr(100.0 * CountErrors / Bars, 2) + "%"; Print(Str); FileWrite(handle, Str); FileClose(handle); return(0); } int start() { string Str; if (PrevTime == Time[0]) { if (Bid > tHigh) tHigh = Bid; else if (Bid < tLow) tLow = Bid; } else { PrevTime = Time[0]; if ((NormalizeDouble(tOpen - Open[1], Digits) != 0) || (NormalizeDouble(tHigh - High[1], Digits) != 0) || (NormalizeDouble(tLow - Low[1], Digits) != 0) || (NormalizeDouble(tClose - Close[1], Digits) != 0)) { Str = TimeToStr(Time[1]); Print(Str); FileWrite(handle, Str); CountErrors++; } tOpen = Bid; tHigh = Bid; tLow = Bid; } tClose = Bid; return(0); }
У меня более 5% минутных баров имеют при моделировании всех тиков данную ошибку. Код проверки выше.
Уже не в первый раз сталкиваюсь со следующей проблемой: на скриншоте видно, что у свечки на 16:40 Low=1,7517 однако при тиковом моделировании это значение не достигается.
Из лога видно, что минимальное смоделированное значение = 1,7518. Разве тики не должны точно соответствовать OHLC ? Прошу пояснений у Уважаемых разработчиков.
Даже если это ошибка?!?!? Её исправление Вам поможет? Вы заработатете на один пипс больше:) (на тестере) Зачем???
Спасибо за вопрос - мы все проверим и опубликуем результат.
Рад помочь, дело ведь - общее.
Спасибо за вопрос - мы все проверим и опубликуем результат.
Рад помочь, дело ведь - общее.
Rosh, поделитесь, как вы проверяли, что видит Tester, а что нет?
В проверяющем советнике, что привел выше, ваше утверждение не соответствует действительности. Возможно, где-то в коде допустил промашку. Прошу тогда, укажите, где ошибка. Вроде, все так.
И возникла следующая дилема, если ошибка в тестере все же присутствует:
Моя МТС провела больше тысячи сделок на различных реальных счетах. Для контроля работы ДЦ всегда использовал результаты тестера при прогоне по всем тикам. И когда проблемы у ДЦ отсутствовали, сделки на счете и на тестере совпадали ОДИН В ОДИН. Иначе - связывался с ДЦ, и они признавали свою ошибку с соответствующей компенсацией.
В МТС использую ТОЛЬКО отложенные ордера и уровни SL и TP. Если ошибка в тестере, то почему реальные счета и тестер совпадали на тысячах сделок ОДИН В ОДИН? Или же система открытия отложеных ордеров и закрытия по SL и TP у брокера работает на автомате по тому же принципу, что и тестер? Т..е данная система содержит ту же ошибку, что и тестер, поэтому эта ошибка и не проявляется при сравнении тестера и счета?
Доверие к тестеру пошатнулось, теперь проверяю вручную, пока не автоматизировал данный процесс.
Спасибо.
//+------------------------------------------------------------------+ //| CheckLow.mq4 | //| Copyright © 2007, MetaQuotes Software Corp. | //| https://www.metaquotes.net/ru/ | //+------------------------------------------------------------------+ #property copyright "Copyright © 2007, MetaQuotes Software Corp." #property link "https://www.metaquotes.net/ru/" //---- input parameters extern int DayS=14; extern int MonthS=4; extern int YearS=2006; extern int HourS=16; extern int MinuteS=19; extern int CounterS=20; int counter; //+------------------------------------------------------------------+ //| expert initialization function | //+------------------------------------------------------------------+ int init() { //---- //---- return(0); } //+------------------------------------------------------------------+ //| expert deinitialization function | //+------------------------------------------------------------------+ int deinit() { //---- //---- return(0); } //+------------------------------------------------------------------+ //| expert start function | //+------------------------------------------------------------------+ int start() { //---- if (counter>CounterS) return; if (Year()<2006) return; if (Month()<MonthS) return; if (Day()<DayS) return; if (Hour()<HourS) return; if (Minute()<MinuteS) return; Print("Open=",Open[0]," High=",High[0]," Low=",Low[0]," Close=",Close[0]," Bid=",Bid); counter++; //---- return(0); } //+------------------------------------------------------------------+А вот иллюстрация:
- Бесплатные приложения для трейдинга
- 8 000+ сигналов для копирования
- Экономические новости для анализа финансовых рынков
Вы принимаете политику сайта и условия использования
Уже не в первый раз сталкиваюсь со следующей проблемой: на скриншоте видно, что у свечки на 16:40 Low=1,7517 однако при тиковом моделировании это значение не достигается.
Из лога видно, что минимальное смоделированное значение = 1,7518. Разве тики не должны точно соответствовать OHLC ? Прошу пояснений у Уважаемых разработчиков.