Наведите на Мысль

 

Всем привет. Генерирую сигнал на вход по трём цифрам из так называемого каталога.

Пример

double   S1=44;                                 double   S1_1=44;             double      S1_1_1=43;
double   S2= 20.66666666666667;      double   S1_2   =   62;        double      S1_1_2   =   59;
double   S3= 20.2;                             double   S1_3   =   101;     double      S1_1_3   =   96;
double   S4= 58.5;                             double   S1_4   =   117;     double      S1_1_4   =   115;
double   S5= 33.66666666666666;      double   S1_5   =   101;     double      S1_1_5   =   98;


Сигналов намного больше. Далее генерирую открытие позиции 

if( (   S1==Level1      &&      S1_1==one_BE    &&      S1_1_1==zero_BE)        ||(     S2==Level1      &&      S1_2==one_BE    &&      S1_1_2==zero_BE)        ||(     S3==Level1      &&      S1_3==one_BE    &&      S1_1_3==zero_BE)        ||(     S4==Level1      &&      S1_4==one_BE    &&      S1_1_4==zero_BE)        ||(     S5==Level1      &&      S1_5==one_BE    &&      S1_1_5==zero_BE))     

              TPBuy1=TPBUY;
               SLBuy1=STLOLBUY;
               RefreshRates();
               ticketBuy1=OrderSend(Symbol(),OP_BUY,LotsVolumen,Bid,Slippage,SLBuy1,TPBuy1,"Мой Ордер на покупку",MagicBUYSTOP,0,clrCyan);

              }

Проблема в колличестве сигналов. Мне нужно  сократить  if Щетчик не подходит так как должно соответствавать все 3 цифры серии.


заранее спасибо

 

Брать, по очереди, из "каталога" по три значения, сравнивать их, и так в цикле до конца "каталога".
При совпадении, открываем ордер и прерываем цикл.

 

Евгений, Вы сами сможете решить эту задачу, если чётко её сформулируете. Ведь из того, что Вы написали понять постановку задачи невозможно. Так что не верьте в чудо, что Вам подскажут, как решить некорректно поставленную задачу. Начните с чёткой постановки задачи.

 
Victor Ziborov:

Евгений, Вы сами сможете решить эту задачу, если чётко её сформулируете. Ведь из того, что Вы написали понять постановку задачи невозможно. Так что не верьте в чудо, что Вам подскажут, как решить некорректно поставленную задачу. Начните с чёткой постановки задачи.

Учюсь Учюсь и ещо раз Учюс. 
 
Yevheniy Kopanitskyy:
Учюсь Учюсь и ещо раз Учюс. 

ага - именно учюсь ... и ещо ... учюсь


 
Yevheniy Kopanitskyy:

Всем привет. Генерирую сигнал на вход по трём цифрам из так называемого каталога.

Пример

double   S1=44;                                 double   S1_1=44;             double      S1_1_1=43;
double   S2= 20.66666666666667;      double   S1_2   =   62;        double      S1_1_2   =   59;
double   S3= 20.2;                             double   S1_3   =   101;     double      S1_1_3   =   96;
double   S4= 58.5;                             double   S1_4   =   117;     double      S1_1_4   =   115;
double   S5= 33.66666666666666;      double   S1_5   =   101;     double      S1_1_5   =   98;


Сигналов намного больше. Далее генерирую открытие позиции 

Проблема в колличестве сигналов. Мне нужно  сократить  if Щетчик не подходит так как должно соответствавать все 3 цифры серии.


заранее спасибо

Если я правильно понял задачу, то можно так:

double S1 = 44, S1_1 = 44, S1_1_1 = 43;
double S2 = 20.66666666666667, S1_2 = 62, S1_1_2 =  59;
bool sb_1 = S1 == Level1 && S1_1 == one_BE && S1_1_1 == zero_BE;
bool sb_2 = S2 == Level1 && S1_2 == one_BE && S1_1_2 == zero_BE;
if(sb_1 || sb_2)

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

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