![MQL5 - Язык торговых стратегий для клиентского терминала MetaTrader 5](https://c.mql5.com/i/registerlandings/logo-2.png)
Вы упускаете торговые возможности:
- Бесплатные приложения для трейдинга
- 8 000+ сигналов для копирования
- Экономические новости для анализа финансовых рынков
Регистрация
Вход
Вы принимаете политику сайта и условия использования
Если у вас нет учетной записи, зарегистрируйтесь
Да вроде не похоже.
Получается что было всего 2 (из 45) убыточные сделки, причем обе были на покупку.
Может куда не туда смотрю?
Отмечено красным: Шортовых позиций 5 из 45. Допустим 40 это 95%. Вопрос - Почему 5 = 100%, логично предположить - 5%.
Хотя мне кажется что в этом случае должно быть 5 (11.11%) и 40 (88.89%).
Попробуйте почистить кэш. Пробовались разные варианты, разные браузеры - добавление было успешным.
Вы ведь вставляете картинку непосредственно в комментарий а не как атач?
Отмечено красным: Шортов позиций 5 из 45. Допустим 40 это 95%. Вопрос - Почему 5 = 100%, логично предположить что 5%.
Хотя мне кажется что в том случае должно быть 5 (11.11%) и 40 (88.89%).
Всего 45 сделок:
Итого получаем
Сделок на продажу - 5, из них выигрышных (не убыточных) 100% (т.е. все были с прибылью)
Сделок на покупку - 40, из них выигрышных 38, то есть 38*100%/40=95%
Далее
Прибыльных сделок - 43 из 45 то есть 43*100%/45 = 95.56%
Убыточных сделок - 2 из 45 то есть 2*100%/45 = 4.44%
Всего 45 сделок:
Итого получаем
Сделок на продажу - 5, из них выигрышных (не убыточных) 100% (т.е. все были с прибылью)
Сделок на покупку - 40, из них выигрышных 38, то есть 38*100%/40=95%
Далее
Прибыльных сделок - 43 из 45 то есть 43*100%/45 = 95.56%
Убыточных сделок - 2 из 45 то есть 2*100%/45 = 4.44%
Заметил вот такой эффект. При добавлении индикатора на график(в отдельном окне) главный график свечей перестает обновляться(цена замирает), хотя в окне с котировками все ок - цена меняется с красной на зеленую. И, хотя индикатор добавлен только на окно одного инструмента, в другом окне цена тоже замирает. Инициализация и расчет индикатора находятся внутри тела: if(prev_calculated==0). В расчете учавствуют цены закрытия неачиная с предыдущего дня(текущий close не учавствует). После того, как расчет индикатора заканчивается отображение цены опять начинает двигаться и меняться синхронно с окном.
Видно на картинке:
Заметил вот такой эффект. При добавлении индикатора на график(в отдельном окне) главный график свечей перестает обновляться(цена замирает), хотя в окне с котировками все ок - цена меняется с красной на зеленую. И, хотя индикатор добавлен только на окно одного инструмента, в другом окне цена тоже замирает. Инициализация и расчет индикатора находятся внутри тела: if(prev_calculated==0). В расчете учавствуют цены закрытия неачиная с предыдущего дня(текущий close не учавствует). После того, как расчет индикатора заканчивается отображение цены опять начинает двигаться и меняться синхронно с окном.
Видно на картинке:
Первый расчет получается очень ресурсоемким. Проверьте, возможно код индикатора написан не самым оптимальным образом.
Первый расчет получается очень ресурсоемким. Проверьте, возможно код индикатора написан не самым оптимальным образом.
Я подразумевал, что возможно как-то разграничить обновление котировок на графике свечей в отдельный поток программы и загрузку расчетами индикаторов в другой.
Обновление котировок на графике есть лишь отображение состояния данных базы котировок терминала, на которых также рассчитываются индикаторы. Для экономии ресурсов в качестве входных данных индикатору передаются именно данные базы терминала, т.е. они не могут быть изменены до окончания расчета индикатора.
Уважаемый alexvd, к сожалению, сейчас в идикаторе уже более 3000 строк кода состоящего примерно из более чем 20 классов, и оптимизировать код довольно затруднительно(несколько сотен миллиардов вычислительных операций в циклах), а вырасти это количество может до 10000 ориентировочно. Я подразумевал, что возможно как-то разграничить обновление котировок на графике свечей в отдельный поток программы и загрузку расчетами индикаторов в другой. По правде говоря, когда только приступал к работе, не предполагал, что вопрос быстродействия встанет так остро на настольном компьютере, а ведь хочется и маленький ноутбук использовать.
Попробуйте все же оптимизировать работу индикатора, количество объектов и строк тут не важно. Скорей всего есть возможность заставить работать имеющийся индюк (в 3000 строк) с необходимой скоростью.
Интересный вариант получится если поместить все ресурсоемкиерасчеты в таймер (если это окажется возможным), тогда эти расчеты будут выполняться не на каждом тике.
А блок калькулятора оптимизировать по возможности (до разумных приделов).
Попробуйте все же оптимизировать работу индикатора, количество объектов и строк тут не важно. Скорей всего есть возможность заставить работать имеющийся индюк (в 3000 строк) с необходимой скоростью.
Интересный вариант получится если поместить все ресурсоемкиерасчеты в таймер (если это окажется возможным), тогда эти расчеты будут выполняться не на каждом тике.
А блок калькулятора оптимизировать по возможности (до разумных приделов).
В принципе, оптимизировать работу немного можно, т.к. некоторые одинаковые данные считаются в объектах разных классов - т.е. не один раз. Но, тут возникает другая проблема, а именно - уход от концепции множества черных ящиков, каждый из которых можно отладить и быть в нем уверенным(т.е. каждый объект-это полностью автономный блок, а если расчет некоторых промежуточных данных, который одинаков у разных объектов, вынести за пределы объектов, то будет потеряна автономность, позволяющая производить отладку каждого класса отдельно. При таком уходе потеряется структурность программы, т.е. я уже и сам не разберусь в том, что написал, и малейшую ошибку будет уже не отловить. Скорость отладки возрастет тоже очень сильно, т.к. надо будет весь алгоритм прогонять, а не кусочек. Вот таким образом у меня количество объектов и влияет на скорость.
Поэтому, мне кажется, что подобную оптимизацию можно будет попробовать сделать уже в финале, когда индикатор будет полностью создан, отлажен и проверен, а до этого момента, к сожалению еще далеко(уже около 4х месяцев веду работу на начальном этапе, т.к. в книгах по Эконометрике, Математике все разбросано отрывками в разных книгах(нет практически единых цельных в деталях изложений материала), у авторов ошибки и разночтения в терминах и алгоритмах, которые обнаруживаются начинающим только при обращении к энциклопедическим словарям, теоретические сведения вступают в конфликт с возможностью их практической реализации, т.е. реализацией в виде численных методов, а численные методы сами в свою очередь предъявляют требования к функциональности програмной среды), процесс долгий нудный и вязкий.
По логике расчета, он должен происходить после формирования каждой свечи, поэтому изначально предполагалось поместить его в тело функции "is new bar", однако, тот факт, что его время может превышать данный интервал, заставил меня поместить его внутрь тела функции if(prev_calculated==0), чтобы сейчас, на этапе отладки, он проходил только один раз. Над вашим предложением по таймеру подумаю - спасибо.