Правильно написанные условия - залог не преднамеренной оптимизации кода - страница 2

 
George Merts:

Идея правильная.

Однако, я бы в первую очередь обращал внимание на легкость понимания и прозрачность кода.

В частности, обсуждаемое условие вначале темы - я бы разбил на три отдельных if'a, и работал бы с ними по очереди:

if(Open() != 1) return; // Не выполняется первое условие

if(RSI()<45) return; // Не выполняется второе условие

if(MA55()!=1 return; // Не выполняется третье условие

// Все условия выполняются - входим.

На мой взгляд, отдельные проверки проще анализировать, чем длинное условие из нескольких.

Ну Я такие условия записываю так:

if( Open()!= 1
 && RSI() < 45
 && ...
 && MA55()!= 1
 ){
  // Все условия выполняются - входим.
}

 

Отладка также не сложная, как о добавление новых:

if( Open()!= 1
//&& RSI() < 45 // сейчас не нужно
 && ...
//&& MA55()!= 1 // сейчас не нужно
 && MA55() < RSI()
 ){
  // Все условия выполняются - входим.
}
 
George Merts:

Идея правильная.

Однако, я бы в первую очередь обращал внимание на легкость понимания и прозрачность кода.

В частности, обсуждаемое условие вначале темы - я бы разбил на три отдельных if'a, и работал бы с ними по очереди:

if(Open() != 1) return; // Не выполняется первое условие

if(RSI()<45) return; // Не выполняется второе условие

if(MA55()!=1 return; // Не выполняется третье условие

// Все условия выполняются - входим.

На мой взгляд, отдельные проверки проще анализировать, чем длинное условие из нескольких.

Наверное это на любителя. Мне такие условия, простите противны. Даже в старом mql4 когда все элементы проверялись не зависимо от результата первых, можно было проверять так

if(Open() == 1)
{
if(RSI() >= 45)
{
if(MA55() == 1)
{
// Все условия выполняются - входим.
}
}

}

Тогда никаких проблем не возникнет если дальше будет код который должен выполняться независимо от предыдущего условия, или по другому условию.
 
Vitaly Muzichenko:

Когда пишем условия if(... && ..), то мало кто задумывается об очерёдности исполнения кода, но разработчики позаботились о том, что правильно расставленные приоритеты - залог минимизации исполнения кода по времени и ресурсам.


Спасибо, не знал про это.
 
Прикольно).
Вы тут важную фишку упускаете.
Предположим, что результат каждого из условий не связан с другими. Тогда нам надо для каждого IF посчитать время выполнения и умножить его на количество положительных результатов(TRUE) из, пускай, тысячи выполнений. Ну а дальше сами знаете).
А если связаны, что чаще бывает, то можно ещё пару тактов выиграть). Вот пример: при индикаторе А выше 40, индикатор Б будет в 30% случаях выше 50.
Да, тут ещё вероятности считать надо.

Но это общая "экономия")). Лучше это дело рассчитывать на критических участках рынка или где, согласно стратегии, возможно больше всего сделок.
 
Aliaksandr Hryshyn:
Прикольно).
Вы тут важную фишку упускаете.
Предположим, что результат каждого из условий не связан с другими. Тогда нам надо для каждого IF посчитать время выполнения и умножить его на количество положительных результатов(TRUE) из, пускай, тысячи выполнений. Ну а дальше сами знаете).
А если связаны, что чаще бывает, то можно ещё пару тактов выиграть). Вот пример: при индикаторе А выше 40, индикатор Б будет в 30% случаях выше 50.
Да, тут ещё вероятности считать надо.

Но это общая "экономия")). Лучше это дело рассчитывать на критических участках рынка или где, согласно стратегии, возможно больше всего сделок.
Экономисты...ордер будет открываться дай бог 300 мс, у меня сегодня на exness вообще труба была, до 2599. А раньше было 300-500. А почему так - никто не знает.