Ваши вопросы по языку MQL4

Milord

Местный знаток
Как написать алгоритм???

Уважаемые программеры профи, поздравляю вас с Новым Годом и вопросик вам?
например есть 2 переключателя, которые активны при 1 и неактивны при 0
PHP:
Expand Collapse Copy
extern int Q1=1;
extern int Q2=1;
как написать алгоритм их работы, чтобы условия по оператору if ,были активны(или неактивны)
например
PHP:
Expand Collapse Copy
if(A>B&&C<D&&E>F)
{
OrderSend(...);
}
нужно чтобы при Q1=1 и Q2=1, все 3 условия проверялись, то есть были активны, если Q1=0, то первое условие неактивно(будто его и нету), аналогично при Q2=0, второе условие неактивно(не проверяется),третье условие E>F всегда активно...
ЗАРАНЕЕ СПАСИБО!
 
Последнее редактирование:

Ugar

Гуру форума
Уважаемые программеры профи, поздравляю вас с Новым Годом и вопросик вам?
например есть 2 переключателя, которые активны при 1 и неактивны при 0
PHP:
Expand Collapse Copy
extern int Q1=1;
extern int Q2=1;
как написать алгоритм их работы, чтобы условия по оператору if ,были активны(или неактивны)
например
PHP:
Expand Collapse Copy
if(A>B&&C<D&&E>F)
{
OrderSend(...);
}
нужно чтобы при Q1=1 и Q2=1, все 3 условия проверялись, то есть были активны, если Q1=0, то первое условие неактивно(будто его и нету), аналогично при Q2=0, второе условие неактивно(не проверяется),третье условие E>F всегда активно...
ЗАРАНЕЕ СПАСИБО!
Странный вопрос. Это же простая логика.
if((Q1==0 || A>B) && (Q2==0 || C<D) && E>F)
{
OrderSend(...);
}
 

AlexeyVik

Программист mql4 mql5
Уважаемые программеры профи, поздравляю вас с Новым Годом и вопросик вам?
например есть 2 переключателя, которые активны при 1 и неактивны при 0
PHP:
Expand Collapse Copy
extern int Q1=1;
extern int Q2=1;
как написать алгоритм их работы, чтобы условия по оператору if ,были активны(или неактивны)
например
PHP:
Expand Collapse Copy
if(A>B&&C<D&&E>F)
{
OrderSend(...);
}
нужно чтобы при Q1=1 и Q2=1, все 3 условия проверялись, то есть были активны, если Q1=0, то первое условие неактивно(будто его и нету), аналогично при Q2=0, второе условие неактивно(не проверяется),третье условие E>F всегда активно...
ЗАРАНЕЕ СПАСИБО!
Во первых для флагов грамотней использовать переменные типа bool
А написать очень просто.
if((!Q1 || A > B) && (!Q2 || C < D) && E > F)
Вот так, если я правильно понял вопрос.
 

Milord

Местный знаток
Во первых для флагов грамотней использовать переменные типа bool
А написать очень просто.
if((!Q1 || A > B) && (!Q2 || C < D) && E > F)
Вот так, если я правильно понял вопрос.
преимущество переключателя(int) в возможности оптимизации настроек и переключателей в одном потоке...спасибо за ответ и Ugar-u тоже спасибо,пошел переваривать ответы...) :facepalm:
кажется вы оба меня неправильно поняли...позже напишу.
 
Последнее редактирование:

Milord

Местный знаток
Задам вопрос по другому???

спасибо за ответы, но кажется вы меня не так поняли, или я вапще ниче не понимаю)):facepalm:
поэтому изменю формулировку вопроса в другом виде, есть переключатели:

PHP:
Expand Collapse Copy
extern int Q1=1;//при 1 включен, при 0 - выключен
extern int Q2=1;//при 1 включен, при 0 - выключен

нужно написать код, чтобы при Q1=1 и Q2=1, логика работы такая:
PHP:
Expand Collapse Copy
if(A>B&&C<D&&E>F)
{
OrderSend(...);
}
при Q1=0,и Q2=1,логика работы такая(выключено первое условие)
PHP:
Expand Collapse Copy
if(C<D&&E>F)
{
OrderSend(...);
}
при Q1=1,и Q2=0,логика работы такая(выключено второе условие)
PHP:
Expand Collapse Copy
if(A>B&&E>F)
{
OrderSend(...);
}
при Q1=0,и Q2=0,логика работы такая(выключено первое и второе условие)
PHP:
Expand Collapse Copy
if(E>F)
{
OrderSend(...);
}
 

ansol

Местный знаток
Milord
Тебе так и написали, оба решения рабочие и практически не отличаются. Будет работать именно так, как написано :)
 

Milord

Местный знаток
Спасибо за помощь,еще вопросик?

Milord
Тебе так и написали, оба решения рабочие и практически не отличаются. Будет работать именно так, как написано :)

спасибо за ответы всем, еще вопросик похожий, не могу сообразить..)
есть переключатель
PHP:
Expand Collapse Copy
extern int Revers=0;//при 1 включен реверс условия, при 0 выключен реверс

нужно написать код чтобы при Revers=0; логика работы была
PHP:
Expand Collapse Copy
if(A>B)
{
OrderSend(...);
}
при Revers=1; логика работы была
PHP:
Expand Collapse Copy
if(A<B)
{
OrderSend(...);
}
 

AlexeyVik

Программист mql4 mql5
спасибо за ответы, но кажется вы меня не так поняли, или я вапще ниче не понимаю)):facepalm:
поэтому изменю формулировку вопроса в другом виде, есть переключатели:

PHP:
Expand Collapse Copy
extern int Q1=1;//при 1 включен, при 0 - выключен
extern int Q2=1;//при 1 включен, при 0 - выключен
нужно написать код, чтобы при Q1=1 и Q2=1, логика работы такая:
PHP:
Expand Collapse Copy
if(A>B&&C<D&&E>F)
{
OrderSend(...);
}
при Q1=0,и Q2=1,логика работы такая(выключено первое условие)
PHP:
Expand Collapse Copy
if(C<D&&E>F)
{
OrderSend(...);
}
при Q1=1,и Q2=0,логика работы такая(выключено второе условие)
PHP:
Expand Collapse Copy
if(A>B&&E>F)
{
OrderSend(...);
}
при Q1=0,и Q2=0,логика работы такая(выключено первое и второе условие)
PHP:
Expand Collapse Copy
if(E>F)
{
OrderSend(...);
}
Ты просто пойми порядок работы такой части условия (Q1 == 0 || A > B) Если в настройках поставить Q1 = 0, то вторая часть практически будет выключена. Потому, что это условие будет истиной при любом А и В. А вот если поставить Q1 = 1, то истинным это выражение будет только если A > B то есть включаем эту часть условия.
Надеюсь понятно объяснил.
 

Milord

Местный знаток
Ты просто пойми порядок работы такой части условия (Q1 == 0 || A > B) Если в настройках поставить Q1 = 0, то вторая часть практически будет выключена. Потому, что это условие будет истиной при любом А и В. А вот если поставить Q1 = 1, то истинным это выражение будет только если A > B то есть включаем эту часть условия.
Надеюсь понятно объяснил.
спасибо, буду переваривать..)
интуитивно ощущаю что это все проще пареной репы, а мозг выключается пока что, сложновато после бейсика перейти на С++(MQL4), все равно что с запорожца сесть за штурвал МИГ-31)))
 
Последнее редактирование:

AlexeyVik

Программист mql4 mql5
спасибо, буду переваривать..)
интуитивно ощущаю что это все проще пареной репы, а мозг выключается пока что, тяжко после бейсика перейти на С++, все равно что с запорожца сесть за штурвал МИГ-31)))
Да что ты всё про бейсик вспоминаешь? Может ты будешь удивлён, но я ни одной программы не написал на С или С++. И вообще не пытался. И до изучения mql тоже работал только с бейсиком. Ничего сложного в этом нет, это условие такое-же как и в бейсике if((Q1 = 0 or A > B) and (Q2 = 0 or C < D) and Е > F)
Очень хотелось-бы чтобы не-было в этом примере грубых синтаксических ошибок. Всё-таки уже несколько лет не вспоминал о бейсике.
 

Milord

Местный знаток
Да что ты всё про бейсик вспоминаешь? Может ты будешь удивлён, но я ни одной программы не написал на С или С++. И вообще не пытался. И до изучения mql тоже работал только с бейсиком. Ничего сложного в этом нет, это условие такое-же как и в бейсике if((Q1 = 0 or A > B) and (Q2 = 0 or C < D) and Е > F)
Очень хотелось-бы чтобы не-было в этом примере грубых синтаксических ошибок. Всё-таки уже несколько лет не вспоминал о бейсике.
ну да, удивлен!)):D
не только я мучаюсь оказывается с переходом...)
можешь подсказать как с реверсом написать код?)вижу светлая голова, приятно видеть умных людей на сайте...)
 

qqmber

Почетный гражданин
спасибо за ответы всем, еще вопросик похожий, не могу сообразить..)
есть переключатель
PHP:
Expand Collapse Copy
extern int Revers=0;//при 1 включен реверс условия, при 0 выключен реверс

нужно написать код чтобы при Revers=0; логика работы была
PHP:
Expand Collapse Copy
if(A>B)
{
OrderSend(...);
}
при Revers=1; логика работы была
PHP:
Expand Collapse Copy
if(A<B)
{
OrderSend(...);
}

int R=2*Revers-1;
if(R*A<B*R) {:D}
 

ansol

Местный знаток
Типа, если А>В, то это аналогично -А<-В :)
Превращаем ваш реверс(0 и 1) в -1 и +1 и умножаем неравенство на это безобоазие == получится неравенство "наоборот" :)
Если А и В - это числовые значения, конечно
 

Ugar

Гуру форума
спасибо за ответы всем, еще вопросик похожий, не могу сообразить..)
есть переключатель
PHP:
Expand Collapse Copy
extern int Revers=0;//при 1 включен реверс условия, при 0 выключен реверс
нужно написать код чтобы при Revers=0; логика работы была
PHP:
Expand Collapse Copy
if(A>B)
{
OrderSend(...);
}
при Revers=1; логика работы была
PHP:
Expand Collapse Copy
if(A<B)
{
OrderSend(...);
}
Так сам же уже написал
if((Revers==0 && A>B) || (Revers==1 && A<B))
{

}

или вот варинт аналогичный прошлому примеру
if((Revers==1 || A>B) && (Revers==0 || A<B))
{

}
 
Последнее редактирование:

ansol

Местный знаток
Конечно хочу, у нас Новый Год или нет?!
Код 100% рабочий, но в реале я бы не стал так делать, а написал бы как Ugar выше показал.

Это почему? Пусть бы так и было, чем плохо-то?
Комментировать только строчки такие надо, чтоб потом было поятно, что сделать хотел, а так - все пучком!
:D
 
Верх