MQL4 - automated forex trading   /  

Форум

Ошибки

К списку тем  | 1 2 3 Авторизуйтесь или зарегистрируйтесь, чтобы создать новую тему

avatar
313
SKif 24.11.2005 00:30 
По моим представлениям это ошибка компилятора.
А если ошибочны мои представления, то объясните, пожалуйста.
Прикрепленные файлы:
  pic.GIF (4.40 KB)

Увеличьте эффективность групповой работы

Поставьте TeamWox и увеличьте эффективность групповой работы в вашей компании. TeamWox позволяет хранить всю рабочую информацию в одном месте: письма, документы, файлы, платежи и история сообщений в чате. Так решается проблема сохранности данных и удобной групповой работы с ними.


avatar
Модератор
5198
stringo 24.11.2005 16:07 
компилятор ничего не знает о типе параметров, передаваемых во встроенные функции. вы получите ошибку во время выполнения

avatar
313
SKif 24.11.2005 18:32 
stringo,
Спасибо. Теперь буду осмотрительней.

avatar
10
Mogol 27.11.2005 08:29 
2 SKif
все или практически все "органолептически"(R)
OrderSelect( -1,-1,-1) вернет ложь, но GetLastError( ) следом вернет 0 - Нет ошибки
после чего OrderTicket( ) вернет ложь, и только теперь GetLastError( ) вернет 4105 - Ни один ордер не выбран

Вопросы по уровням sl/tp еще остались?

Всех благ,
Micky Mogol

avatar
313
SKif 27.11.2005 11:45 
Вопросы по уровням остались, но на другом форуме.

avatar
313
SKif 15.01.2006 19:10 
В МТ3 была ошибка в операторе сравнения при вычислении выражений, использующих ">" и "<". Это известно доподленно, проверено не раз.
Если МТ4 унаследовал код, то ошибка может проявляться и здесь.
Во всяком случае, вот фрагмент кода:
double ppp = NormalizeDouble( Price, Digits); double qqq = NormalizeDouble( Mas_Ord_Tek[m][j], Digits); double www = NormalizeDouble( Mas_Upr_F1[i][j][2],Digits); if(ppp-qqq<www/*-0.1*Point*/) { Alert("ppp= ",ppp*100000," qqq= ",qqq*100000, " www= ",www*100000); }

Вот его результаты:

Alert: ppp= 121430 qqq= 121170 www= 260

Если убрать заглушки вокруг -0.1*Point, то всё работает как задумано.

По моим представлениям это ошибка. При сравнении "<" оператор работает так, ка должен работать при "<=".
При вычислениях ">" ошибка не замечена.

avatar
Модератор
3646
Renat 15.01.2006 19:46 
SKif:
По моим представлениям это ошибка. При сравнении "<" оператор работает так, ка должен работать при "<=".
При вычислениях ">" ошибка не замечена.
Все верно работает.
Очень хорошо, что Вы произвели нормализацию перед проверками.
А вот в самой проверке стоит математическая операция "минус", после которой нормализации нет!
Поэтому и условие неправильно работает. Попробуйте

if(NormalizeDouble(ppp-qqq,Digits)<www)

avatar
313
SKif 15.01.2006 19:50 
Стоп, стоп..
Это что ж? Два нормализованных значения дадут ненормализованный результат?
(вот уж по истине, век живи - век учись)

Попробовал - получилось.
Спасибо за совет!.

avatar
Модератор
3646
Renat 15.01.2006 23:31 
SKif:
Стоп, стоп..
Это что ж? Два нормализованных значения дадут ненормализованный результат?
Запросто.

Дело не в нормализованности исходных данных.
А в _результате_математических_операций_ над вещественными числами.
Результат может быть ненормализованным, особенно когда проводятся операции над числами с 4 знаками после запятой.

avatar
313
SKif 16.01.2006 00:06 
ОК, Спасибо.
Учту на будущее.

avatar
313
SKif 16.01.2006 11:56 
Кстати, являются ли Bid, Ask и пр. торговые параметры нормализованными?
Или их тоже нужно нормализовать перед употреблением?
К списку тем   | 1 2 3  

Авторизуйтесь или зарегистрируйтесь, чтобы добавить комментарий