Как найти начало таймфрейма? - страница 2

 
nasdaq:
Посмотрите PositionSelect или PositionsTotal

Это давно решённый вопрос:

 order = PositionsTotal();
 
shelandr:

 Операция деления реализуется через многократное вычитание делителя В из делимого А. Это достигается сложением чисел в обратном и дополнительном кодах.

А отсюда следует что  Время выполнения деления зависит от соотношения делимого и делителя и может достигать тысячи циклов каждый из которых составляет несколько машинных тактов.. Чудес увы не бывает.

Поэтому обычно делают доступ к ячейке счётчика новых баров ибо он всё равно формируется для отрисовки графика иначе приходится его по новой формировать и тратить вторично ресурсы системы. и изобретать новый велосипед.

Это относится и к получению отрисованных свечей и чтобы получить последнюю  отрисованную свечу-опять приходится корячиться.. 

Обработчик события "новый бар"
Обработчик события "новый бар"
  • 2010.10.04
  • Konstantin Gruzdev
  • www.mql5.com
Язык программирования MQL5 позволяет решать задачи на совершенно новом уровне. Даже те задачи, которые уже вроде имеют решения, благодаря объектно-ориентированному программированию могут подняться на качественно новый уровень. В данной статье специально взят простой пример проверки появления нового бара на графике, который был преобразован в достаточно мощный и универсальный инструмент. Какой? Читайте в статье.
 
shelandr:

А отсюда следует что  Время выполнения деления зависит от соотношения делимого и делителя и может достигать тысячи циклов каждый из которых составляет несколько машинных тактов.. Чудес увы не бывает.


Отсюда ничего не следует. Учите матчасть, если не верите. Рекомендую книжку Зубкова Сергея Владимировича "Assembler для DOS, Windows и Unix". Поверьте, что в 64-битной системе деление целого (до 64 бит) на целое (до 64 бит) отнимает ровно 1 такт 64-битного процессора

В качестве затравки вот Вам код деления целого числа любой размерности, кратной 32, на 32-битное целое (код взят из открытых источников). Этот код возьмёт тактов: 8+dword_cnt*6+2 (а мы ещё конвейеризацию не обсуждали)

      mov   ecx,dword_cnt
      mov   esi,ecx
      dec   esi
      shl   esi,2
      mov   edi,esi
      add   esi,divident
      add   edi,result
      xor   edx,edx
dword_loop:
      mov   eax,dword ptr [esi]
      div   divisor
      mov   dword ptr [edi],eax
      sub   esi,4
      sub   edi,4
      loop  dword_loop
      mov   eax,remainder
      mov   dword ptr [eax],edx
 
stringo:

 Учите матчасть, если не верите. Рекомендую книжку Зубкова Сергея Владимировича "Assembler для DOS, Windows и Unix". Поверьте, что в 64-битной системе деление целого (до 64 бит) на целое (до 64 бит) отнимает ровно 1 такт 64-битного процессора

Интересно-как это новые процессоры уживаются с   "   "Assembler для DOS, "-баальшой вопрос.

А про учёбу- я тоже могу вам это написать. 

Где ссылка на авторитет? Я так понял что вопрос этот тёмный и  все в этом позапутались . Так что  думаю что вы что то попутали.

 
shelandr:

Интересно-как это новые процессоры уживаются с   "   "Assembler для DOS, "-баальшой вопрос.

А про учёбу- я тоже могу вам это написать. 

Где ссылка на авторитет? Я так понял что вопрос этот тёмный и  все в этом позапутались . Так что  думаю что вы что то попутали.

Вы будете долго скитаться в своём мавзолее...

Ссылки на авторитет (энциклопедия юных сурков в двух частях): http://www.intel.com/Assets/en_US/PDF/manual/253666.pdf  http://www.intel.com/Assets/en_US/PDF/manual/253667.pdf

У Зубкова всё то же самое. И ассемблер на самом деле не для доса, виндовса или юникса, а для процессоров, которые хорошо уживаются и с досом, и с виндовсом, и даже с юниксом. Вы не поверите, контроллеры на интеловских процессорах программируются тем же самым ассемблером, что для виндовса и для доса

 

Можно вначале поставить самый большой таймфрэйм например месяцы, быстро прокрутить в начало данных и затем перейти в минуты или тот мелкий таймфрэйм который хотелось посмотреть в начале ряда и чучуть уже докрутить.

Но согласен, не мешало бы сделать более удобное масштабирование и прокрутку на мелких таймфрэймах.

 
PS. Я как-то сдуру купил очень толстую книжку Кип Р. Ирвин "Язык ассемблера для процессоров Intel" 4-е издание (2005 год). Так вот, там нет ни одного слова про 64-битные процессоры и, соответственно, про 64-битные команды (в отличие от Зубкова того же года выпуска)
 
shelandr:

Интересно-как это новые процессоры уживаются с   "   "Assembler для DOS, "-баальшой вопрос.

А про учёбу- я тоже могу вам это написать. 

Где ссылка на авторитет? Я так понял что вопрос этот тёмный и  все в этом позапутались . Так что  думаю что вы что то попутали.

Да. И ещё.

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

 
stringo:

 Вы не поверите, контроллеры на интеловских процессорах программируются тем же самым ассемблером, что для виндовса и для доса

Естессно.. И никто не поверит.. ибо ассемблеры там разные и никто не программирует контроллеры в 16 разрядном ассемблере при разрядности процессора 64.

если есть команда деления в неком языке-то реализация этой команды может быть написана и на ассемблере но для каждого процессора это будет разный ассемблер или разный компилятор.

В разных языках возможны и разные алгоритмы реализации схожих команд.

Если мы говорим про язык МQL5 -то я не знаю как реализована в нём команда деления..хотя скорее всего её взяли из какого то стандартного языка типа Си или Cи++ . И мне совсем не нужно изучать ассемблер для того чтобы знать сколько времени выполняется та или иная команда-обычно разработчик даёт среднее время выполнения различных команд или хотя бы соотношения между временами различных команд ( поскольку процессоры могут быть различными ).

Не имея же этих данных я просто знаю что сложение.вычитание происходит быстрее чем умножение .деление и стараюсь в часто реализуемых задачах стараюсь применять первые. Если требуется выполнять расчёты-то стараюсь организовывать циклы бОльшей длительности-если мне нужно взять свечу-то зачем я буду делать это на каждом тике если можно взять 1 раз за таймфрейм? 

 
stringo:

Да. И ещё.

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

Вопрос есть только по вашему статусу:

1 Вы являетесь ответственным представителем разработчика и ваше сообщение о скорости выполнения целочисленного деления является официальным и ответственным-то есть гарантирующим минимальную скорость исполнения команды.

или

2 Ваше личное предположение как врЕменного модератора. 

Причина обращения: