MT4
я понимаю что это ошибка доступа к историческим данным
просто советник работает на реале а тут из-за неё он начал открывать сделки где попало и закрывать так же
пока сделал так , просто проверяю все валюты циклом на наличие цен
но пока не знаю поможет или нет, или в чем то другом эта ошибка выражается а не в отсутствии Ask и Bid торгуемых валют
кто нить сталкивался с такими ошибками ? как победили ?
RefreshRates(); // получили свежие котировки if(MarketInfo(ValArr[vi],MODE_ASK)< 0.01 || MarketInfo(ValArr[vi],MODE_BID)< 0.01) // нельзя числа типа double сравнивать через == // а вот это я ваще не понял )) // !MarketInfo(ValArr[vi],MODE_ASK) // вот эти функции удобно использовать для получения строкового описания ошибки // узнает код последней ошибки и возвращает строку с описанием // код ошибки возвращается, т.к. передается по ссылке string GetMyLastError(int &err) { err = GetLastError(); string serr = ErrorDescription(err); ResetLastError(); return(serr); } // узнает код последней ошибки и возвращает строку с описанием string GetMyLastError2() { int err = GetLastError(); string serr = ErrorDescription(err); ResetLastError(); return(serr); }
Мы расширили логгирование проблем с памятью.
Раньше всё это тоже происходило, но молча.
Какой у Вас номер билда клиентского терминала?
На днях выйдет обновление, где мы делаем немедленное освобождение от ненужной памяти в случае возникновения таких проблем
MT4
я понимаю что это ошибка доступа к историческим данным
просто советник работает на реале а тут из-за неё он начал открывать сделки где попало и закрывать так же
пока сделал так , просто проверяю все валюты циклом на наличие цен
но пока не знаю поможет или нет, или в чем то другом эта ошибка выражается а не в отсутствии Ask и Bid торгуемых валют
кто нить сталкивался с такими ошибками ? как победили ?
У вас ощипки в коде фильтра.
if(||||||)//Так условия сравнивать нельзя. if(||&&||)//Так можно if(MarketInfo(ValArr[vi],MODE_ASK)== 0.0 || MarketInfo(ValArr[vi],MODE_BID)== 0.0&&!MarketInfo(ValArr[vi],MODE_ASK) || !MarketInfo(ValArr[vi],MODE_BID) if(!MarketInfo(ValArr[vi],MODE_ASK) || !MarketInfo(ValArr[vi],MODE_BID)// В этом условии, непонятно, что вы хотите сравнить и с чем, //восклицательный знак в этом случае неуместен
Мы расширили логгирование проблем с памятью.
Раньше всё это тоже происходило, но молча.
Какой у Вас номер билда клиентского терминала?
На днях выйдет обновление, где мы делаем немедленное освобождение от ненужной памяти в случае возникновения таких проблем
MT4 билд 890
При сравнении ( ==, <, >, <=,>=, !=) числа double c нулём, корректный результат сравнения даёт применение нормализации (NormalizeDouble).
При сравнении двух чисел double между собой, корректный результат достигается за счёт сравнения с нулём их нормализованной в выражении условного оператора разницы.
P./S.:
Т.е., для чисел типа double корректны могут следующие сравнения:
... if(NormalizeDouble(number1,digits)==0)//!=, <, >, <=,>= 0.0 ... if(NormalizeDouble(number1-numbers2,digits)==0)//!=, <, >, <=,>= 0.0 ...
А не корректным может быть итог сравнения, если:
... if(number1==0)//!=, <, >, <=,>= 0.0 ... if(number1==numbers2)//!=, <, >, <=,>= ... double sr=NormalizeDouble(number1-number2,digits); if(sr==0)//!=, <, >, <=,>= 0.0
суть в том что я по сути не понял что произошло но как подумал - из-за этой ошибки т.к. я сравниваю несколько валют - по какой то из валют не пришли котировки из-за этого индикатор отрисовал ерунду а по этой ерунде советник отторговал тоже ерунду и всё это в мгновение ока =). но это только предположение
в итоге что будет с индикатором если не поступит одна из котировок не знаю - по идее то он должен брать последнюю имеющуюся, но вот как то видимо что то не задалось
а что будет на выходе MarketInfo(ValArr[vi],MODE_ASK) - если там нет котировки я не знаю, по этому типа перебрал все возможные варианты типа 0 или вообще ничего !MarketInfo(ValArr[vi],MODE_ASK)
RefreshRates(); я вставлю, но не знаю все он обновляет или только текущую
и не понял =) отсутствие переменной double что пишется не !MarketInfo(ValArr[vi],MODE_ASK) ?
суть в том что я по сути не понял что произошло но как подумал - из-за этой ошибки т.к. я сравниваю несколько валют - по какой то из валют не пришли котировки из-за этого индикатор отрисовал ерунду а по этой ерунде советник отторговал тоже ерунду и всё это в мгновение ока =). но это только предположение
в итоге что будет с индикатором если не поступит одна из котировок не знаю - по идее то он должен брать последнюю имеющуюся, но вот как то видимо что то не задалось
а что будет на выходе MarketInfo(ValArr[vi],MODE_ASK) - если там нет котировки я не знаю, по этому типа перебрал все возможные варианты типа 0 или вообще ничего !MarketInfo(ValArr[vi],MODE_ASK)
RefreshRates(); я вставлю, но не знаю все он обновляет или только текущую
и не понял =) отсутствие переменной double что пишется не !MarketInfo(ValArr[vi],MODE_ASK) ?
if(!z) - такое условие применимо по своему смыслу к типу данных bool, см. логические операции.
А MarketInfo(ValArr[vi],MODE_ASK) - это не bool.
суть в том что я по сути не понял что произошло но как подумал - из-за этой ошибки т.к. я сравниваю несколько валют - по какой то из валют не пришли котировки из-за этого индикатор отрисовал ерунду а по этой ерунде советник отторговал тоже ерунду и всё это в мгновение ока =). но это только предположение
в итоге что будет с индикатором если не поступит одна из котировок не знаю - по идее то он должен брать последнюю имеющуюся, но вот как то видимо что то не задалось
а что будет на выходе MarketInfo(ValArr[vi],MODE_ASK) - если там нет котировки я не знаю, по этому типа перебрал все возможные варианты типа 0 или вообще ничего !MarketInfo(ValArr[vi],MODE_ASK)
RefreshRates(); я вставлю, но не знаю все он обновляет или только текущую
и не понял =) отсутствие переменной double что пишется не !MarketInfo(ValArr[vi],MODE_ASK) ?
- Бесплатные приложения для трейдинга
- 8 000+ сигналов для копирования
- Экономические новости для анализа финансовых рынков
Вы принимаете политику сайта и условия использования
MT4
я понимаю что это ошибка доступа к историческим данным
просто советник работает на реале а тут из-за неё он начал открывать сделки где попало и закрывать так же
пока сделал так , просто проверяю все валюты циклом на наличие цен
но пока не знаю поможет или нет, или в чем то другом эта ошибка выражается а не в отсутствии Ask и Bid торгуемых валют
кто нить сталкивался с такими ошибками ? как победили ?