Любые вопросы новичков по MQL4 и MQL5, помощь и обсуждение по алгоритмам и кодам - страница 848
![MQL5 - Язык торговых стратегий для клиентского терминала MetaTrader 5](https://c.mql5.com/i/registerlandings/logo-2.png)
Вы упускаете торговые возможности:
- Бесплатные приложения для трейдинга
- 8 000+ сигналов для копирования
- Экономические новости для анализа финансовых рынков
Регистрация
Вход
Вы принимаете политику сайта и условия использования
Если у вас нет учетной записи, зарегистрируйтесь
Какие расчёты?
Все понял, вопрос снят, я услышал от Вас и осознал, что объявление переменной в зоне OnTick() это плохо, а расчёты можно проводить и внутри цикла.
Сделал, всё работает спасибо, осталось получить цены. Примного благодарен.
Все понял, вопрос снят, я услышал от Вас и осознал, что объявление переменной в зоне OnTick() это плохо, а расчёты можно проводить и внутри цикла.
Сделал, всё работает спасибо, осталось получить цены. Примного благодарен.
Это у вас не расчёты внутри цикла, а получение необходимых данных, для чего и создан этот цикл.
А вот расчётов внутри цикла нужно избегать.
Вообще, вам нужно сразу пересмотреть подход. Вы же в цикле получаете данные. Прерываете цикл после первых встречных данных. Всё это полностью вкладывается в понятие функции - вернуть запрашиваемый результат.
Оформите весь цикл в функцию, и возвращайте из неё номер бара если найден, либо WRONG_VALUE - если не найден.
тогда: n=Func();
и далее n используете по назначению если он не равен WRONG_VALUE. Функцию назовите "говорящим" именем. И код в OnTick() будет короче, и понятнее логика - ничем лишним не загружена.
Оформите весь цикл в функцию, и возвращайте из неё номер бара если найден, либо WRONG_VALUE - если не найден.
тогда: n=Func();
и далее n используете по назначению если он не равен WRONG_VALUE. Функцию назовите "говорящим" именем. И код в OnTick() будет короче, и понятнее логика - ничем лишним не загружена.
Век живи, век учись. Очень интересно, буду биться вечером, обязательно добьюсь. А пока в качестве отчёта и с огромной благодарностью Вам, получил таки и цены..... День удался :-))
Ребята кто может помочь с этим вопросом https://www.mql5.com/ru/forum/160683/page845#comment_11741857 - уже далеко комментарий уехал? Ещё есть такой вопрос как создать цикл, который может работать в любою сторону, если нужно запустится инкремент если нужно запустится декремент? Вот примерная схема как это будет.
Если(что-то произошло){присваиваются значения переменным} далее вызывается цикл и в нём будет тело расчёты которого будут зависеть от значений цикла
for( в зависимости от переменных выше инкремент или декремент)
{ тело }
Дублировать условие нет возможности оно должно быть указано в цикле один раз. Возможно ли так сделать.
И снова добрый вечер. В виде функции еще не оформил, но появился новый вопрос. На приложенной картинке видно, что появился новый сигнал (Стрелка), а в коментах видно, что советник ее не воспринимает, крайней стрелкой Вверх он по прежнему считает ту, что была 11 свечей назад.
https://www.mql5.com/ru/charts/10181812/eurusd-h1-alpari-international
11 свечей назад.
Получается что индикатор уже подал новый сигнал (параллельно советнику он запущен на графике), в советнике нет никаких событий кроме ОнТик, а советник сигнала не видит.
И снова добрый вечер. В виде функции еще не оформил, но появился новый вопрос. На приложенной картинке видно, что появился новый сигнал (Стрелка), а в коментах видно, что советник ее не воспринимает, крайней стрелкой Вверх он по прежнему считает ту, что была 11 свечей назад.
https://www.mql5.com/ru/charts/10181812/eurusd-h1-alpari-international
При нахождении не пустого значения буфера, распечатайте в журнале время, соответствующее бару n. Будет видно какой бар он находит. Вполне может статься, что вы задом-наперёд читаете буфер.
Знатоки подскажите плиз, почему советник не видит крайнюю стрелку, в буфере индикатора она уже есть, судя по окну данных, советник опрашивает ОнТик, что ему еще надо ??? Полный код выше.
При нахождении не пустого значения буфера, распечатайте в журнале время, соответствующее бару n. Будет видно какой бар он находит. Вполне может статься, что вы задом-наперёд читаете буфер.
ОК, сделал, время показывает правильное, время открытия свечи, на которой установлена стрелка. Код прилагаю, картинку прилагаю.
если на картинке журнал не видно, вот несколько крайних записей
2019.05.20 21:42:52.601 Test_iCustom (EURUSD,H1) Last_Arrow_Sell_volume = 1.12112, Last_Arrow_Sell_index = 56.0, Last_Arrow_Buy_time = 2019.05.20 10:00:00
2019.05.20 21:42:53.824 Test_iCustom (EURUSD,H1) Last_Arrow_Buy_volume = 1.11544, Last_Arrow_Buy_index = 11.0, Last_Arrow_Buy_time = 2019.05.20 10:00:00
2019.05.20 21:42:53.824 Test_iCustom (EURUSD,H1) Last_Arrow_Sell_volume = 1.12112, Last_Arrow_Sell_index = 56.0, Last_Arrow_Buy_time = 2019.05.20 10:00:00
2019.05.20 21:43:00.819 Test_iCustom (EURUSD,H1) Last_Arrow_Buy_volume = 1.11544, Last_Arrow_Buy_index = 11.0, Last_Arrow_Buy_time = 2019.05.20 10:00:00
2019.05.20 21:43:00.819 Test_iCustom (EURUSD,H1) Last_Arrow_Sell_volume = 1.12112, Last_Arrow_Sell_index = 56.0, Last_Arrow_Buy_time = 2019.05.20 10:00:00
2019.05.20 21:43:03.021 Test_iCustom (EURUSD,H1) Last_Arrow_Buy_volume = 1.11544, Last_Arrow_Buy_index = 11.0, Last_Arrow_Buy_time = 2019.05.20 10:00:00
2019.05.20 21:43:03.021 Test_iCustom (EURUSD,H1) Last_Arrow_Sell_volume = 1.12112, Last_Arrow_Sell_index = 56.0, Last_Arrow_Buy_time = 2019.05.20 10:00:00
2019.05.20 21:43:03.621 Test_iCustom (EURUSD,H1) Last_Arrow_Buy_volume = 1.11544, Last_Arrow_Buy_index = 11.0, Last_Arrow_Buy_time = 2019.05.20 10:00:00
2019.05.20 21:43:03.622 Test_iCustom (EURUSD,H1) Last_Arrow_Sell_volume = 1.12112, Last_Arrow_Sell_index = 56.0, Last_Arrow_Buy_time = 2019.05.20 10:00:00
2019.05.20 21:43:10.696 Test_iCustom (EURUSD,H1) Last_Arrow_Buy_volume = 1.11544, Last_Arrow_Buy_index = 11.0, Last_Arrow_Buy_time = 2019.05.20 10:00:00
2019.05.20 21:43:10.696 Test_iCustom (EURUSD,H1) Last_Arrow_Sell_volume = 1.12112, Last_Arrow_Sell_index = 56.0, Last_Arrow_Buy_time = 2019.05.20 10:00:00