Operacje logiczne

O jezykach programowania w platformach i nie tylko.
Krzysztof z Bydzi
Bywalec
Bywalec
Posty: 12
Rejestracja: 24 sty 2013, 15:24

Operacje logiczne

Nieprzeczytany post autor: Krzysztof z Bydzi » 12 sty 2019, 22:30

Witam.
Poproszę o pomoc. Chodzi mi tylko o warunek logiczny "lub". Jak go poprawnie zastosować? Jak zrobiłem tak jak poniżej to wyskakuje mi błąd "check operator precedence, use parentheses to clarify precedence" .

Kod: Zaznacz cały

if (Hour()<9&&0<Close[3]-Open[3]<0.00025||0<Open[3]-Close[3]<0.00025)
 {
   //--- get minimum stop level
   double minstoplevel=MarketInfo(Symbol(),MODE_ASK);
   Print("Minimum Stop Level=",minstoplevel," points");
   double price=Ask;
//--- calculated SL and TP prices must be normalized
   double stoploss=NormalizeDouble(Ask-50*Point,Digits);
   double takeprofit=NormalizeDouble(Ask+50*Point,Digits);
//--- place market order to buy 1 lot
   int zlecenie=OrderSend(Symbol(),OP_BUYSTOP,1,price,3,stoploss,takeprofit,"Moje zlecenie",0,0,clrGreen);
   if(zlecenie<0)
     {
      Print("OrderSend failed with error #",GetLastError());
     }
   else
      Print("OrderSend placed successfully");
  }

JAREK67
Maniak
Maniak
Posty: 2145
Rejestracja: 13 lip 2006, 11:21

Re: Operacje logiczne

Nieprzeczytany post autor: JAREK67 » 12 sty 2019, 23:11

Krzysztof z Bydzi pisze:Witam.
Poproszę o pomoc. Chodzi mi tylko o warunek logiczny "lub". Jak go poprawnie zastosować? Jak zrobiłem tak jak poniżej to wyskakuje mi błąd "check operator precedence, use parentheses to clarify precedence" .

Kod: Zaznacz cały

if (Hour()<9&&0<Close[3]-Open[3]<0.00025||0<Open[3]-Close[3]<0.00025)
 {
   //--- get minimum stop level
   double minstoplevel=MarketInfo(Symbol(),MODE_ASK);
   Print("Minimum Stop Level=",minstoplevel," points");
   double price=Ask;
//--- calculated SL and TP prices must be normalized
   double stoploss=NormalizeDouble(Ask-50*Point,Digits);
   double takeprofit=NormalizeDouble(Ask+50*Point,Digits);
//--- place market order to buy 1 lot
   int zlecenie=OrderSend(Symbol(),OP_BUYSTOP,1,price,3,stoploss,takeprofit,"Moje zlecenie",0,0,clrGreen);
   if(zlecenie<0)
     {
      Print("OrderSend failed with error #",GetLastError());
     }
   else
      Print("OrderSend placed successfully");
  }
napisz słowami jakie są warunki ?

Awatar użytkownika
personov
Pasjonat
Pasjonat
Posty: 1486
Rejestracja: 09 sie 2009, 21:27
Lokalizacja: Głogów

Re: Operacje logiczne

Nieprzeczytany post autor: personov » 13 sty 2019, 00:21

Jeśli warunków jest więcej obok znaku || to musisz oddzielić je nawiasem np. :

Kod: Zaznacz cały

if ((Hour()<9&&0<Close[3]-Open[3]<0.00025)||(0<Open[3]-Close[3]<0.00025))
poza tym nie można zapisać tego w taki sposób :

Kod: Zaznacz cały

0<Close[3]-Open[3]<0.00025
tylko tak :

Kod: Zaznacz cały

Close[3]-Open[3]>0&&Close[3]-Open[3]<0.00025
Solą życia jest kasa.

Krzysztof z Bydzi
Bywalec
Bywalec
Posty: 12
Rejestracja: 24 sty 2013, 15:24

Re: Operacje logiczne

Nieprzeczytany post autor: Krzysztof z Bydzi » 16 sty 2019, 22:51

Dziękuję. Wpisałem w nawiasy.

ODPOWIEDZ