Проблема перевода с МТ4 на МТ5. Или, точнее, невозможность без'ошибочного исполнения некоторых алгоритмов в МТ5. - страница 10
![MQL5 - Язык торговых стратегий для клиентского терминала MetaTrader 5](https://c.mql5.com/i/registerlandings/logo-2.png)
Вы упускаете торговые возможности:
- Бесплатные приложения для трейдинга
- 8 000+ сигналов для копирования
- Экономические новости для анализа финансовых рынков
Регистрация
Вход
Вы принимаете политику сайта и условия использования
Если у вас нет учетной записи, зарегистрируйтесь
Странно, но не додумался раньше сделать:
Избавит от некоторой массы проверок на ошибки, вроде выделения памяти.
не вариант, советник удалится с графика, а нужно лишь "выйти в ОС" до следующего тика из любого места программы
скорее всего можно изящно в макрос все завернуть, чтобы где нужно безопасно вызывать функции связанные с недоступностью данных на текущем тике, вот "болванка"
для читаемости кода хотелось бы просто так писать:
этот Try реально в макрос обернуть и "выйти в ОС" в случает неудачи?
этот Try реально в макрос обернуть и "выйти в ОС" в случает неудачи?
Не?
Я всякие минимакросы частенько пишу пряму в начале функции, в конце делаю undefine. Естественно, если действие повторяется часто, иначе бессмысленно.
А про аборт вы зря так, при некторых ошибках - идеально.
Не?
да!
но в идеале хотелось бы вместо:
так:
не вопрос если нужно сигнатуру функции Open() сделать другой... но в таком виде я получу то что очень уж хотелось бы! ;)
----------------------
PS: как вариант даже глобально описанные переменные Tryerror или bool Tryresult устроили бы - цель одной строкой "безопасный вызов", если этот вызов завершился с ошибкой выйти из тела OnTick()
так:
Сомневаюсь, что так можно, даже в плюсах (можно кинуть исключение, но return вряд ли). Но всякое бывает, может кто удивит ...
Ну так, навскидку:
наверное это максимум в данной ситуации.
Совсем туплю, можно ведь
Не компилировал, но должно работать.
Совсем туплю, можно ведь
Не компилировал, но должно работать.
Шайтан - машина!!! Заработало!!!
проверил и смоделировал ошибку ( shift>5 )
2019.07.31 16:58:48.154 tst1 (EURUSD,H1) 0 : 1.115010
2019.07.31 16:58:48.154 tst1 (EURUSD,H1) 1 : 1.114670
2019.07.31 16:58:48.154 tst1 (EURUSD,H1) 2 : 1.114590
2019.07.31 16:58:48.154 tst1 (EURUSD,H1) 3 : 1.114400
2019.07.31 16:58:48.154 tst1 (EURUSD,H1) 4 : 1.115240
2019.07.31 16:58:48.154 tst1 (EURUSD,H1) 5 : 1.115450
2019.07.31 16:58:48.154 tst1 (EURUSD,H1) Error: something goes wrong
Круто! а код макроса то реально простым оказался
СПАСИБО! - однозначно Вы волшебник! ;)
Пожалуйста, пользуйтесь на здоровье.
Макрос выше обладает одним минусом - тип хелпера жёстко зашит, нельзя передать в Try функцию возвращающую string, а потом double не создвая двух макросов. У меня возник спортивный интерес - а как это обойти (написать один макрос для любых типов. В мкл без вариантов, в c++, хотя там это и не очень надо, но всё же)? Никто не желает предложить свой вариант (ну ведь надо поддерживать себя в форме)?
Пожалуйста, пользуйтесь на здоровье.
Макрос выше обладает одним минусом - тип хелпера жёстко зашит, нельзя передать в Try функцию возвращающую string
почему нельзя? знак + никто не отменял!
сейчас так Ваш макрос причесал, как планирую юзать:
теперь параметр макроса EXCEPT - это действие по исключению, прекрасно работает как return так и просто ; - если решил распринтовать в лог, но не выходить из тела OnTick()
2019.07.31 19:01:28.353 tst1 (EURUSD,H1) 0 : 1.113350
2019.07.31 19:01:28.353 tst1 (EURUSD,H1) 1 : 1.114180
2019.07.31 19:01:28.353 tst1 (EURUSD,H1) 2 : 1.115110
2019.07.31 19:01:28.353 tst1 (EURUSD,H1) 3 : 1.115010
2019.07.31 19:01:28.353 tst1 (EURUSD,H1) 4 : 1.114670
2019.07.31 19:01:28.353 tst1 (EURUSD,H1) 5 : 1.114590
2019.07.31 19:01:28.353 tst1 (EURUSD,H1) double Open(int) : error № 999 something goes wrong Txt
Ну я о том, чтобы вот так заюзать:
Что-то народ здесь не азартный. Ну да ладно