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

 
Подскажите как суммировать все значения в тексте?
void Hmin(){datetime   h = iBars(NULL,PERIOD_H1); 
       ObjectCreate(0,"Hmin"+h,OBJ_TEXT,1,TimeCurrent(),0);     
       double Hmin=ObjectDescription("Hmin"+h);     
       ObjectSetText("Hmin"+h,MathMin(Hmin,AccountEquity()-AccountBalance()),15,"Arial",clrWhite);
       ObjectSetInteger(0,"Hmin"+h,OBJPROP_ANCHOR,ANCHOR_RIGHT);  
           }
Этот код только создает их
 
Дмитрий:

Добрый день, пожалуйста помогите понять...

Ф-ия MathMax возвращает максимальное из двух числовых значений, т.е. получается возвращает из двух одинаковых массивов  high[rates_total] с разницой  в -1 и -2 бара максимальное числовое значение? 

Простыми словами : в первом массиве  12345 а во втором 1234 то ф-ия вернет 5?

Нет. Функция вернёт 12345

 
Дмитрий:

Добрый день, пожалуйста помогите понять...

Ф-ия MathMax возвращает максимальное из двух числовых значений, т.е. получается возвращает из двух одинаковых массивов  high[rates_total] с разницой  в -1 и -2 бара максимальное числовое значение? 

Простыми словами : в первом массиве  12345 а во втором 1234 то ф-ия вернет 5?

Будет возвращено максимальное значение из двух, находящихся по адресам high[rates_total-1] и high[rates_total-2]

Если по адресу high[rates_total-1] находится значение 12345, а по адресу high[rates_total-2] находится значение 1234, то какое из этих двух значений больше?

12345 явно больше 1234 на целый порядок. Будет возвращено значение 12345 из high[rates_total-1]

 
Artyom Trishkin:

Будет возвращено максимальное значение из двух, находящихся по адресам high[rates_total-1] и high[rates_total-2]

Если по адресу high[rates_total-1] находится значение 12345, а по адресу high[rates_total-2] находится значение 1234, то какое из этих двух значений больше?

12345 явно больше 1234 на целый порядок. Будет возвращено значение 12345 из high[rates_total-1]

Спасибо... о тут возникает вопрос в рациональности строки если high[rates_total-1] уже больше на один бар чем high[rates_total-2]

Или тут смысл в другом?

Спасибо.

 
Дмитрий:

Спасибо... о тут возникает вопрос в рациональности строки если high[rates_total-1] уже больше на один бар чем high[rates_total-2]

Или тут смысл в другом?

Спасибо.

При чём тут бары?

Вы сравниваете значения High, находящихся на двух барах одного массива. rates_total-1 и rates_total-2 указывают на то, значения каких двух баров вы сравниваете.

Вы сравниваете значения High баров, находящихся по индексам rates_total-1 и rates_total-2, а не значения индексов.

То, о чём вы подумали, будет выглядеть так: MathMax(rates_total-1, rates_total-2) - вот тут всегда будет возвращаться rates_total-1.

 
Rustam Bikbulatov:
Подскажите как суммировать все значения в тексте? Этот код только создает 

вы хотите получить значения баланс минус эквити ? напишите подробно 

 
Artyom Trishkin:

При чём тут бары?

Вы сравниваете значения High, находящихся на...

Спасибо... За пояснение)
 

Всем доброго времени суток!

В МТ4 , на модели ВСЕ ТИКИ , на минутных свечах , я тестирую советника. Моя задача - сделать так что бы программа на исполнение кода тратила как можно меньше времени. Но что меня удивило!!!!

При этом коде  программа  проверяет каждый тик и тратит на исполнение кода 6 сек. 375 миллисекунд

void OnTick()
{
Tick++;
if (Tick!=x3)
{
Print("---------------------КАЖДЫЙ ТИК ----------Tick-----=",Tick);
x3=Tick;
}
}

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

 
void OnTick()
{
Tick++;

if (Minute()!=x3)//&&Seconds()==0

{
Print("---------------------КАЖДЫЙ ТИК ----------Tick-----=",Tick, "  Bid  ",   Bid, "  LoY  ",   LoY);
x3=Minute();
}
}



Но программа потратила времени   6 сек. 219 миллисекунд. Из этого я сделал вывод, что не смотря на то, код предписывает программе проверять выражение в скобках только 1 раз в 60 секунд, программа все равно проверяет это выражение почти на каждом тике и тратит почти столько же времени на исполнение как и предыдущем коде.
Затем я изменил модель на ПО ЦЕНАМ ОТКРЫТИЯ  и прогнал второй вариант. Но программа потратила времени на его исполнение   так же  6 сек. 219 миллисекунд. 


ВОПРОС . Можно ли заставить программу  на МТ4  на модели ВСЕ ТИКИ, на минутных свечах , проверять не каждый тик , а только первый тик новой минутной свечи, что бы тратить времени на исполнение кода НАМНОГО меньше. Если можно , то при помощи какой функции, или языковой конструкции?
Спасибо.

 
datetime current, last;

void OnTick()
   {
   current=iTime(symbol,frame,0);
   if(last==current) return;
   last=current;

   } 
 
Aleksei Stepanenko:

Изменил свой код в соответствии с Вашим кодом

datetime current, last;
void OnTick()
{
Tick++;
current=iTime( NULL,0,0);
if(last==current) return;
last=current;
{
Print("---------------------КАЖДЫЙ ТИК ----------Tick-----=",Tick);
}
}


Время  потраченное программой на исполнение кода.... 6 , 235 , то есть меньше чем с моим кодом(6.375),но не в разы
А должно быть, как мне кажется,  в разы меньше,  поскольку программа должна проверять значение тика только 1 раз в начале открытия  каждой минутной свечи. 

Кто из нас ошибся.....как мне кажется.


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