Любые вопросы новичков по MQL4 и MQL5, помощь и обсуждение по алгоритмам и кодам - страница 1856

 
Порт-моне тв #:

Добрый день.

Как получить время открытия второго и последующих ордеров ведь OpenOrderTime() выдает только первый, а также  как получить цену открытия второго и последующих ордеров, т.к. аналогом  OpenOrderPrice() выдает также цену первого

собрать (или помнить/знать) все, сортировать по времени открытия. Вот что что, а время открытия не меняется :-)

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

 
Mykhailo Turovskyi #:
 подскажите прибыль на истории обведена синим, это уже с вычетом комиссии и свопа??
Нет.
 
Порт-моне тв #:

Добрый день.

Как получить время открытия второго и последующих ордеров ведь OpenOrderTime() выдает только первый, а также  как получить цену открытия второго и последующих ордеров, т.к. аналогом  OpenOrderPrice() выдает также цену первого

Какой ордер будет выбран функцией OrderSelect(), время и цену того ордера и получишь.

 
Mihail Matkovskij #:

На сколько я знаю в документации ни слова об этом. Так что лучше перестраховаться. Хуже точно не будет.

Были жалобы что эта процедура занимает много процессорного времени. 

Mihail Matkovskij #:

Относительно СЛ и ТП то они являются  расчётными.  И поэтому их  обязательно следует  нормализировать в соответствии со значением digits.

Здесь, в любом случае, необходимо узнавать задумку автора.

 
Andrey Sokolov #:

Были жалобы что эта процедура занимает много процессорного времени. 

Нормализация расчётных СЛ и ТП занимает 2 в раза больше времени. Но я не скажу что это так сильно влияет на оптимизацию и тем более на тестирование роботов.

Здесь, в любом случае, необходимо узнавать задумку автора.

В документации чёрным по белому написано нормализовать расчётные уровни! И какая при этом может быть "задумка автора"? Что не нормализовать СЛ и ТП? Я не собираюсь с вами спорить поскольку здесь очевидные факты!

 
Порт-моне тв #:

Добрый день.

Как получить время открытия второго и последующих ордеров ведь OpenOrderTime() выдает только первый, а также  как получить цену открытия второго и последующих ордеров, т.к. аналогом  OpenOrderPrice() выдает также цену первого

Еcли это вопрос, то получить тикет первого, выбрать первый и последующие у которых тикет != первого.

 
Mihail Matkovskij #:

Нормализация расчётных СЛ и ТП занимает в раза больше времени. Но я не скажу что это так сильно влияет на оптимизацию и тем более на тестирование роботов.

Влияет, и на этом форуме были вопросы об упрощении данной процедуры. 

Я не знаю случая чтоб полученные и не нормализованные цены вызвали ошибку.

Из справки: 

Mihail Matkovskij #:

 И какая при этом может быть "задумка автора"? Что не нормализовать СЛ и ТП? Я не собираюсь с вами спорить поскольку здесь очевидные факты!

Задумкой может быть округление. В теории это делается не так, но и такой способ в случае округления к меньшему количеству знаков , в случае если цены будут правильные для СЛ и ТП, сработает. По этому узнавать что задумано надо в любом случае.

 
Urman Ru #:

Здравствуйте! Как на индикатор из CodeBase  Net_Volume_Delta.mq5  накинуть фракталы? Т.Е., получить фракталы от буфера этого индикатора. Самый высокий и самый низкий, но не стандартный, а чтобы слева i-2, а справа 0, чтобы результат  не переписывался.

Я попытался сам решить, грубо дописать  в самом коде этого индикатора, но что то не получается. Хотя компилирует и ошибок нет.

Может надо  через iCustom и handle индикатора? 

Если попытаться выявить проблему и, после, более детально описать что именно не получается, то вероятность получения ответа будет намного выше.

 
Mihail Matkovskij #:

Нормализация расчётных СЛ и ТП занимает 2 в раза больше времени. Но я не скажу что это так сильно влияет на оптимизацию и тем более на тестирование роботов.

Мало того, некоторые пренебрегают такими простыми проверками как

if (name == NULL)
  return;

считая что это заберет много процессорного времени :)

Но на самом деле процессорное время забирают такие функции как ObjectCreate и ObjectDelete. Если у программиста допустим массив графических объектов и он удаляется и заново создаётся на каждом тике, то с этим определенно нужно что-то делать. В то время как простые проверки и вычисления являются незначительными по времени. Поэтому много программистов ищут просто не там.

 
Andrey Sokolov #:

Влияет, и на этом форуме были вопросы об упрощении данной процедуры.

Не знаю кому оно и на что влияет. У меня с NormaizeDouble никогда никаких проблем не было. Если на то пошло то любой код влияет на скорость работы приложения. Но если всё столь критично то можно оставить обработчики OnTick или OnCalculate пустыми. Тогда приложение будет вообще летать. :) Или переписать функции на ассемблер скомпилировать в DLL и подключать их к приложению.

Я не знаю случая чтоб полученные и не нормализованные цены вызвали ошибку.

Зато документация знает! А вы пренебрегаете советами в документации. Как хотите. Это ваше дело. По моему всё очевидно и я не собираюсь в вами спорить по этому поводу, еще раз повторяю!

Задумкой может быть округление.

Там не округления а отсечение всего что больше 2 знаков после запятой

NormalizeDouble((Ask1+StopLoss*Point1), 2)

 Я тоже не знаю задумку автора. Но мне это и не нужно. Думаю он сам во всём разберётся.
 

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