А чему равно значение переменной Magic? Совпадает с теми ордерами, которые закрыты?
Ну и заодно ускорение кода:
double Earn(datetime startDate = 0) { double result = 0; for (int i = OrdersHistoryTotal() - 1; i >= 0; i--) { if (!OrderSelect(i,SELECT_BY_POS, MODE_HISTORY)) continue; if(OrderMagicNumber()==Magic) continue; if (startDate > OrderCloseTime()) break; result += OrderProfit() + OrderSwap() + OrderCommission(); } return(result);
вызов функции также можно сократить:
#define SECONDS_PER_DAY int(60 * 60 * 24) Comment("\n Profit: ", Earn(TimeCurrent() / SECONDS_PER_DAY * SECONDS_PER_DAY));
А чему равно значение переменной Magic? Совпадает с теми ордерами, которые закрыты?
Ну и заодно ускорение кода:
вызов функции также можно сократить:
Earn(TimeCurrent() / SECONDS_PER_DAY * SECONDS_PER_DAY)
Другими словами текущую дату в секундах разделить на квадрат времени в секундах за день ? И что получиться?
if(OrderMagicNumber()==Magic) continue;
Знак равенства в данном примере означает что вы пропустите все ордера выставленные роботом.
if (startDate > OrderCloseTime()) break;
А этот пример прервёт функцию. Не пропустит вариант, а вообще прервёт любые проверки всех последующих ордеров.
Спасибо конечно за помощь, но это пока не работающий код.
Если у кого может помочь, то заранее "Спасибо".
Другими словами текущую дату в секундах разделить на квадрат времени в секундах за день ? И что получиться?
Никаого квадрата там нет. Вспомните последовательность выполнения операций. Деление и умножение выполняется последовательно. В этом примере получается: Текущее время разделить на количество секунд в сутках, получится дробное число и по законам mql дробная часть отбрасывается, затем умножается на это-же количество секунд и получается время на начало дня, то-есть ДАТА:00:00
Aliaksei Karalkou:
Знак равенства в данном примере означает что вы пропустите все ордера выставленные роботом.
Это просто Игорь не обратил внимание на это и не исправил на !=
Aliaksei Karalkou:
А этот пример прервёт функцию. Не пропустит вариант, а вообще прервёт любые проверки всех последующих ордеров.
Прервёт если запросить ордера с завтрашней датой.
А вообще, такой код очень просто проверить в режиме отладки. На первый взгляд код должен работать.
А чему равно значение переменной Magic? Совпадает с теми ордерами, которые закрыты?
Ну и заодно ускорение кода:
вызов функции также можно сократить:
Никаого квадрата там нет. Вспомните последовательность выполнения операций. Деление и умножение выполняется последовательно. В этом примере получается: Текущее время разделить на количество секунд в сутках, получится дробное число и по законам mql дробная часть отбрасывается, затем умножается на это-же количество секунд и получается время на начало дня, то-есть ДАТА:00:00
Это просто Игорь не обратил внимание на это и не исправил на !=
Прервёт если запросить ордера с завтрашней датой.
А вообще, такой код очень просто проверить в режиме отладки. На первый взгляд код должен работать.
Всем Спасибо! Код заработал!!!
- Бесплатные приложения для трейдинга
- 8 000+ сигналов для копирования
- Экономические новости для анализа финансовых рынков
Вы принимаете политику сайта и условия использования
Нашёл код возврата прибыли за текущий день взамен нерабочему, который подсчитывает исключительно по открытым ордерам.
Сам код:
Должен быть выбран предварительно с текущей датой:
Но код почему то прибыль не показывает по закрытым ордерам