У меня был очень неприятный случай с альпари. Счет был типа NDD с перерасчетом свопов overnight. Вообщем, ночью ордер закрывали и открывали снова по другой цене, но с учетом этого свопа. В результате, вместо нормальной 5-значной цены получалась 6-значная, т.е. за 1 день своп в пунктах был дробным по некоторым парам.
И перестал работать трейлингстоп :nda: А все просто - трейлингстоп прибавлял к цене Х пунктов и отправлял OrderModify с полученным новым стоплосс'ом, который без нормализации оставался 6-значным.
Может, это имелось в виду?
Во всех остальных случаях цена приходит психически нормальная
1. Это зачем? Я ведь точно знаю, что я не покупал/продавал по 6-значной цене. Чей-то я ее нормализовать буду?Чё та странно. Почему не нормализовали сразу цены? Какая Вам разница какой разрядности цена пришла ?
Как получить имя переменной путем манипуляции со строками?
Т.е. есть префикс типа "yozhik" и есть цикл от 1 до 10 (к примеру)
Надо последовательно обработать переменные yozhik1, yozhik2,...,yozhik10
(они тоже уже есть со своими значениями)
Никак.
Переписать код с использованием массива yozhik[].
Это очень печально, потому что ёжики - внешние переменные и написать
extern double ёжик[1] = 0.1
extern double ёжик[2] = 0.15
и т.д. не получится
Зато получится в init() скопировать их один раз в массив и дальше с массивом работать.
switch (flag) {
case 1:
SymbolRow = Symbols1;
break;
case 2:
SymbolRow = Symbols2;
break;
case 3:
SymbolRow = Symbols3;
break;
case 4:
SymbolRow = Symbols4;
break;
case 5:
SymbolRow = Symbols5;
break;
case 6:
SymbolRow = Symbols6;
break;
case 7:
SymbolRow = Symbols7;
}
Нормально.
Хотя, если у тебя там строки с названиями пар, то можно задавать одной строкой через запятую и потом разобрать в массив строк.
А причём тут ДЦ? Это не особенность ДЦ, а особенность работы компьютера с дробными числами. Только в разных языках разная погрешность. Значит лажа может случиться в любом ДЦ. И как показывает практика, случается не редко.
В С++ есть правило приведения типов. Это значит что значение операции приводится в более точному типу. Если например, в выражении принимает участие int и double, то на выходе будет double.Ugar
Есть два числа с 5 знаками после запятой. Их сложили. С чего ради у терминала получится 6 знаков? А вот если тебе вместо 5 знаков в цене подсунул ДЦ 6 злонамеренно, как я выше описал, а потом свою же цену и не принимает, то это виноват только ДЦ!
Разумеется.
Не поможет.
Надо было разрабам специальный тип данных для цен придумать, а не держать все в double.
А чего.. взял, да написал функцию..
Кстати, да. Это не зависит ни от ДЦ ни от языка. Я чутка начал было недавно изучать С++, там такая же ситуация, и, даже больше...:facepalm: Т.к. типов числе гораздо больше. Так что проще научится думать, ежели всё менять постоянно.
А, по сути,чего загонять то? Нормализации нужно, в основном, в торговых функция. Вот в них и нормализуйте значения... Ну или не в них, а перед ними, которые в них поступают. Я думаю так.
1. Это зачем? Я ведь точно знаю, что я не покупал/продавал по 6-значной цене. Чей-то я ее нормализовать буду?
2. Мне - никакой! Это ДЦ мне обещает 5-знак, я его за язык не тянул!
А потому что это к ДЦ не имеет отношения Какие пришли, такие и послали.. (Разумеется с учётом погрешности.) По ходу, им не резонно обрабатывать цены, т.к. это дополнительные расходы ресурсов, а это время.. А время упирается в расходняки.. а это дополнительное оборудование.. А это деньги.. Круговорот..:laugh:
Неа. ДЦ обещает точность не ниже 5-знака. 6-знаков, это повышенная точность... Так что радуйтесь
Не, ну хорош отвлекаться от темы вопроса! Было же про стопы и тейки и про ценовые параметры!
Итак, есть цена 5 значная - без никаких "но"! ДЦ сказал, что 5 знак, так выполняй свои "сказал", нет?
Отлично!
Есть Point по паре = 0.00001 для этого пятизнака - это параметр, он не может быть другим!
Складываем Point и цену, например, Bid
Ну? С каких хренов-то там знаков больше чем 5 будет? Нет уж, извините, это не я дурак, это тот дурак, который считает иначе!
На этом вся глюкавость винды держится - никто ни за что не отвечает, а в результате два числа складываются по каким-то придуманным законам!
Не, приходится бороться, предотвращать и т.д. Но это - тупость программистов, это они должны не допускать подобного маразма на низком уровне, а не я на MQL4
В этом смысле есть самый лучший в мире язык PERL - там из любого типа в любой другой все перкидывается моментом и никаких проблем. Мой последний вопрос про преобразование строк в имена там тоже цветет и пахнет - все настолько просто и удобно, что мне отладчик нужен раз в год, все остальное и так понятно
В принципе, ты прав. С другой стороны, от финансовой организации хочется получить безусловную точность. Поэтому, все решает техподдержка.
В альпари меня послали на три буквы, типа, своп дробный тебе же лучше. Они, типа, мне полпункта съэкономили, ога
Для советника это очень плохо, для анализа еще хуже, ибо как понять. что открыл ордер по цене. по которой сов никак не мог открыть ордер - нет сигналов на такую цену.
В результате получается муть примерно аналогичная открытию встречных в МТ5 - кто куда зачем открыл - непонятно, но ты в минусе!
Нет! Никак нет! Ни от какого железа ниче не зависит! Можно на ZX Spectrum реализовать астрономические расчеты - никаких проблем! И в шахматы может играть ваш телефон неглупо!Точность чисел типа дабл зависит не от операционной системы, а от самой системы, на которой производятся расчёты, т.е. от от железа так сказать. По-большей части от процессора.