Ответ
 
Опции темы
Старый 24.09.2013, 15:40   #1621 (permalink)
Заблокирован
За второе место в конкурсе 

 
Аватар для eevviill
 
Регистрация: 30.07.2009
Сообщений: 5,474
Репутация: 9022
eevviill eevviill eevviill eevviill eevviill eevviill eevviill eevviill eevviill eevviill eevviill
Сказал(а) спасибо: 13,680
Поблагодарили 9,022 раз(а) в 3,179 сообщениях
Поинты: 1105
Отправить сообщение для eevviill с помощью Skype™
Даа. А когда то ансоль был добрым, культурным человеком.
Вот до чего приводит програмирование

Последний раз редактировалось NSerega; 24.09.2013 в 16:31.
eevviill вне форума   Ответить с цитированиемОтветить с цитированием  
5 пользователя(ей) сказали cпасибо:
ansol (25.09.2013), hoz (25.09.2013), Ugar (24.09.2013), Viko2000 (06.05.2015), Алекc1234 (24.09.2013)
Старый 24.09.2013, 23:09   #1622 (permalink)
hoz
Активный участник
 
Аватар для hoz
 
Регистрация: 01.04.2011
Сообщений: 530
Репутация: 111
hoz hoz
Сказал(а) спасибо: 59
Поблагодарили 112 раз(а) в 88 сообщениях
Поинты: 538
Отправить сообщение для hoz с помощью ICQ
Сообщение от ansol Посмотреть сообщение
У меня был очень неприятный случай с альпари. Счет был типа NDD с перерасчетом свопов overnight. Вообщем, ночью ордер закрывали и открывали снова по другой цене, но с учетом этого свопа. В результате, вместо нормальной 5-значной цены получалась 6-значная, т.е. за 1 день своп в пунктах был дробным по некоторым парам.
И перестал работать трейлингстоп А все просто - трейлингстоп прибавлял к цене Х пунктов и отправлял OrderModify с полученным новым стоплосс'ом, который без нормализации оставался 6-значным.
Может, это имелось в виду?
Во всех остальных случаях цена приходит психически нормальная
Чё та странно. Почему не нормализовали сразу цены? Какая Вам разница какой разрядности цена пришла ?
hoz вне форума   Ответить с цитированиемОтветить с цитированием  
Старый 25.09.2013, 04:50   #1623 (permalink)
Местный знаток
За призовое место в конкурсе 

 
Аватар для ansol
 
Регистрация: 22.04.2010
Сообщений: 2,009
Репутация: 829
ansol - ansol - ansol - ansol - ansol - ansol - ansol -
Сказал(а) спасибо: 236
Поблагодарили 843 раз(а) в 554 сообщениях
Поинты: 1308
Цитата:
Чё та странно. Почему не нормализовали сразу цены? Какая Вам разница какой разрядности цена пришла ?
1. Это зачем? Я ведь точно знаю, что я не покупал/продавал по 6-значной цене. Чей-то я ее нормализовать буду?
2. Мне - никакой! Это ДЦ мне обещает 5-знак, я его за язык не тянул!

---------
Вопрос из другой оперы:
Как получить имя переменной путем манипуляции со строками?

Т.е. есть префикс типа "yozhik" и есть цикл от 1 до 10 (к примеру)
Надо последовательно обработать переменные yozhik1, yozhik2,...,yozhik10
(они тоже уже есть со своими значениями)
ansol на форуме   Ответить с цитированиемОтветить с цитированием  
Пользователь сказал cпасибо:
Viko2000 (06.05.2015)
Старый 25.09.2013, 04:59   #1624 (permalink)
Почётный гражданин
 
Аватар для qqmber
 
Регистрация: 20.01.2013
Сообщений: 530
Репутация: 386
qqmber - qqmber - qqmber - qqmber -
Сказал(а) спасибо: 57
Поблагодарили 386 раз(а) в 254 сообщениях
Поинты: 439
Сообщение от ansol Посмотреть сообщение
Как получить имя переменной путем манипуляции со строками?

Т.е. есть префикс типа "yozhik" и есть цикл от 1 до 10 (к примеру)
Надо последовательно обработать переменные yozhik1, yozhik2,...,yozhik10
(они тоже уже есть со своими значениями)
Никак.
Переписать код с использованием массива yozhik[].
qqmber вне форума   Ответить с цитированиемОтветить с цитированием  
Старый 25.09.2013, 05:08   #1625 (permalink)
Местный знаток
За призовое место в конкурсе 

 
Аватар для ansol
 
Регистрация: 22.04.2010
Сообщений: 2,009
Репутация: 829
ansol - ansol - ansol - ansol - ansol - ansol - ansol -
Сказал(а) спасибо: 236
Поблагодарили 843 раз(а) в 554 сообщениях
Поинты: 1308
Сообщение от qqmber Посмотреть сообщение
Никак.
Переписать код с использованием массива yozhik[].
Это очень печально, потому что ёжики - внешние переменные и написать
extern double ёжик[1] = 0.1
extern double ёжик[2] = 0.15
и т.д. не получится
ansol на форуме   Ответить с цитированиемОтветить с цитированием  
Старый 25.09.2013, 05:15   #1626 (permalink)
Почётный гражданин
 
Аватар для qqmber
 
Регистрация: 20.01.2013
Сообщений: 530
Репутация: 386
qqmber - qqmber - qqmber - qqmber -
Сказал(а) спасибо: 57
Поблагодарили 386 раз(а) в 254 сообщениях
Поинты: 439
Сообщение от ansol Посмотреть сообщение
Это очень печально, потому что ёжики - внешние переменные и написать
extern double ёжик[1] = 0.1
extern double ёжик[2] = 0.15
и т.д. не получится
Зато получится в init() скопировать их один раз в массив и дальше с массивом работать.
qqmber вне форума   Ответить с цитированиемОтветить с цитированием  
Старый 25.09.2013, 05:21   #1627 (permalink)
Местный знаток
За призовое место в конкурсе 

 
Аватар для ansol
 
Регистрация: 22.04.2010
Сообщений: 2,009
Репутация: 829
ansol - ansol - ansol - ansol - ansol - ansol - ansol -
Сказал(а) спасибо: 236
Поблагодарили 843 раз(а) в 554 сообщениях
Поинты: 1308
Сообщение от qqmber Посмотреть сообщение
Зато получится в init() скопировать их один раз в массив и дальше с массивом работать.
Счас сделано так:
PHP код:
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;
         } 
Довольно коряво выглядит но работает
Это из серии "настоящие программисты не используют goto".
ansol на форуме   Ответить с цитированиемОтветить с цитированием  
Старый 25.09.2013, 05:29   #1628 (permalink)
Почётный гражданин
 
Аватар для qqmber
 
Регистрация: 20.01.2013
Сообщений: 530
Репутация: 386
qqmber - qqmber - qqmber - qqmber -
Сказал(а) спасибо: 57
Поблагодарили 386 раз(а) в 254 сообщениях
Поинты: 439
Нормально.
Хотя, если у тебя там строки с названиями пар, то можно задавать одной строкой через запятую и потом разобрать в массив строк.
qqmber вне форума   Ответить с цитированиемОтветить с цитированием  
Старый 25.09.2013, 05:37   #1629 (permalink)
Местный знаток
За призовое место в конкурсе 

 
Аватар для ansol
 
Регистрация: 22.04.2010
Сообщений: 2,009
Репутация: 829
ansol - ansol - ansol - ansol - ansol - ansol - ansol -
Сказал(а) спасибо: 236
Поблагодарили 843 раз(а) в 554 сообщениях
Поинты: 1308
Сообщение от qqmber Посмотреть сообщение
Нормально.
Хотя, если у тебя там строки с названиями пар, то можно задавать одной строкой через запятую и потом разобрать в массив строк.
НЕ нормально, конечно. Впервые пришлось такую кривизну в коде терпеть и не знаю как избавиться
Дальше обрабатывается переменная SymbolRow, которая играет роль буферной/временной переменной в цикле.
Строки в MQL4 ограничены по длине, там много через запятую не напишешь.
Это раз.
А два - "дырка" с выбором параметров не делает RESIZE, т.е. список в дырку не влазит, гад такой, и контроль за списком неудобный. К примеру, хочется глянуть, что там такого поназадавал по быстрому, а список "уезжает" за пределы окна вправо и сразу не видно все данные.
ansol на форуме   Ответить с цитированиемОтветить с цитированием  
Старый 25.09.2013, 05:51   #1630 (permalink)
Почётный гражданин
 
Аватар для qqmber
 
Регистрация: 20.01.2013
Сообщений: 530
Репутация: 386
qqmber - qqmber - qqmber - qqmber -
Сказал(а) спасибо: 57
Поблагодарили 386 раз(а) в 254 сообщениях
Поинты: 439
Я тоже с такой фигней сталкивался.
В итоге пришел к тому что сделал отдельный файл с массивом строк и считывал оттуда.
qqmber вне форума   Ответить с цитированиемОтветить с цитированием  
2 пользователя(ей) сказали cпасибо:
ansol (25.09.2013), eevviill (25.09.2013)
Старый 25.09.2013, 10:29   #1631 (permalink)
hoz
Активный участник
 
Аватар для hoz
 
Регистрация: 01.04.2011
Сообщений: 530
Репутация: 111
hoz hoz
Сказал(а) спасибо: 59
Поблагодарили 112 раз(а) в 88 сообщениях
Поинты: 538
Отправить сообщение для hoz с помощью ICQ
Сообщение от Ugar Посмотреть сообщение
А причём тут ДЦ? Это не особенность ДЦ, а особенность работы компьютера с дробными числами. Только в разных языках разная погрешность. Значит лажа может случиться в любом ДЦ. И как показывает практика, случается не редко.
Кстати, да. Это не зависит ни от ДЦ ни от языка. Я чутка начал было недавно изучать С++, там такая же ситуация, и, даже больше... Т.к. типов числе гораздо больше. Так что проще научится думать, ежели всё менять постоянно.
А, по сути,чего загонять то? Нормализации нужно, в основном, в торговых функция. Вот в них и нормализуйте значения... Ну или не в них, а перед ними, которые в них поступают. Я думаю так.
hoz вне форума   Ответить с цитированиемОтветить с цитированием  
Старый 25.09.2013, 10:36   #1632 (permalink)
hoz
Активный участник
 
Аватар для hoz
 
Регистрация: 01.04.2011
Сообщений: 530
Репутация: 111
hoz hoz
Сказал(а) спасибо: 59
Поблагодарили 112 раз(а) в 88 сообщениях
Поинты: 538
Отправить сообщение для hoz с помощью ICQ
Сообщение от ansol Посмотреть сообщение
Ugar
Есть два числа с 5 знаками после запятой. Их сложили. С чего ради у терминала получится 6 знаков? А вот если тебе вместо 5 знаков в цене подсунул ДЦ 6 злонамеренно, как я выше описал, а потом свою же цену и не принимает, то это виноват только ДЦ!
В С++ есть правило приведения типов. Это значит что значение операции приводится в более точному типу. Если например, в выражении принимает участие int и double, то на выходе будет double.
Тут видать такая же хрень. Если в операции есть 6 и 10-знаковые цены, результат будет в 10-знаковом.
P.S. Это мои мысли в слух.
hoz вне форума   Ответить с цитированиемОтветить с цитированием  
Старый 25.09.2013, 10:37   #1633 (permalink)
hoz
Активный участник
 
Аватар для hoz
 
Регистрация: 01.04.2011
Сообщений: 530
Репутация: 111
hoz hoz
Сказал(а) спасибо: 59
Поблагодарили 112 раз(а) в 88 сообщениях
Поинты: 538
Отправить сообщение для hoz с помощью ICQ
Сообщение от qqmber Посмотреть сообщение
Разумеется.

Не поможет.
Надо было разрабам специальный тип данных для цен придумать, а не держать все в double.
А чего.. взял, да написал функцию..
hoz вне форума   Ответить с цитированиемОтветить с цитированием  
Старый 25.09.2013, 11:47   #1634 (permalink)
Почётный гражданин
 
Аватар для qqmber
 
Регистрация: 20.01.2013
Сообщений: 530
Репутация: 386
qqmber - qqmber - qqmber - qqmber -
Сказал(а) спасибо: 57
Поблагодарили 386 раз(а) в 254 сообщениях
Поинты: 439
Сообщение от hoz Посмотреть сообщение
А чего.. взял, да написал функцию..
Сразу чувствую запах С++
Удачи, коллега!
qqmber вне форума   Ответить с цитированиемОтветить с цитированием  
Старый 25.09.2013, 11:58   #1635 (permalink)
Местный знаток
За призовое место в конкурсе 

 
Аватар для ansol
 
Регистрация: 22.04.2010
Сообщений: 2,009
Репутация: 829
ansol - ansol - ansol - ansol - ansol - ansol - ansol -
Сказал(а) спасибо: 236
Поблагодарили 843 раз(а) в 554 сообщениях
Поинты: 1308
Сообщение от hoz Посмотреть сообщение
Кстати, да. Это не зависит ни от ДЦ ни от языка. Я чутка начал было недавно изучать С++, там такая же ситуация, и, даже больше... Т.к. типов числе гораздо больше. Так что проще научится думать, ежели всё менять постоянно.
А, по сути,чего загонять то? Нормализации нужно, в основном, в торговых функция. Вот в них и нормализуйте значения... Ну или не в них, а перед ними, которые в них поступают. Я думаю так.
Не, ну хорош отвлекаться от темы вопроса! Было же про стопы и тейки и про ценовые параметры!
Итак, есть цена 5 значная - без никаких "но"! ДЦ сказал, что 5 знак, так выполняй свои "сказал", нет?
Отлично!
Есть Point по паре = 0.00001 для этого пятизнака - это параметр, он не может быть другим!
Складываем Point и цену, например, Bid
Ну? С каких хренов-то там знаков больше чем 5 будет? Нет уж, извините, это не я дурак, это тот дурак, который считает иначе!
На этом вся глюкавость винды держится - никто ни за что не отвечает, а в результате два числа складываются по каким-то придуманным законам!

Не, приходится бороться, предотвращать и т.д. Но это - тупость программистов, это они должны не допускать подобного маразма на низком уровне, а не я на MQL4

В этом смысле есть самый лучший в мире язык PERL - там из любого типа в любой другой все перкидывается моментом и никаких проблем. Мой последний вопрос про преобразование строк в имена там тоже цветет и пахнет - все настолько просто и удобно, что мне отладчик нужен раз в год, все остальное и так понятно
ansol на форуме   Ответить с цитированиемОтветить с цитированием  
Пользователь сказал cпасибо:
Viko2000 (06.05.2015)
Старый 25.09.2013, 12:46   #1636 (permalink)
hoz
Активный участник
 
Аватар для hoz
 
Регистрация: 01.04.2011
Сообщений: 530
Репутация: 111
hoz hoz
Сказал(а) спасибо: 59
Поблагодарили 112 раз(а) в 88 сообщениях
Поинты: 538
Отправить сообщение для hoz с помощью ICQ
Сообщение от ansol Посмотреть сообщение
1. Это зачем? Я ведь точно знаю, что я не покупал/продавал по 6-значной цене. Чей-то я ее нормализовать буду?

А потому что это к ДЦ не имеет отношения Какие пришли, такие и послали.. (Разумеется с учётом погрешности.) По ходу, им не резонно обрабатывать цены, т.к. это дополнительные расходы ресурсов, а это время.. А время упирается в расходняки.. а это дополнительное оборудование.. А это деньги.. Круговорот..

Сообщение от ansol Посмотреть сообщение
2. Мне - никакой! Это ДЦ мне обещает 5-знак, я его за язык не тянул!

Неа. ДЦ обещает точность не ниже 5-знака. 6-знаков, это повышенная точность... Так что радуйтесь
hoz вне форума   Ответить с цитированиемОтветить с цитированием  
Старый 25.09.2013, 12:57   #1637 (permalink)
Местный знаток
За призовое место в конкурсе 

 
Аватар для ansol
 
Регистрация: 22.04.2010
Сообщений: 2,009
Репутация: 829
ansol - ansol - ansol - ansol - ansol - ansol - ansol -
Сказал(а) спасибо: 236
Поблагодарили 843 раз(а) в 554 сообщениях
Поинты: 1308
Сообщение от hoz Посмотреть сообщение
А потому что это к ДЦ не имеет отношения Какие пришли, такие и послали.. (Разумеется с учётом погрешности.) По ходу, им не резонно обрабатывать цены, т.к. это дополнительные расходы ресурсов, а это время.. А время упирается в расходняки.. а это дополнительное оборудование.. А это деньги.. Круговорот..




Неа. ДЦ обещает точность не ниже 5-знака. 6-знаков, это повышенная точность... Так что радуйтесь
В принципе, ты прав. С другой стороны, от финансовой организации хочется получить безусловную точность. Поэтому, все решает техподдержка.
В альпари меня послали на три буквы, типа, своп дробный тебе же лучше. Они, типа, мне полпункта съэкономили, ога
Для советника это очень плохо, для анализа еще хуже, ибо как понять. что открыл ордер по цене. по которой сов никак не мог открыть ордер - нет сигналов на такую цену.
В результате получается муть примерно аналогичная открытию встречных в МТ5 - кто куда зачем открыл - непонятно, но ты в минусе!
ansol на форуме   Ответить с цитированиемОтветить с цитированием  
Старый 25.09.2013, 12:58   #1638 (permalink)
hoz
Активный участник
 
Аватар для hoz
 
Регистрация: 01.04.2011
Сообщений: 530
Репутация: 111
hoz hoz
Сказал(а) спасибо: 59
Поблагодарили 112 раз(а) в 88 сообщениях
Поинты: 538
Отправить сообщение для hoz с помощью ICQ
Сообщение от ansol Посмотреть сообщение
Не, ну хорош отвлекаться от темы вопроса! Было же про стопы и тейки и про ценовые параметры!
Итак, есть цена 5 значная - без никаких "но"! ДЦ сказал, что 5 знак, так выполняй свои "сказал", нет?
Отлично!
Есть Point по паре = 0.00001 для этого пятизнака - это параметр, он не может быть другим!
Складываем Point и цену, например, Bid
Ну? С каких хренов-то там знаков больше чем 5 будет? Нет уж, извините, это не я дурак, это тот дурак, который считает иначе!
На этом вся глюкавость винды держится - никто ни за что не отвечает, а в результате два числа складываются по каким-то придуманным законам!

Не, приходится бороться, предотвращать и т.д. Но это - тупость программистов, это они должны не допускать подобного маразма на низком уровне, а не я на MQL4

В этом смысле есть самый лучший в мире язык PERL - там из любого типа в любой другой все перкидывается моментом и никаких проблем. Мой последний вопрос про преобразование строк в имена там тоже цветет и пахнет - все настолько просто и удобно, что мне отладчик нужен раз в год, все остальное и так понятно

А я не увиливаю. Тут суть такая, что, как я понял, как-то капанув по этой теме глубже:
Точность чисел типа дабл зависит не от операционной системы, а от самой системы, на которой производятся расчёты, т.е. от от железа так сказать. По-большей части от процессора.
Касаемо перла, там видать просто программисты писали язык уже чётко, а не криво как остальные. Сразу всё предусмотрели. Ведь это уже юниксоиды первыми вроде как его реализовали, а там уровень другой. Я вообще удивлён, почему он не стал так популярен, как Си-подобные. Ведь язык и правда красивый, чёткий, и самое главное очень гибкий. Я одно время когда FreeBSD ставил, чутка его изучал. Впечатления самые позитивные.
hoz вне форума   Ответить с цитированиемОтветить с цитированием  
Старый 25.09.2013, 13:01   #1639 (permalink)
hoz
Активный участник
 
Аватар для hoz
 
Регистрация: 01.04.2011
Сообщений: 530
Репутация: 111
hoz hoz
Сказал(а) спасибо: 59
Поблагодарили 112 раз(а) в 88 сообщениях
Поинты: 538
Отправить сообщение для hoz с помощью ICQ
Сообщение от ansol Посмотреть сообщение
В принципе, ты прав. С другой стороны, от финансовой организации хочется получить безусловную точность. Поэтому, все решает техподдержка.
В альпари меня послали на три буквы, типа, своп дробный тебе же лучше. Они, типа, мне полпункта съэкономили, ога
Для советника это очень плохо, для анализа еще хуже, ибо как понять. что открыл ордер по цене. по которой сов никак не мог открыть ордер - нет сигналов на такую цену.
В результате получается муть примерно аналогичная открытию встречных в МТ5 - кто куда зачем открыл - непонятно, но ты в минусе!

Мне вот интересно. Вам переоткрыли ордер. Цена открытия изменилась получается, и она стала равной текущей? А для баланса текущей ситуации по балансу, прибавили(отняли) профит(убыток) так?
У меня такого не было, так что, чтоб понять нада понять что у Вас там происходит.
hoz вне форума   Ответить с цитированиемОтветить с цитированием  
Старый 25.09.2013, 13:02   #1640 (permalink)
Местный знаток
За призовое место в конкурсе 

 
Аватар для ansol
 
Регистрация: 22.04.2010
Сообщений: 2,009
Репутация: 829
ansol - ansol - ansol - ansol - ansol - ansol - ansol -
Сказал(а) спасибо: 236
Поблагодарили 843 раз(а) в 554 сообщениях
Поинты: 1308
Цитата:
Точность чисел типа дабл зависит не от операционной системы, а от самой системы, на которой производятся расчёты, т.е. от от железа так сказать. По-большей части от процессора.
Нет! Никак нет! Ни от какого железа ниче не зависит! Можно на ZX Spectrum реализовать астрономические расчеты - никаких проблем! И в шахматы может играть ваш телефон неглупо!
Все зависит от разработчиков софта!
ansol на форуме   Ответить с цитированиемОтветить с цитированием  
Ответ

Метки
mql4, mql4 помощь, вопросы mql4


Опции темы

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.
Trackbacks are Выкл.
Pingbacks are Выкл.
Refbacks are Выкл.



Текущее время: 05:43. Часовой пояс GMT.


Перевод: zCarot
Copyright ©2000 - 2016, Jelsoft Enterprises Ltd.
SEO by vBSEO