вопрос знатокам .... - страница 5

 
Rita:

Благодарю, Integer - я хочу только уточнить вот что.

Если в журнале (или лучше в комменте) при этом появится строка "Отсылаем ордер", - то это будет означить, что сигнал отправлен на сервер.

Но если, при этом, отклика нет, т.е. сервер и журнал "молчат" и позиция не открывается, то - что это означает? Что сигнал где-то застрял и не дошел?


Если Print() стоит непосредственно перед OrderSend(), то гарантировано, что если есть сообщение в журнале, то OrderSend() выполнялся. Отправлена заявка на сервер или нет - неизвестно, может в тот момент связи не было. 

Сразу после OrderSend() можно добавить:

int check=GetLastError();

if(check!=0) {

Print("Ошибка "+check);

}

Тогда получится узнать, что произошло. Коды ошибок здесь 

 
Спасибо.
 

Всем привет!

Подскажите пожалуйста. Как (и можно ли) вот эти четыре строки записать покороче:

 if (Trade41==true  && Trade42==true)  Trade_F4 = true;
 if (Trade41==false && Trade42==true)  Trade_F4 = false;
 if (Trade41==false && Trade42==false) Trade_F4 = false;
 if (Trade41==true  && Trade42==false) Trade_F4 = true;    
одной-двумя строками, используя || ?
 
leonid553:

Всем привет!

Подскажите пожалуйста. Как (и можно ли) вот эти четыре строки записать покороче:

одной-двумя строками?


Условия малость избыточны

Trade_F4 = Trade41;
 

Да, пожалуй!

Что-то. я немного намудрил.

 
Леонид, не понятно что это такое. Надо по значениям Trade41 и Trade42 получить значение Trade_F4, т.е. Trade_F4 зависит только от Trade41 и Trade42, и больше ни от чего не зависит. Или же это что-то типа фильтра, до выполнения этого кода Trade_F4 могло иметь какое-то значение, а в этом коде нужно ее переключить в случае выполнения условий Trade41 и Trade42.
 
leonid553:

Да, пожалуй!

Что-то. я немного намудрил.

странно, Вы же вроде позиционируете себя профессионалом...во у вас тут разборки...:-)))
 

Кто вам так сказал?

Я себя не позиционирую никем, - я вовсе не профессионал - а скромный любитель.

Какие разборки, вы о чем, гражданин?

========================

Я уже мозги вывернул наизнанку! Никак не соображу.

Есть две последние свечи 1 и 2-я.

//===========================================================
 if (FILTER_4 ) { //если выключатель 4-го фильтра включен

//------------------------------------------------------------------  
//если первая  свеча  более заданнаго значения, то вход запрещен 
if   ( MathAbs(iOpen(NULL ,0,1)-iClose(NULL ,0,1))<= Size_Limit1*Point)
      Trade41=true;   else Trade41=false;     
//-------------------------------------------------------------------
//если вторая  свеча более заданнаго значения, то вход запрещен      
if(  MathAbs(iOpen(NULL ,0,2)-iClose(NULL ,0,2))<= Size_Limit2*Point   )
      Trade42=true;   else Trade42=false;
//----------------------------------------------------------------          
                 }

Мне нужно запретить открытие позиций, если размер (close-open) 1-й свечи больше допустимого (на случай сильного убыточного движения).

Это я нетрудно.

А как мне задать вот такое условие:

Открытие позиций запрещено, - если первая свеча больше заданного размера (Trade41=false)

либо обе свечи - первая и вторая вместе - тоже каждая больше заданного размера ?

Сделал вот так:

if ( (Trade41 && Trade42) || !FILTER_4 ) {//фильтр 4

- но что - то оптимизация практически не реагирует на такое условие. И у меня закралось подозрение, что - что-то не так задано.

 
А пусть zoritch решит, он думает, что это и начинающий сможет.
 
   bool F4=true;
      if(FILTER_4){   
         if(MathAbs(iOpen(NULL,0,1)-iClose(NULL,0,1))>Size_Limit1*Point){
            F4=false;
         }
         else if(MathAbs(iOpen(NULL ,0,2)-iClose(NULL,0,2))>Size_Limit2*Point)
            F4=false;
         }
      }    

Может так: 

   bool F4=true;
      if(FILTER_4){   
         if(MathAbs(iOpen(NULL,0,1)-iClose(NULL,0,1))>Size_Limit1*Point){
            F4=false;
         }
         else if(MathAbs(iOpen(NULL ,0,2)-iClose(NULL,0,2))>Size_Limit2*Point)
            F4=false;
         }
      }    
Причина обращения: