Любые вопросы новичков по MQL4 и MQL5, помощь и обсуждение по алгоритмам и кодам - страница 1284
Вы упускаете торговые возможности:
- Бесплатные приложения для трейдинга
- 8 000+ сигналов для копирования
- Экономические новости для анализа финансовых рынков
Регистрация
Вход
Вы принимаете политику сайта и условия использования
Если у вас нет учетной записи, зарегистрируйтесь
используйте https://www.mql5.com/ru/docs/dateandtime/timecurrent
второй вариант вызова функции
в общем случае это https://www.mql5.com/ru/docs/dateandtime/timetostructБольшое спасибо за ценную информацию.
Что такое структура и как она работает , в целом, я понял. Но еще не до конца осмыслил все тонкости
, связанные с ней. Я намного лучше усваиваю новый материал на наглядных примерах.
Буду Вам очень признателен если покажете как пишется код нижеприведенного условия на mql5
Открывать ордер при помощи структуры я уже научился
if(Hour()==10)
открыть ордер.
Образец открытия ордера можно не писать.... только запись условия.
Спасибо еще раз за помощь.
наверное так хотите цену и время бара определить:
вернее это координаты клика мышки в значениях время + цена на чарте, бар нужно определять через iBarShift()Да, это оно, как дальше понятно. Спасибо)
Большое спасибо за ценную информацию.
Что такое структура и как она работает , в целом, я понял. Но еще не до конца осмыслил все тонкости
, связанные с ней. Я намного лучше усваиваю новый материал на наглядных примерах.
Буду Вам очень признателен если покажете как пишется код нижеприведенного условия на mql5
Открывать ордер при помощи структуры я уже научился
if(Hour()==10)
открыть ордер.
Образец открытия ордера можно не писать.... только запись условия.
Спасибо еще раз за помощь.
Большое спасибо за помощь. Теперь все ясно и понятно.
Всем доброго времени суток!
Пытаюсь перейти с mql4 на mql5 . Создал для тестирования простой код открывающий ордера . Советник в тестере ордера открывает . Поместил в начало функции void OnTick() функцию Print().На четверке советник заходил бы в эту функцию на каждом тике и печатал бы ее на каждом тике в Журнале. А на пятерке - ни на одном из тиков Советник в функцию Print() не заходит и ничего не печатает в Журнале. Визуализация и оптимизация на Советнике отключены.
Подскажите пожалуйста как нужно изменить код, что бы Print() печаталась в журнале на каждом тике, как в четверке.
Заранее благодарен всем кто мне поможет .
Вот мой код
Увеличил депозит в Советнике до 100 000. В результате на каждом тике Print() стала печататься в журнале....Но не открылась ни одна сделка.
А мне нужно что бы и сделки открывались и Print() выводилась.
Всем доброго времени суток!
Пытаюсь перейти с mql4 на mql5 . Создал для тестирования простой код открывающий ордера . Советник в тестере ордера открывает . Поместил в начало функции void OnTick() функцию Print().На четверке советник заходил бы в эту функцию на каждом тике и печатал бы ее на каждом тике в Журнале. А на пятерке - ни на одном из тиков Советник в функцию Print() не заходит и ничего не печатает в Журнале. Визуализация и оптимизация на Советнике отключены.
Подскажите пожалуйста как нужно изменить код, что бы Print() печаталась в журнале на каждом тике, как в четверке.
Заранее благодарен всем кто мне поможет .
Вот мой код
Увеличил депозит в Советнике до 100 000. В результате на каждом тике Print() стала печататься в журнале....Но не открылась ни одна сделка.
А мне нужно что бы и сделки открывались и Print() выводилась.
Посмотрите в логах что печатает, там на каждом шаге сведения заносятся. Скорее всего что то не так с открытием ордеров и советник не работает.
C:\Users\....\AppData\Roaming\MetaQuotes\Terminal\99193835FC75DE8874B99F9A3B93F15E\MQL5\Logs
мы же уже обсуждали с Вами стоит ли много раз обращаться к данным терминала из MQL4, тогда про OrderSelect https://www.mql5.com/ru/forum/342989#comment_16743716
можно так же протестировать и получение текущих цен, думаю тоже по 100500 раз можно на одном тике использовать, т.к. миллионами раз в секунду будет производительность
единственное, да - чем больше символов в окне обзор рынка, тем больше будет нагружаться сам терминал, ну и соответственно если будете вызывать данные от много разных символов, тогда тоже будут лаги
т.е. если разумно использовать терминал, то ничего не зависнет - в окне обзор рынка штук десять символов, те которые используете
сколько одновременно чартов можно открыть не проверял, но думаю, что если историю ограничить 1000 баров, то скорее всего пару десятков окон чартов без проблем терминал потянет
100
Посмотрите в логах что печатает, там на каждом шаге сведения заносятся. Скорее всего что то не так с открытием ордеров и советник не работает.
C:\Users\....\AppData\Roaming\MetaQuotes\Terminal\99193835FC75DE8874B99F9A3B93F15E\MQL5\Logs
Спасибо за подсказку.
Действительно не работает. Пишет.
2020.10.27 06:40:45.311 Tester EURUSD: history data begins from 2018.01.02 00:00
2020.10.27 06:40:45.312 Core 1 connecting to 127.0.0.1:3000
2020.10.27 06:40:45.312 Core 1 connected
2020.10.27 06:40:45.320 Core 1 authorized (agent build 2650)
2020.10.27 06:40:45.323 Tester EURUSD,M1 (Alpari-MT5-Demo): testing of Experts\ГРААЛЬ.ex5 from 2020.09.01 00:00 to 2020.09.03 00:00
2020.10.27 06:40:45.327 Core 1 common synchronization completed
2020.10.27 06:40:45.328 Tester quality of analyzed history is 100%
2020.10.27 06:40:45.348 Core 1 test Experts\ГРААЛЬ.ex5 on EURUSD,M1 thread finished
2020.10.27 06:40:45.348 Core 1 prepare for shutdown
2020.10.27 06:40:45.348 Core 1 login (build 2650)
2020.10.27 06:40:45.348 Core 1 account info found with currency USD
2020.10.27 06:40:45.348 Core 1 1482 bytes of tester parameters loaded
2020.10.27 06:40:45.348 Core 1 1724 bytes of input parameters loaded
2020.10.27 06:40:45.348 Core 1 calculate profit in pips, initial deposit 10000, leverage 1:100
2020.10.27 06:40:45.348 Core 1 successfully initialized
2020.10.27 06:40:45.348 Core 1 731 bytes of total initialization data received
2020.10.27 06:40:45.348 Core 1 Intel Core i5-6400 @ 2.70GHz, 7883 MB
2020.10.27 06:40:45.348 Core 1 EURUSD: symbol to be synchronized
2020.10.27 06:40:45.348 Core 1 EURUSD: symbol synchronized already, 18 bytes received
2020.10.27 06:40:45.348 Core 1 EURUSD,M1: history cached from 2019.01.02 06:00
2020.10.27 06:40:45.348 Core 1 EURUSD,M1 (Alpari-MT5-Demo): every tick generating
2020.10.27 06:40:45.348 Core 1 EURUSD,M1: testing of Experts\ГРААЛЬ.ex5 from 2020.09.01 00:00 to 2020.09.03 00:00 started with inputs:
2020.10.27 06:40:45.348 Core 1 StopLoss=30
2020.10.27 06:40:45.348 Core 1 TakeProfit=100
2020.10.27 06:40:45.348 Core 1 Lot=0.1
2020.10.27 06:40:45.348 Core 1 final balance 10000.00 pips
2020.10.27 06:40:45.348 Core 1 EURUSD,M1: 111967 ticks, 2880 bars generated. Test passed in 0:00:00.019.
2020.10.27 06:40:45.348 Core 1 270 Mb memory used including 35 Mb of history data, 64 Mb of tick data
2020.10.27 06:40:45.348 Core 1 log file "C:\Users\a1960\AppData\Roaming\MetaQuotes\Tester\36A64B8C79A6163D85E6173B54096685\Agent-127.0.0.1-3000\logs\20201027.log" written
2020.10.27 06:40:45.371 Core 1 connection closed
Я тестирую на периоде один день. То есть советник должен открыть 1440 ордеров. Может быть проблема в этом. Может есть какие то ограничения на количество одновременно открытых ордеров.
Ведь когда на депозите советника было 10 000 он открывал только 300 ордеров , а остальные пропускал по какой то причине связанной с деньгами(как я понял из записей в журнале). А потом я увеличил депозит Советника до 100 000 и пропускать он уже не имел права. И он вообще перестал открывать ордера.
Но потом я депозит Советника снова уменьшил до 10 000. Но Советник не смотря на это уже ничего не открывает и пишет всегда то что я указал вверху.
Создал другой советник. Загрузил в него тот же код. Депозит 10 000. Все то же самое - ордеров не открывает.
Подскажите пожалуйста как заставить Советника нормально работать. Пишет то же самое только в выделенной мной желтой строк вместо 270 mb стоит значение 271
У меня Windows 10 . 64 разрядная ОС 8ГБ оперативной памяти.
Спасибо.
Спасибо за подсказку.
Действительно не работает. Пишет.
2020.10.27 06:40:45.348 Core 1 EURUSD,M1: 111967 ticks, 2880 bars generated. Test passed in 0:00:00.019.
2020.10.27 06:40:45.348 Core 1 270 Mb memory used including 35 Mb of history data, 64 Mb of tick data
2020.10.27 06:40:45.348 Core 1 log file "C:\Users\a1960\AppData\Roaming\MetaQuotes\Tester\36A64B8C79A6163D85E6173B54096685\Agent-127.0.0.1-3000\logs\20201027.log" written
2020.10.27 06:40:45.371 Core 1 connection closed
Я тестирую на периоде один день. То есть советник должен открыть 1440 ордеров. Может быть проблема в этом. Может есть какие то ограничения на количество одновременно открытых ордеров.
Ведь когда на депозите советника было 10 000 он открывал только 300 ордеров , а остальные пропускал по какой то причине связанной с деньгами(как я понял из записей в журнале). А потом я увеличил депозит Советника до 100 000 и пропускать он уже не имел права. И он вообще перестал открывать ордера.
Подскажите пожалуйста как заставить Советника нормально работать.
Спасибо.
Если 1440 ордеров в день, то должна быть проверка на начало минуты, или проще на появление минутного бара. И в этот момент открывать. У Вас ее нет, поэтому советник открывает позицию на каждом тике, что само по себе жесткое условие, по условию на нашем символе по текущей котировке. Это условие может и не соблюдаться, и тики будут пропускаться. И в какой то момент возникает критическая ошибка.
Так же тип исполнения ордера (приказа совершить сделку на создание позиции) Все или ничего.
Подскажите пожалуйста!
Почему время сервера не обновляется по приходу новых тиков?
В момент запуска советника все срабатывает как надо, но дальше время то идёт, а в переменную новое значение текущей минуты не поступает.
Т.е. у меня советник работает в зависимости от числа полученного переменной int M = TimeMinute(TimeCurrent());
Собственно строка кода то из справочника и чёт не робит.
Например запустил в 12 минут - текущее время возвращаемое сервером соответствует времени в переменной, а дальше переменная так и остается на 12, хотя уже минут 15-20 на часах