КОД №3
bool Tr_H1_Bar_B2, Tr_H1_Bar_S2; double tBar0_H1 = (iClose(NULL,PERIOD_H1,0) - iOpen(NULL,PERIOD_H1,0))/Point; Tr_H1_Bar_B2 = (tBar0_H1 > 0); Tr_H1_Bar_S2 = (tBar0_H1 < 0);
Не совсем понятно вот это
не совсем понятно вот это Tr_H1_Bar_B2 = (tBar0_H1 > 0); Tr_H1_Bar_S2 = (tBar0_H1 < 0); мне нужно на выходе получить истину или лож
Не совсем понятно вот это
мне нужно на выходе получить истину или лож
именно это Вы и получите.
У меня вопрос к знатокам. Который код работает быстрее? А то написал советник а он очень много забирает процессорного времени вот я и хочу его код оптимизировать.
КОД №1
int Tr_H1_Bar_B2 = 0, Tr_H1_Bar_S2 = 0;
double tBar0_H1 = (iClose(NULL,PERIOD_H1,0) - iOpen(NULL,PERIOD_H1,0))/Point;
if(tBar0_H1 > 0) Tr_H1_Bar_B2 = 1;
if(tBar0_H1 < 0) Tr_H1_Bar_S2 = 1;
-----------------------------------------------------------------------------------------------------------------------
КОД №2
bool Tr_H1_Bar_B2 = false, Tr_H1_Bar_S2 = false;
double _H1 = (iClose(NULL,PERIOD_H1,0) - iOpen(NULL,PERIOD_H1,0))/Point;
if(tBar0_H1 > 0) Tr_H1_Bar_B2 = true;
if(tBar0_H1 < 0) Tr_H1_Bar_S2 = true;
-----------------------------------------------------------------------------------------------------------------------
От деления на Point знак результата не зависит. Поэтому, можно определить:
bool tBar0_H1 = (iClose(NULL,PERIOD_H1,0) > iOpen(NULL,PERIOD_H1,0))
и, далее по тексту,
if ( tBar0_H1)
{
// обработка ситуации iClose(NULL,PERIOD_H1,0) > iOpen(NULL,PERIOD_H1,0)
}
else
{
// иначе обработка ситуации iClose(NULL,PERIOD_H1,0) <= iOpen(NULL,PERIOD_H1,0)
}
Если я правильно понимаю то Условный оператор if сильно заменляет скорость обработки кода. Дело в том что у меня в коде много этого оператора if
Вас об этом предупреждали:
Справочник MQL4 - Основы языка - Синтаксис
........
вычисление логического выражения производится до конца и не прерывается досрочно.
Если я правильно понимаю то Условный оператор if сильно заменляет скорость обработки кода. Дело в том что у меня в коде много этого оператора if
Нет, неправильно.
Нет, неправильно.
Это интерпретатор, вычисляющий логическое выражение до конца, даже если значение известно с первого сравнения. Поэтому, приходится бить сложные логические выражения на несколько операторов.
- Бесплатные приложения для трейдинга
- 8 000+ сигналов для копирования
- Экономические новости для анализа финансовых рынков
Вы принимаете политику сайта и условия использования
У меня вопрос к знатокам. Который код работает быстрее? А то написал советник а он очень много забирает процессорного времени вот я и хочу его код оптимизировать.
КОД №1
int Tr_H1_Bar_B2 = 0, Tr_H1_Bar_S2 = 0;
double tBar0_H1 = (iClose(NULL,PERIOD_H1,0) - iOpen(NULL,PERIOD_H1,0))/Point;
if(tBar0_H1 > 0) Tr_H1_Bar_B2 = 1;
if(tBar0_H1 < 0) Tr_H1_Bar_S2 = 1;
-----------------------------------------------------------------------------------------------------------------------
КОД №2
bool Tr_H1_Bar_B2 = false, Tr_H1_Bar_S2 = false;
double tBar0_H1 = (iClose(NULL,PERIOD_H1,0) - iOpen(NULL,PERIOD_H1,0))/Point;
if(tBar0_H1 > 0) Tr_H1_Bar_B2 = true;
if(tBar0_H1 < 0) Tr_H1_Bar_S2 = true;
-----------------------------------------------------------------------------------------------------------------------