При исполнении эксперта со временем заканчивается память и компьютер зависает, что делать? - страница 2
![MQL5 - Язык торговых стратегий для клиентского терминала MetaTrader 5](https://c.mql5.com/i/registerlandings/logo-2.png)
Вы упускаете торговые возможности:
- Бесплатные приложения для трейдинга
- 8 000+ сигналов для копирования
- Экономические новости для анализа финансовых рынков
Регистрация
Вход
Вы принимаете политику сайта и условия использования
Если у вас нет учетной записи, зарегистрируйтесь
поправлю... секунда
Игорь, тут зависит от стиля торговли .. если это короткая быстрая торговля то да можно секунду
если сделок в день максимум одна если сделки открываются раз - день или в неделю
то минута нормально
Игорь, тут зависит от стиля торговли
Юра, какой стиль? О чём ты? OrderOpenTime() и OrderCloseTime() возвращают время в секундах. Со стилем это никак не связано. Я говорю про технические ограничения. Например, нельзя упоминаемый тобой квант времени сделать 0,1 секунды. Девушку интересовала именно последняя сделка, а не результат торговли за квант времени, размером в час, например.
Совершенно верно. :)))
Юра, какой стиль? О чём ты? OrderOpenTime() и OrderCloseTime() возвращают время в секундах. Со стилем это никак не связано. Я говорю про технические ограничения. Например, нельзя упоминаемый тобой квант времени сделать 0,1 секунды. Девушку интересовала именно последняя сделка, а не результат торговли за квант времени, размером в час, например.
Тогда можно читать из истории просто последний ордер
без цикла - в котором приходится бежать от начала или от конца к началу, в поисках последнего ордра!
Т Е достаточно считать количество ордеров в истории и обратиться к последнему закрытому
--
что кстати еще и время экономит ( на оптимизациях тоже бодррее работать должно, особенно у тех у кого слабые машины )
--
--
Игорь поправь если, сей метод не годится :-)
Игорь поправь если, сей метод не годится :-)
Сей метод годится только для тестов на истории или в реале, когда нужно выбрать последнюю сделку из числа ваще всех сделок. А вот если нужно выбрать последнюю сделку конкретного эксперта или символа, приходится перебирать всю историю.
А вообще, мысль твоя, Юра, здравая! Можно с конца идти по списку. Найти то, что нужно и выйти из цикла по брику.
Сей метод годится только для тестов на истории или в реале, когда нужно выбрать последнюю сделку из числа ваще всех сделок. А вот если нужно выбрать последнюю сделку конкретного эксперта или символа, приходится перебирать всю историю.
угу! тут да
--
потому одновременно универсальной и быстрой функции не получиться, всегда приходится чем то руководствоваться при выборе!
для оптимизаций я бы юзал свой метод!
--
кстати неудобно что нет условной компиляции - можно делать конструкции типа
код получается конечно громоздкий в обоих случаях - но бинарник был бы без ветвлений
if ( isOptimization () == true )
{
вызываем быстрый метод поиска профита последнего ордера
}
else
{
вызываем более медленный но универсальный - в реальной работе
( тут еще кстати :-) для RefreshRates() задежки увеличиваются , у меня эксперт на чемпионате 2008 иногда нарывается на реквоты и неверную цену
на рынке 2007 код работы с ордерами не выделывался, а я его почти не менял, а 2008 косяки идут, из за подобных задержек )
потому даже небольшой цикл , это плохо
с неверной ценой и реквотами конечно можно разобраться иначе - уже знаю как -
раньше времени хватало на быстром рынке не хватает
}
---
еще если сортировать историю то тоже могут быть проблемы! POS если не ошибаюсь подчинятеся сортировке
я точно не помню, проверить сейчас не могу
---
Хорошо что развили мою тему, но она пошла не в ту сторону, сейчас попробую изложить снова:
1. Я играю на всех парах с помощью одного присоединенного эксперта.
2. Эксперт каждый раз обращается к пользовательскому индикатору на разных парах, что выглядит в логе очень страшно имя_индикатора, пара, М15, loaded successfully и так каждые 3-5 секунд.
3. Даже, если поставить Sleep(15000), все-равно не решает проблемы рано или поздно в системе вылезет сообщение о малом кол-ве памяти, эдак через часов 6-12.
4. Памяти Gb.
5. Как решить проблему, я так понимаю возможен кеш индикатора или что-то в этом духе, зачем же все время загружать индикатор???
Вариантов может быть много: может индикатор просто криво написан и его вполне можно оптимизировать, можно сделать его расчет по закрытым барам, ограничить колво баров для перерасчета 1 периодом вычислений. Без кода индикатора навярняка никто не скажет и вариант только один - нарастить до упора память.
Создал эксперта решил для повышения эффективности тестировать стратегии и торговать на всех парах. Эксперт использует пользовательский индикатор для принятия решений. Так как пар много он часто загружает индикатор, скорее всего в этом и проблема... загрузив его так пару тысяч раз естественно возникает проблема, есть ли решение чтобы эксперт торговал сразу на всех парах используя польз.индикаторы и при этом не сжерал память? пишу быстро пока не завис :)
1. ОЗУ побольше. Максимально возможное надо установить.
2. Увеличить файл подкачки, если нет ОЗУ.
3. Уменьшить количество баров на графике хотя бы до 50000.
1. ОЗУ побольше. Максимально возможное надо установить.
2. Увеличить файл подкачки, если нет ОЗУ.
3. Уменьшить количество баров на графике хотя бы до 50000.
имя_индикатора, пара, М15, loaded successfully - от этого можно избавится почему он все время перегружает вместо того чтобы использовать то что загрузил ранее? Я думаю в этом и проблема, утечик памяти и т.п. помогите с реальным ответом, из данного более менее реален 3й пункт