Ответ
 
Опции темы
Старый 17.09.2016, 14:06   #5021 (permalink)
Элитный участник
 
Аватар для Ugar
 
Регистрация: 13.03.2009
Сообщений: 2,255
Репутация: 1963
Ugar Ugar Ugar Ugar Ugar Ugar Ugar Ugar Ugar Ugar Ugar
Сказал(а) спасибо: 349
Поблагодарили 1,892 раз(а) в 1,069 сообщениях
Поинты: 1276
Отправить сообщение для Ugar с помощью ICQ
Сообщение от vladradon Посмотреть сообщение
Но не раз сталкивался с тем, что котировки в тесторе выпрыгивают за 5 знаков после запятой (может и 8 и 16 быть). Это, конечно глюки брокеров, но они бывают.
Причём тут брокеры? Это особенность хранения дробных данных в переменных в С подобных языках программирования.

_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
Глубокое понимание процессов помогает в работе, но сильно мешает в отдыхе.
http://forexsystems.ru/signaturepics/sigpic3798_1.gif
Чужие программы не переделываю!
Ugar на форуме   Ответить с цитированиемОтветить с цитированием  
Старый 18.09.2016, 10:45   #5022 (permalink)
Активный участник
 
Аватар для vladradon
 
Регистрация: 12.02.2015
Сообщений: 104
Репутация: 37
vladradon
Сказал(а) спасибо: 23
Поблагодарили 37 раз(а) в 25 сообщениях
Поинты: 168
Сообщение от Ugar Посмотреть сообщение
Причём тут брокеры? Это особенность хранения дробных данных в переменных в С подобных языках программирования.
При чем тут особенности хранения, если у брокеров нет нормализации под определенное количество знаков или она (нормализация) дает сбои (а может и целенаправленно глючит). А если знаки не совпадают с заявленными, то сов или индюк скорее всего выдаст ошибку при попытке обработать нестандартное значение и с таким я уже не раз сталкивался.
vladradon на форуме   Ответить с цитированиемОтветить с цитированием  
Старый 18.09.2016, 10:51   #5023 (permalink)
Местный знаток
За призовое место в конкурсе 

 
Аватар для ansol
 
Регистрация: 22.04.2010
Сообщений: 2,009
Репутация: 829
ansol - ansol - ansol - ansol - ansol - ansol - ansol -
Сказал(а) спасибо: 236
Поблагодарили 843 раз(а) в 554 сообщениях
Поинты: 1308
Сообщение от Ugar Посмотреть сообщение
Причём тут брокеры? Это особенность хранения дробных данных в переменных в С подобных языках программирования.
У меня была такая фишка с альпари на конкурсном реал-счете, где своп пересчитывается в цену открытия. В результате получалась дробное значение и цена из пятизначной становилась шестизначной. Мой незамысловатый трейлинг прибавлял N пунктов к цене и пытался выставить стоп на уровне цена открытия+N*Point = получалась опять шестизначная борода и альпари слал такой трейлинг вдаль
Ну, а я послал их туда же
ansol на форуме   Ответить с цитированиемОтветить с цитированием  
Пользователь сказал cпасибо:
vladradon (19.09.2016)
Старый 18.09.2016, 11:11   #5024 (permalink)
 
Аватар для mobidik
 
Регистрация: 09.08.2012
Адрес: Ua_Khm
Сообщений: 1,648
Репутация: 8553
mobidik mobidik mobidik mobidik mobidik mobidik mobidik mobidik mobidik mobidik mobidik
Сказал(а) спасибо: 633
Поблагодарили 8,549 раз(а) в 1,562 сообщениях
Поинты: 802
Сообщение от vladradon Посмотреть сообщение
При чем тут особенности хранения, если у брокеров нет нормализации под определенное количество знаков или она (нормализация) дает сбои (а может и целенаправленно глючит). А если знаки не совпадают с заявленными, то сов или индюк скорее всего выдаст ошибку при попытке обработать нестандартное значение и с таким я уже не раз сталкивался.
Вы тут не правы, если на "пальцах", то от брокера в терминал поступают данные с точностью до 16 знака, а вот уже сам терминал приводит /округляет/ их к своей точности. При этом бывают "сбои" в приведению к нужному типу значений в работе терминала, о чем и писал ansol.
mobidik на форуме   Ответить с цитированиемОтветить с цитированием  
Старый 18.09.2016, 11:18   #5025 (permalink)
Местный знаток
За призовое место в конкурсе 

 
Аватар для ansol
 
Регистрация: 22.04.2010
Сообщений: 2,009
Репутация: 829
ansol - ansol - ansol - ansol - ansol - ansol - ansol -
Сказал(а) спасибо: 236
Поблагодарили 843 раз(а) в 554 сообщениях
Поинты: 1308
Сообщение от mobidik Посмотреть сообщение
Вы тут не правы, если на "пальцах", то от брокера в терминал поступают данные с точностью до 16 знака, а вот уже сам терминал приводит /округляет/ их к своей точности. При этом бывают "сбои" в приведению к нужному типу значений в работе терминала, о чем и писал ansol.
Вообще-то, в рамках MQL4 было бы полезным объявлять некоторые переменные один раз на всю программу 5-значными, а не лепить везде NormalizeDouble, но, к сожалению, приходится.
Кстати, похожая ситуация имеется с лотом 0.07 - он всегда 0.07000000001(много нулей) и такой лот тоже обламывается в OrderSend, хотя логично было бы откусывать автоматом, а не мозги программеру компостировать.
ansol на форуме   Ответить с цитированиемОтветить с цитированием  
Старый 18.09.2016, 12:13   #5026 (permalink)
Элитный участник
 
Аватар для Ugar
 
Регистрация: 13.03.2009
Сообщений: 2,255
Репутация: 1963
Ugar Ugar Ugar Ugar Ugar Ugar Ugar Ugar Ugar Ugar Ugar
Сказал(а) спасибо: 349
Поблагодарили 1,892 раз(а) в 1,069 сообщениях
Поинты: 1276
Отправить сообщение для Ugar с помощью ICQ
Можно менять брокеров бесконечно, обвиняя их в кривых котировках. А можно разобраться в языке программирования и учитывать его особенности.
Запустите вот этот скрипт
#include <stdlib.mqh>
void OnStart()
{
//---
int maxfact=23;
double a=1;
for (int i=2; i<=maxfact; i++) { a=a*i; }
for (int j=maxfact; j>=2; j--) { a=a/j; }
Alert(" a=",DoubleToStrMorePrecision(a,16));
}
Смысл понятен? Должна получиться 1. А это поучается далеко не всегда. А котировки никаких брокеров здесь не используются. Какого же тогда брокера обвинить в кривых результатах?
Можете изменить int maxfact=35; и попробовать.

_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
Глубокое понимание процессов помогает в работе, но сильно мешает в отдыхе.
http://forexsystems.ru/signaturepics/sigpic3798_1.gif
Чужие программы не переделываю!
Ugar на форуме   Ответить с цитированиемОтветить с цитированием  
Старый 18.09.2016, 12:33   #5027 (permalink)
Местный знаток
За призовое место в конкурсе 

 
Аватар для ansol
 
Регистрация: 22.04.2010
Сообщений: 2,009
Репутация: 829
ansol - ansol - ansol - ansol - ansol - ansol - ansol -
Сказал(а) спасибо: 236
Поблагодарили 843 раз(а) в 554 сообщениях
Поинты: 1308
Сообщение от Ugar Посмотреть сообщение
Можно менять брокеров бесконечно, обвиняя их в кривых котировках. А можно разобраться в языке программирования и учитывать его особенности.
А можно изначально предусмотреть в языке нормализацию критичных значений, учитывая специфику применения данного инструмента.
Хреновые программисты в метаквотах, только и всего.
ansol на форуме   Ответить с цитированиемОтветить с цитированием  
Пользователь сказал cпасибо:
vladradon (19.09.2016)
Старый 18.09.2016, 12:35   #5028 (permalink)
 
Аватар для mobidik
 
Регистрация: 09.08.2012
Адрес: Ua_Khm
Сообщений: 1,648
Репутация: 8553
mobidik mobidik mobidik mobidik mobidik mobidik mobidik mobidik mobidik mobidik mobidik
Сказал(а) спасибо: 633
Поблагодарили 8,549 раз(а) в 1,562 сообщениях
Поинты: 802
Сообщение от ansol Посмотреть сообщение
Кстати, похожая ситуация имеется с лотом 0.07 - он всегда 0.07000000001(много нулей) и такой лот тоже обламывается в OrderSend, хотя логично было бы откусывать автоматом, а не мозги программеру компостировать.
И не только, хотя метаквоты говорят, что этот глюк относится только к выводу информации в коммент и принт, при этом, брокер получает верное значение.

PS.
вот как значения выводятся в коммент в данном скрипте:
Миниатюры:
Нажмите на изображение для увеличения
Название: test.png
Просмотров: 27
Размер:	13.6 Кб
ID:	253227  
Вложения:
Тип файла: mq4 test.mq4 (956 байт, 1 просмотров)
mobidik на форуме   Ответить с цитированиемОтветить с цитированием  
Пользователь сказал cпасибо:
eevviill2 (18.09.2016)
Старый 19.09.2016, 06:12   #5029 (permalink)
Новичок форума
 
Аватар для Rennela
 
Регистрация: 04.01.2013
Адрес: 俄罗斯
Сообщений: 107
Репутация: 29
Rennela
Сказал(а) спасибо: 27
Поблагодарили 28 раз(а) в 22 сообщениях
Поинты: 83
Вопрос может не в тему. Парни подскажите кто в этом шарит: устанавливаю скрипт на VPS,на 16 валютных пар и VPS тормозить начинает,оперативка заполнена меньше трети, но процессор двухядерный загружен на 100%. Могут ли установленные скрипты так загрузить VPS?
Rennela на форуме   Ответить с цитированиемОтветить с цитированием  
Старый 19.09.2016, 07:32   #5030 (permalink)
 
Аватар для mobidik
 
Регистрация: 09.08.2012
Адрес: Ua_Khm
Сообщений: 1,648
Репутация: 8553
mobidik mobidik mobidik mobidik mobidik mobidik mobidik mobidik mobidik mobidik mobidik
Сказал(а) спасибо: 633
Поблагодарили 8,549 раз(а) в 1,562 сообщениях
Поинты: 802
Rennela, могут. Так снеси, скажем с 10 пар и посмотри как он себя поведет.
mobidik на форуме   Ответить с цитированиемОтветить с цитированием  
Старый 19.09.2016, 08:16   #5031 (permalink)
Новичок форума
 
Аватар для Rennela
 
Регистрация: 04.01.2013
Адрес: 俄罗斯
Сообщений: 107
Репутация: 29
Rennela
Сказал(а) спасибо: 27
Поблагодарили 28 раз(а) в 22 сообщениях
Поинты: 83
Сообщение от mobidik Посмотреть сообщение
Rennela, могут. Так снеси, скажем с 10 пар и посмотри как он себя поведет.
Я их устанавливаю постепенно, и где-то на четвертой паре тормоза сильные начинаются. Что порекомендуете сделать в данной ситуации? Количество пар я буду только увеличивать,стратегия такая мультивалютная.На каждую пару свой терминал? Или может скрипт переписать под советник? Скрипт сам написал(начинающий)всего 458 строк кода.Или количество строк оптимизировать?
Rennela на форуме   Ответить с цитированиемОтветить с цитированием  
Старый 19.09.2016, 08:48   #5032 (permalink)
Активный участник
 
Аватар для _SERG_
 
Регистрация: 21.07.2009
Сообщений: 242
Репутация: 75
_SERG_
Сказал(а) спасибо: 7
Поблагодарили 75 раз(а) в 61 сообщениях
Поинты: 284
Сообщение от Rennela Посмотреть сообщение
Я их устанавливаю постепенно, и где-то на четвертой паре тормоза сильные начинаются. Что порекомендуете сделать в данной ситуации? Количество пар я буду только увеличивать,стратегия такая мультивалютная.На каждую пару свой терминал? Или может скрипт переписать под советник? Скрипт сам написал(начинающий)всего 458 строк кода.Или количество строк оптимизировать?
Начинающий, а ты зацикливал скрипт While-ом со Sleep-ом?

Последний раз редактировалось _SERG_; 19.09.2016 в 08:51.
_SERG_ на форуме   Ответить с цитированиемОтветить с цитированием  
Старый 19.09.2016, 08:59   #5033 (permalink)
 
Аватар для mobidik
 
Регистрация: 09.08.2012
Адрес: Ua_Khm
Сообщений: 1,648
Репутация: 8553
mobidik mobidik mobidik mobidik mobidik mobidik mobidik mobidik mobidik mobidik mobidik
Сказал(а) спасибо: 633
Поблагодарили 8,549 раз(а) в 1,562 сообщениях
Поинты: 802
Сообщение от Rennela Посмотреть сообщение
Или может скрипт переписать под советник? Скрипт сам написал(начинающий)всего 458 строк кода.Или количество строк оптимизировать?
Тут не количество строк нужно оптимизировать, а сам код, причем, не зависимо, что Вы создаете. Сам скрипт - это разовое выполнение программы, а Вы его зациклили - вот и нагрузка на терминал. Как вариант, можно, если нет глубины истории, добавить её ограничение и после прохода всего кода установить задержку с помощью Sleep, параметр подбирать.
Самое верное, так это переписать под советник.
Удачи.
mobidik на форуме   Ответить с цитированиемОтветить с цитированием  
2 пользователя(ей) сказали cпасибо:
eevviill2 (19.09.2016), Rennela (19.09.2016)
Старый 19.09.2016, 09:20   #5034 (permalink)
Новичок форума
 
Аватар для Rennela
 
Регистрация: 04.01.2013
Адрес: 俄罗斯
Сообщений: 107
Репутация: 29
Rennela
Сказал(а) спасибо: 27
Поблагодарили 28 раз(а) в 22 сообщениях
Поинты: 83
Сообщение от mobidik Посмотреть сообщение
Тут не количество строк нужно оптимизировать, а сам код, причем, не зависимо, что Вы создаете. Сам скрипт - это разовое выполнение программы, а Вы его зациклили - вот и нагрузка на терминал. Как вариант, можно, если нет глубины истории, добавить её ограничение и после прохода всего кода установить задержку с помощью Sleep, параметр подбирать.
Самое верное, так это переписать под советник.
Удачи.
Сам скрипт состоит из блоков, которые идут один за другим по ходу работы,т.е. один блок отработал и break,и более он не используется. Вашу мысль я понял, так и сделаю. Спасибо.

Последний раз редактировалось Rennela; 19.09.2016 в 09:31.
Rennela на форуме   Ответить с цитированиемОтветить с цитированием  
Старый 19.09.2016, 09:27   #5035 (permalink)
Новичок форума
 
Аватар для Rennela
 
Регистрация: 04.01.2013
Адрес: 俄罗斯
Сообщений: 107
Репутация: 29
Rennela
Сказал(а) спасибо: 27
Поблагодарили 28 раз(а) в 22 сообщениях
Поинты: 83
Сообщение от _SERG_ Посмотреть сообщение
Начинающий, а ты зацикливал скрипт While-ом со Sleep-ом?
Скрипт работает. Все блоки зациклены while т.к. брокеры любят или отреквотить или оффквот,да и просто сбой может какой-нибудь произойти. Sleep-ы стоят где без них никак. Или нужно Sleep ставить в конце каждого while? Если так,то какой оптимальный промежуток времени в мс?
Rennela на форуме   Ответить с цитированиемОтветить с цитированием  
Старый 19.09.2016, 09:37   #5036 (permalink)
Элитный участник
 
Аватар для Ugar
 
Регистрация: 13.03.2009
Сообщений: 2,255
Репутация: 1963
Ugar Ugar Ugar Ugar Ugar Ugar Ugar Ugar Ugar Ugar Ugar
Сказал(а) спасибо: 349
Поблагодарили 1,892 раз(а) в 1,069 сообщениях
Поинты: 1276
Отправить сообщение для Ugar с помощью ICQ
Сообщение от Rennela Посмотреть сообщение
Скрипт работает. Все блоки зациклены while т.к. брокеры любят или отреквотить или оффквот,да и просто сбой может какой-нибудь произойти. Sleep-ы стоят где без них никак. Или нужно Sleep ставить в конце каждого while? Если так,то какой оптимальный промежуток времени в мс?
Без Sleep цикл повторяется с максимальной скорость, которую может выдать процессор.То есть грузить проц на максимум. Чем меньше спит, тем больше нагрузка. Ставь 300. Обычно достаточно выполнять 3 раза в секунду.

_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
Глубокое понимание процессов помогает в работе, но сильно мешает в отдыхе.
http://forexsystems.ru/signaturepics/sigpic3798_1.gif
Чужие программы не переделываю!

Последний раз редактировалось Ugar; 19.09.2016 в 09:43.
Ugar на форуме   Ответить с цитированиемОтветить с цитированием  
Пользователь сказал cпасибо:
Rennela (19.09.2016)
Старый 19.09.2016, 13:11   #5037 (permalink)
Активный участник
 
Аватар для _SERG_
 
Регистрация: 21.07.2009
Сообщений: 242
Репутация: 75
_SERG_
Сказал(а) спасибо: 7
Поблагодарили 75 раз(а) в 61 сообщениях
Поинты: 284
Сообщение от Rennela Посмотреть сообщение
...... брокеры любят или отреквотить или оффквот,да и просто сбой .......
Они ж не просто так это любят, у них тоже железо не резиновое, тоже не успевает за любителями зациклить скрипты. Да и коммуникация между брокером и тобой, тож не пуля.
По поводу времени задержки выполнения кода, вопрос не тривиальный, поскольку в течение суток интенсивность поступления котировок меняется. И в зацыкленном скрипте есть возможностьменяя параметр у Sleep(), "регулировать" количество обработок, но в интервале времени до секунды. Так шо пишите.
Идею переписать в виде советника, одобряю, только в этом случае хорошо подумай как организовать его работу, и судя по словам выше в ветке, потребности зацикливать код, нет необходимости, достаточно вписаться в стандартные функции.
_SERG_ на форуме   Ответить с цитированиемОтветить с цитированием  
Пользователь сказал cпасибо:
Rennela (20.09.2016)
Старый 22.09.2016, 23:06   #5038 (permalink)
Активный участник
 
Аватар для vladradon
 
Регистрация: 12.02.2015
Сообщений: 104
Репутация: 37
vladradon
Сказал(а) спасибо: 23
Поблагодарили 37 раз(а) в 25 сообщениях
Поинты: 168
Это именно для какого-то цикла внутри скрипта или сова или индюка - не важно, слипинг при неопределенно ориентированном выходе из цикла может быть уместен, но такой цикл должен иметь выход, чтобы он не подвесил весь алгоритм. Цикл должен запускаться извне (по ходу проги) и иметь выход по-умолчанию (типа фальсе - ну... не получилось) и тогда будет все без тормозов.))
vladradon на форуме   Ответить с цитированиемОтветить с цитированием  
Старый 23.09.2016, 02:16   #5039 (permalink)
Активный участник
 
Аватар для vladradon
 
Регистрация: 12.02.2015
Сообщений: 104
Репутация: 37
vladradon
Сказал(а) спасибо: 23
Поблагодарили 37 раз(а) в 25 сообщениях
Поинты: 168
Только позавчера наблюдал на конкурсном счете на Exness в момент выхода новости - несколько минут тупо не обновлялись котировки, пока все не успокоилось. Мои скальперы (совы) на другом брокере слили по 5-ти стоплоссам. Как ни странно, пока фракталки в сочетании с мартином прут в гору...

Последний раз редактировалось vladradon; 23.09.2016 в 02:19.
vladradon на форуме   Ответить с цитированиемОтветить с цитированием  
Старый 23.09.2016, 10:38   #5040 (permalink)
Местный знаток
 
Аватар для e-partner
 
Регистрация: 29.09.2010
Адрес: Москва
Сообщений: 690
Репутация: 554
e-partner - e-partner - e-partner - e-partner - e-partner - e-partner -
Сказал(а) спасибо: 458
Поблагодарили 553 раз(а) в 277 сообщениях
Поинты: 208

По умолчанию Прошу помочь исправить код


Привет, коллеги, привет всем кого знаю и не знаю!

Прошу помочь с таким кодом. Цель: сделать обновление советника каждое энное время, независимо от поступления тиков:



PHP код:
[SIZE="2"]
//+------------------------------------------------------------------+
//| Timer function                                                   |
//+------------------------------------------------------------------+
void OnTimer()
  {
   
Comment(TimeCurrent());
  }
//+------------------------------------------------------------------+
//| Expert initialization function                                   |
//+------------------------------------------------------------------+
void OnInit()
  {
//--- create timer
   
EventSetTimer(1);
  }
//+------------------------------------------------------------------+
//| Expert deinitialization function                                 |
//+------------------------------------------------------------------+
void OnDeinit(const int reason)
  {
//--- destroy timer
   
EventKillTimer();
   
Comment(""); } [/SIZE
Проверка_OnTimer.mq4

В комментарий выводится кол-во секунд неравномерно. Идут задержки зависимые от поступления тиков. Нужно, чтобы отсчет велся равномерно, без пропусков.

Жду помощи от тех, кто смог решить однажды такую задачку!

_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
----------------
Я теперь понял, что пик совершенства в трейдерстве - это прибыльная торговля на чистом графике, математические методы могут использоваться. Индикаторы практически не используются. Надеюсь, я уже очень близок к этому!))))
e-partner вне форума   Ответить с цитированиемОтветить с цитированием  
Ответ

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


Опции темы

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

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



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


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