Ошибки, баги, вопросы - страница 257

 
alexvd:

Да вроде не похоже.

Получается что было всего 2 (из 45) убыточные сделки, причем обе были на покупку.

Может куда не туда смотрю?


Отмечено красным: Шортовых позиций 5 из 45. Допустим 40 это 95%. Вопрос - Почему 5 = 100%, логично предположить - 5%.

Хотя мне кажется что в этом случае должно быть 5 (11.11%) и 40 (88.89%).

alexvd:

Попробуйте почистить кэш. Пробовались разные варианты, разные браузеры - добавление было успешным.

Вы ведь вставляете картинку непосредственно в комментарий а не как атач? 

Да, в текст. Попробую, хотя на этот форум добавилась без проблем... :)
 
Interesting:

Отмечено красным: Шортов позиций 5 из 45. Допустим 40 это 95%. Вопрос - Почему 5 = 100%, логично предположить что 5%.

Хотя мне кажется что в том случае должно быть 5 (11.11%) и 40 (88.89%).

  

Всего 45 сделок:

  1. 5 на продажу, 40 на покупку
  2. 2 убыточные (2 на покупку), 43 прибыльные (всего)

Итого получаем

Сделок на продажу - 5, из них выигрышных (не убыточных) 100% (т.е. все были с прибылью)

Сделок на покупку - 40, из них выигрышных 38, то есть  38*100%/40=95%

Далее

Прибыльных сделок - 43 из 45 то есть  43*100%/45 = 95.56%

Убыточных сделок - 2 из 45  то есть  2*100%/45 = 4.44%

 
alexvd:

Всего 45 сделок:

  1. 5 на продажу, 40 на покупку
  2. 2 убыточные (2 на покупку), 43 прибыльные (всего)

Итого получаем

Сделок на продажу - 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 не учавствует). После того, как расчет индикатора заканчивается отображение цены опять начинает двигаться и меняться синхронно с окном.
Видно на картинке:

 
-Alexey-:

Заметил вот такой эффект. При добавлении индикатора на график(в отдельном окне) главный график свечей перестает обновляться(цена замирает), хотя в окне с котировками все ок - цена меняется с красной на зеленую. И, хотя индикатор добавлен только на окно одного инструмента, в другом окне цена тоже замирает. Инициализация и расчет индикатора находятся внутри тела: if(prev_calculated==0). В расчете учавствуют цены закрытия неачиная с предыдущего дня(текущий close не учавствует). После того, как расчет индикатора заканчивается отображение цены опять начинает двигаться и меняться синхронно с окном.
Видно на картинке:

Первый расчет получается очень ресурсоемким. Проверьте, возможно код индикатора написан не самым оптимальным образом. 

 
alexvd:

Первый расчет получается очень ресурсоемким. Проверьте, возможно код индикатора написан не самым оптимальным образом. 

Уважаемый alexvd, к сожалению, сейчас в идикаторе уже более 3000 строк кода состоящего примерно из более чем 20 классов, и оптимизировать код довольно затруднительно(несколько сотен миллиардов вычислительных операций в циклах), а вырасти это количество может до 10000 ориентировочно. Я подразумевал, что возможно как-то разграничить обновление котировок на графике свечей в отдельный поток программы и загрузку расчетами индикаторов в другой. По правде говоря, когда только приступал к работе, не предполагал, что вопрос быстродействия встанет так остро на настольном компьютере, а ведь хочется и маленький ноутбук использовать.
 
-Alexey-:
  Я подразумевал, что возможно как-то разграничить обновление котировок на графике свечей в отдельный поток программы и загрузку расчетами индикаторов в другой.
Обновление котировок на графике есть лишь отображение состояния данных базы котировок терминала, на которых также рассчитываются индикаторы. Для экономии ресурсов в качестве входных данных индикатору передаются именно данные базы терминала, т.е. они не могут быть изменены до окончания расчета индикатора.
 
antt:
Обновление котировок на графике есть лишь отображение состояния данных базы котировок терминала, на которых также рассчитываются индикаторы. Для экономии ресурсов в качестве входных данных индикатору передаются именно данные базы терминала, т.е. они не могут быть изменены до окончания расчета индикатора.
Понятно, спасибо!
 
-Alexey-:
Уважаемый alexvd, к сожалению, сейчас в идикаторе уже более 3000 строк кода состоящего примерно из более чем 20 классов, и оптимизировать код довольно затруднительно(несколько сотен миллиардов вычислительных операций в циклах), а вырасти это количество может до 10000 ориентировочно. Я подразумевал, что возможно как-то разграничить обновление котировок на графике свечей в отдельный поток программы и загрузку расчетами индикаторов в другой. По правде говоря, когда только приступал к работе, не предполагал, что вопрос быстродействия встанет так остро на настольном компьютере, а ведь хочется и маленький ноутбук использовать.

Попробуйте все же оптимизировать работу индикатора, количество объектов и строк тут не важно. Скорей всего есть возможность заставить работать имеющийся индюк (в 3000 строк) с необходимой скоростью.

Интересный вариант получится если поместить все ресурсоемкиерасчеты в таймер (если это окажется возможным), тогда эти расчеты будут выполняться не на каждом тике.

А блок калькулятора оптимизировать по возможности (до разумных приделов).

 
Interesting:

Попробуйте все же оптимизировать работу индикатора, количество объектов и строк тут не важно. Скорей всего есть возможность заставить работать имеющийся индюк (в 3000 строк) с необходимой скоростью.

Интересный вариант получится если поместить все ресурсоемкиерасчеты в таймер (если это окажется возможным), тогда эти расчеты будут выполняться не на каждом тике.

А блок калькулятора оптимизировать по возможности (до разумных приделов).

  В принципе, оптимизировать работу немного можно, т.к. некоторые одинаковые данные считаются в объектах разных классов - т.е. не один раз. Но, тут возникает другая проблема, а именно - уход от концепции множества черных ящиков, каждый из которых можно отладить и быть в нем уверенным(т.е. каждый объект-это полностью автономный блок, а если расчет некоторых промежуточных данных, который одинаков у разных объектов, вынести за пределы объектов, то будет потеряна автономность, позволяющая производить отладку каждого класса отдельно. При таком уходе потеряется структурность программы, т.е. я уже и сам не разберусь в том, что написал, и малейшую ошибку будет уже не отловить. Скорость отладки возрастет тоже очень сильно, т.к. надо будет весь алгоритм прогонять, а не кусочек. Вот таким образом у меня количество объектов и влияет на скорость.

Поэтому, мне кажется, что подобную оптимизацию можно будет попробовать сделать уже в финале, когда индикатор будет полностью создан, отлажен и проверен, а до этого момента, к сожалению еще далеко(уже около 4х месяцев веду работу на начальном этапе, т.к. в книгах по Эконометрике, Математике все разбросано отрывками в разных книгах(нет практически единых цельных в деталях изложений материала), у авторов ошибки и разночтения в терминах и алгоритмах, которые обнаруживаются начинающим только при обращении к энциклопедическим словарям, теоретические сведения вступают в конфликт с возможностью их практической реализации, т.е. реализацией в виде численных методов, а численные методы сами в свою очередь предъявляют требования к функциональности програмной среды), процесс долгий нудный и вязкий.

  По логике расчета, он должен происходить после формирования каждой свечи, поэтому изначально предполагалось поместить его в тело функции "is new bar", однако, тот факт, что его время может превышать данный интервал, заставил меня поместить его внутрь тела функции if(prev_calculated==0), чтобы сейчас, на этапе отладки, он проходил только один раз. Над вашим предложением по таймеру подумаю - спасибо.

Документация по MQL5: Основы языка / Функции
Документация по MQL5: Основы языка / Функции
  • www.mql5.com
Основы языка / Функции - Документация по MQL5