Любые вопросы новичков по MQL4 и MQL5, помощь и обсуждение по алгоритмам и кодам - страница 1257
Вы упускаете торговые возможности:
- Бесплатные приложения для трейдинга
- 8 000+ сигналов для копирования
- Экономические новости для анализа финансовых рынков
Регистрация
Вход
Вы принимаете политику сайта и условия использования
Если у вас нет учетной записи, зарегистрируйтесь
Тебе не в OnInit надо писать данный код, а в OnTick().
не можно
я не смогу обьяснить как работают шаблоны.... ну примерно как - пока нет вызова такой функции, компилятор ничего не знает о существовании этого (часто даже ошибки компиляции отсутствуют если нет вызова)
затем Вы осуществляете вызов такой шаблонной функции и компилятор подставляет нужные типы и лишь затем проверяет, что все будет работать корректно
а затем Вы делает еще один вызов шаблона и с другими типами параметров - и компилятор создает новую функцию, т.е. еще одну, т.е по сути как если бы Вы писали 2 раза 2 функции делающее одно и тоже, но с разными типами параметров
фух, кактотак )))
UPD:
можно, но если типы в шаблоне совпадут, вот пример, это работает корректно:
Спасибо, даже понятней чем в доках) Получается в шаблон предопределение переменных не дает возможности их не указывать. Мне для печати в файл нужно. Журнал не дает возможности разделять записи. Жаль нет 5ти журналов.) По итогу шаблоны дают возможность не приводить тип переменной к нужному, это можно сделать внутри шаблонной функции, но количество переменных надо указывать полностью. А простая функция с предопределенными переменными нужного типа дает возможность указывать меньшее количество переменных при вызове, но при этом типы переменных надо привести к нужному. Это конечно можно сделать и при вызове, но запись получается слишком длинной.
Всем добрый день!
Сделал функцию модификации стоплосса. Но при работе выдает EURUSD,H1: OrderModify error 130.
Причем цена далеко от того места куда должен встать стоплосс.
вот сама функция:
Попробуйте так:
Спасибо , сработало!
но еще два нюанса:
1 какое условие добавить чтобы не закрывались ордера которые открывались в пятницу ТЕКУЩЕЙ недели ,а в пятницы предыдущих недель соответственно закрывались ?
2 как откорректировать код - OrderClose(OrderTicket(),OrderLots(),NormalizeDouble(MarketInfo(nameSym,MODE_ASK),MarketInfo(nameSym,MODE_DIGITS)),3,CLR_NONE);
чтобы убрать предупреждение "possible loss of data due to type conversion" ? Касается видать в части - "...MarketInfo(nameSym,MODE_DIGITS)).."
Подскажите пожалуйста.
В тестере, возвращаемое значение функции суммирования лотов GetAmountLotFromOpenPos выдаёт значение -1717986918 как исправить?
Нашел причину. Нужно было ставить в OrderModify не OrderProft(), а OrderTakeProfit(). Малость просмотрел.
Всё равно спасибо за помощь.
Спасибо , сработало!
но еще два нюанса:
1 какое условие добавить чтобы не закрывались ордера которые открывались в пятницу ТЕКУЩЕЙ недели ,а в пятницы предыдущих недель соответственно закрывались ?
2 как откорректировать код - OrderClose(OrderTicket(),OrderLots(),NormalizeDouble(MarketInfo(nameSym,MODE_ASK),MarketInfo(nameSym,MODE_DIGITS)),3,CLR_NONE);
чтобы убрать предупреждение "possible loss of data due to type conversion" ? Касается видать в части - "...MarketInfo(nameSym,MODE_DIGITS)).."
По первому вопросу нужно сделать такую функцию:
{Print( "Error when order select ", GetLastError());}
По второму вопросу, должна быть такая запись:
OrderClose(OrderTicket(), OrderLots(), NormalizeDouble(MarketInfo(nameSym,MODE_ASK)), 3, clrNONE);
Удачи.