Любой вопрос новичка, чтоб не захламлять форум. Профи, не проходите мимо. Без вас никуда - 6. - страница 379
![MQL5 - Язык торговых стратегий для клиентского терминала MetaTrader 5](https://c.mql5.com/i/registerlandings/logo-2.png)
Вы упускаете торговые возможности:
- Бесплатные приложения для трейдинга
- 8 000+ сигналов для копирования
- Экономические новости для анализа финансовых рынков
Регистрация
Вход
Вы принимаете политику сайта и условия использования
Если у вас нет учетной записи, зарегистрируйтесь
...
4) зачем отложки перебирать???
...
О! А покажитека, как их можно не перебирать?
Вопрос конечно интересный, что лучше, прибавлять ли лишний раз OrderProfit() + OrderCommission() + OrderSwap(), которые в сумме равны 0 и ничего не меняют, или же для каждого ордера делать еще if?
Какая разница как перебирать, главное что он работает.
В некторых случаях есть некоторая разница. Если for (int i = 0; i < OrdersTotal(); i++), то на каждом цикле вызываеся функция OrdersTotal(), а если for (int i = OrdersTotal()-1; i>=0; i--), то функция OrdersTotal() вызывается только один раз. В mql не не экспериментировал на сколько меняется скорость выполнения. Было дело на php, функция count(), прямой цикл работал 17 секунд, обратный 0.01 секунды.
Померил скорость прямого и обратного цикла. 100 ордеров, обратный цикл в 5 раз быстрее. Но так много ордеров не бывает, максимум штук 10. Если 10 ордеров, скорость различается в 3 раза. Ощутимо, чтобы выбрать обратный цикл.
Не подскажете как нормализовать цену?(Мой пост выше) .
Не подскажете как нормализовать цену?(Мой пост выше) .
Есть функция NormalizeDouble().
При умножении на первое место лучше ставить double, затем int, а то в некторых случаях можно потерять дробную часть.
Можно ли таким образом задавать открытие ордера?
Нет.
Вот так надо:
if(Line_7 > Lines_1 && Lines_1 > Line_6)
Еще проверил скорость подсчета прибыли суммируя прибыли всех ордеров и выбирая только рыночные:
и
Первый вариант немного быстрее, но незначительно. Соотношение скорости примерно как 1/1.1Есть функция NormalizeDouble().
При умножении на первое место лучше ставить double, затем int, а то в некторых случаях можно потерять дробную часть.
Теперь мне выдает ошибку 3: "В торговую функцию переданы неправильные параметры, например, неправильный символ, неопознанная торговая операция, отрицательное допустимое отклонение цены, несуществующий номер тикета и т.п. Необходимо изменить логику программы."
Теперь мне выдает ошибку 3: "В торговую функцию переданы неправильные параметры, например, неправильный символ, неопознанная торговая операция, отрицательное допустимое отклонение цены, несуществующий номер тикета и т.п. Необходимо изменить логику программы."
Переведите крусор на первую открывающую скобку после OrderSend, удалите эту скобку, введите заново, при этом откроется подсказка с типом параметров, проверьте, все ли параметры соответствют по типу.