Любые вопросы новичков по MQL4 и MQL5, помощь и обсуждение по алгоритмам и кодам - страница 821
Вы упускаете торговые возможности:
- Бесплатные приложения для трейдинга
- 8 000+ сигналов для копирования
- Экономические новости для анализа финансовых рынков
Регистрация
Вход
Вы принимаете политику сайта и условия использования
Если у вас нет учетной записи, зарегистрируйтесь
Прошу обратить внимание на мой вопрос. Пишу индикатор, который делает некие вычисления и заносит их в массив (не таймсерия) размерности равной количеству свечей на графике. Изначально я полагал, что если у меня в параметрах терминала задано 2000 свечей на графике, то при появлении новой, самая первая примет значение второй, вторая третьей и т.д., следовательно при получении prev_calculated равным нулю я пересчитывал весь массив, иначе только последний бар. Но тут я выяснил, что с каждой новой свечой значение rates_total увеличивается и становится больше ограничения 2000.
Следовательно пересчитывать массив не имеет смысла?
Но почему так происходит, ведь в терминале задано ровно 2000 свечей?
При закрытии терминала количество баров снова становится 2000, и снова, при появлении новых свечей начинает расти.
Добрый день . Подскажите, пожалуйста. Как будет код для условия: Если баланс счета увеличился или уменьшился, тогда выполнить функцию
//Объявить переменную вне функций:
double Balance=AccountBalance();
//В тиковую/расчётную функцию добавить:
if (Balance!=AccountBalance())
{
Balance=AccountBalance();
MyFunction(); // <-- Ваша функция
}
Деньги со счета у меня в real счете есть деньги но здесь написано можно снять только заработные ?
Реал-счет где у вас?
потому что так работает терминал
То есть это нормальное поведение и не является ошибкой? Потому как некоторые базовые custom индикаторы написаны без учёта этого фактора и делают полный пересчёт при каждом prev_calculated==0.
это решение только для тестера, что будет если перегрузить терминал? а если запустить второй советник на этом счете?
нужно работать с историей ордеров, нет открытых ордеров с нашим магиком - посмотрели профит последнего ордера в истории
Перегрузить? Или перезагрузить? Если второе, то поведение советника не изменится. Если запустить второй советник, то алгоритм будет выполняться аналогично, без ошибок.
С чем необходимо работать автору зависит от поставленной им же задачи. А как им был поставлен вопрос, так я на него и ответил, более никакой конкретики в вопросе не было.
Прошу обратить внимание на мой вопрос. Пишу индикатор, который делает некие вычисления и заносит их в массив (не таймсерия) размерности равной количеству свечей на графике. Изначально я полагал, что если у меня в параметрах терминала задано 2000 свечей на графике, то при появлении новой, самая первая примет значение второй, вторая третьей и т.д., следовательно при получении prev_calculated равным нулю я пересчитывал весь массив, иначе только последний бар. Но тут я выяснил, что с каждой новой свечой значение rates_total увеличивается и становится больше ограничения 2000.
Следовательно пересчитывать массив не имеет смысла?
Но почему так происходит, ведь в терминале задано ровно 2000 свечей?
При закрытии терминала количество баров снова становится 2000, и снова, при появлении новых свечей начинает расти.
//Объявить переменную вне функций:
double Balance=AccountBalance();
//В тиковую/расчётную функцию добавить:
if (Balance!=AccountBalance())
{
Balance=AccountBalance();
MyFunction(); // <-- Ваша функция
}
Спасибо огромное, получилось!
Metatreder 4 приложение
Форум по трейдингу, автоматическим торговым системам и тестированию торговых стратегий
Любые вопросы новичков по MQL4, помощь и обсуждение по алгоритмам и кодам
Artyom Trishkin, 2019.04.28 16:55
Реал-счет где у вас?А зачем пытаться понять как это устроено внутри? Ну, если есть желание свою функцию написать, то наверное будет удобней сортировать и брать значение одного из крайних индексов. Но работать вряд-ли будет быстрей встроенной функции. Плюс ко всему встроенная функция позволяет искать значение в обозначенных пределах индексов. Значит простая сортировка не прокатит. Значит надо будет копировать часть массива в промежуточный массив и его уже сортировать и в нём брать нужное значение, а копирование массива не очень "дешёвая" функция.
Понимать нужно чтобы мозг развивался. Я вчера долго сидел и делал наброски вроде да можно сделать без сортировки по принципу перебора значений, но всё равно нужны переменные которые будут хранить значения, и даже больше можно возвращать сразу значение а не индекс что упрощает работу. Свои функции понятное дело лучше можно сделать и в диапозоне и разные модификации для экономии расчётов. У встроенных функций не хватает многих деталей. Но встроенные функции очень быстрые с чем это связано не понятно может они написаны на С++, т.к. свои функции я пишу очень тонко, учитывая все детали: скорость, качество, экономию кода, внедряю модификации которые уменьшат количество проверок и проходов внутри функции, но почему-то встроенные всё равно обходят по скорости, а не по качеству, но обходят, я давно обращаюсь к сообществу форума с этим вопросом.