Вопросы от начинающих MQL5 MT5 MetaTrader 5 - страница 486
Вы упускаете торговые возможности:
- Бесплатные приложения для трейдинга
- 8 000+ сигналов для копирования
- Экономические новости для анализа финансовых рынков
Регистрация
Вход
Вы принимаете политику сайта и условия использования
Если у вас нет учетной записи, зарегистрируйтесь
-Aleks-:
Глобальная переменная актуальна при реальной работе по рынку - мне нужна тестовая информация - поэтому и не заморачивался.
Я не говорил о GlobalVariable, я говорил об уровне глобальных переменных.
-Aleks-:
Касаемо что такое эквити и баланс - я конечно знаю, а вот как считается просадка - так и не удалось вычислить, из моих примеров кода видно, что я пробовал за максимум брать как баланс так и средства, аналогично и за минимум брал баланс и средства, но аналогичных результатов с тестером так и не удаётся получить - они примерно сходятся, но не точно.
Я особо не вникал в формулу вычисления прсадки в тестере, но можно попробовать посчитать разницу между балансом перед открытием ордера и минимальным размером средств до закрытия ордера. Или считать и максимум и минимум средств и максимальная разница и будет максимальной просадкой.
-Aleks-:
Почему Вы считаете, что неравенство if (BalansNew<BalansMax) ProfitNew=BalansNew-BalansMax; никогда не выполняется? Оно лишь не выполняется на том баре, когда достигнут новый максимум баланса (или эквити - всё равно не верно), но в этот момент я фиксирую просадку по прибыли ProfitMin=ProfitNew.Запись файла за день как раз актуальней - так как максимальная просадка достигается, как правило, не в момент закрытия ордера,а целью является вычисление среднего размера средств, необходимых для работы советника.
Согласен, тут я был не достаточно внимателен.
Частота записи в файл дело сугубо личное, но просадка считается не за день, а за время жизни ордера(ов), а дальше средства становятся балансом. Это как раз и есть те места на графике тестера где линии средств и баланса в одной точке.
Я не говорил о GlobalVariable, я говорил об уровне глобальных переменных.
Видимо я не правильно Вас понял - у меня переменные инициализируются до блока исполнения кода int start(), поэтому проблем вроде как быть не должно с затиранием или типа того... или есть другая причина?
Я особо не вникал в формулу вычисления прсадки в тестере, но можно попробовать посчитать разницу между балансом перед открытием ордера и минимальным размером средств до закрытия ордера. Или считать и максимум и минимум средств и максимальная разница и будет максимальной просадкой.
А если ордеров много, то считать для каждого ордера и выбирать наибольший вариант? В моём примере видно, что просадка по расчету получилась почти в два раза меньше по сравнению с результатом тестера, а по Вашему алгоритму она будет ещё меньше - не очень похоже на правду.
Частота записи в файл дело сугубо личное, но просадка считается не за день, а за время жизни ордера(ов), а дальше средства становятся балансом. Это как раз и есть те места на графике тестера где линии средств и баланса в одной точке.
Это не важно, когда тестер учитывает просадку - факт в том, что она будет максимальной в определенный день и результат должен совпадать, а он не совпадает - и это удивляет.
Мне нужна просадка по дням для проверки торгового портфеля - для понимания, сколько средств одномоментно может понадобится и как часто.
Математически (получилась просадка 23497,1 против тестера 23669,03), просадка близка к размеру отрезка, который символизирует изменение депозита - т.е. разницу между максимальным значением эквити и минимальным значением Эквити.
Видимо я не правильно Вас понял - у меня переменные инициализируются до блока исполнения кода int start(), поэтому проблем вроде как быть не должно с затиранием или типа того... или есть другая причина?
А если ордеров много, то считать для каждого ордера и выбирать наибольший вариант? В моём примере видно, что просадка по расчету получилась почти в два раза меньше по сравнению с результатом тестера, а по Вашему алгоритму она будет ещё меньше - не очень похоже на правду.
Это не важно, когда тестер учитывает просадку - факт в том, что она будет максимальной в определенный день и результат должен совпадать, а он не совпадает - и это удивляет.
Мне нужна просадка по дням для проверки торгового портфеля - для понимания, сколько средств одномоментно может понадобится и как часто.
Не совсем так. Не для каждого ордера, а от открытия первого и до закрытия последнего. Тоесть от OrdersTotal() == 0 до OrdersTotal() == 0
Вот именно от момента открытия первого ордера и до закрытия последнего и надо определять просадку, т.к. в реале запуск будет не в 0:00 а в любое время, соответственно и просадка может случиться на смене суток.
Всё остальное... не люблю я разбираться в чужих исследованиях так-же как в длинных кодах, могу обсуждать способы решения каких-либо задач, но не примерами кода. Вот только странно что никто не поправил мои предположения как считается просадка...
В общем мне не понравился твой метод подсчёта просадки. Что-то мне кажется что печатает так часто, что разобраться потом в этом надо иметь особое терпение.
Karputov Vladimir:
Не кусок, а программу, которую можно скомпилировать и прогнать в режиме отладки.
Прошу прощения за беспокойство, пока чистил программу, чтобы найти проблему остановки тестера, в тексте программы нашел нарушение алгоритма ее работы. Кмпиляция проходила нормально, а тестер останавливался не показывая место сбояНе совсем так. Не для каждого ордера, а от открытия первого и до закрытия последнего. Тоесть от OrdersTotal() == 0 до OrdersTotal() == 0
Вот именно от момента открытия первого ордера и до закрытия последнего и надо определять просадку, т.к. в реале запуск будет не в 0:00 а в любое время, соответственно и просадка может случиться на смене суток.
Так в рассматриваемом примере как раз и соблюдены эти условия - открыты ордера и отслеживаются до закрытия на каждом тике.
Если действительно расчет идет от максимума эквити до минимума эквити, то эти разборки помогут мне переосмыслить показания тестера...
В общем мне не понравился твой метод подсчёта просадки. Что-то мне кажется что печатает так часто, что разобраться потом в этом надо иметь особое терпение.
Мне то как раз интересно сколько нужно реально средств для работы советника - т.е. реальная просадка(текущий убыток) с момента открытия ордера и до его закрытия без учета упущенной прибыли.
Печатает раз в сутки - это вовсе не часто, ну и нужно для определенных целей.
На первый взгляд, задача простая, как три копейки. НО!....
Есть линия любого осциллятора в индикаторном окне, которая болтается относительно "0" с различной амплитудой.
Собственно, задача:
- при пересечении "0" снизу вверх, нарисовать стрелку у нижней границы индикаторного окна,
- при пересечении "0" сверху вниз, нарисовать стрелку у верхней границы индикаторного окна,
- при самомасштабировании графика осциллятора в индикаторном окне, стрелки должны автоматически оставаться у своих границ индикаторного окна.
Т.е. прокручивая чарт по истории взад-вперёд или меняя его горизонтальный масштаб, стрелки всё время должны автоматически оставаться у своих границ индикаторного окна.
Большая просьба, советов не давать, "помогите материально")). Нужен пример работающего кода, реализующий такую функцию, или ссылку на таковой.
Заранее, спасибо!
Здраствуйте!
На первый взгляд, задача простая, как три копейки. НО!....
Есть линия любого осциллятора в индикаторном окне, которая болтается относительно "0" с различной амплитудой.
Собственно, задача:
- при пересечении "0" снизу вверх, нарисовать стрелку у нижней границы индикаторного окна,
- при пересечении "0" сверху вниз, нарисовать стрелку у верхней границы индикаторного окна,
- при самомасштабировании графика осциллятора в индикаторном окне, стрелки должны автоматически оставаться у своих границ индикаторного окна.
Т.е. прокручивая чарт по истории взад-вперёд или меняя его горизонтальный масштаб, стрелки всё время должны автоматически оставаться у своих границ индикаторного окна.
Большая просьба, советов не давать, "помогите материально")). Нужен пример работающего кода, реализующий такую функцию, или ссылку на таковой.
Заранее, спасибо!
Альпари даёт котировки для МТ4 за лет 10 - попробуйте там взять.
Технически же все котировки можно выгрузить потом из терминала МТ4 через F2 -> Экспорт