Forumu kirletmemek için herhangi bir acemi sorusu. Profesyonel, kaçırmayın. Sensiz, hiçbir yerde - 6. - sayfa 236

 
int start(){
 int a= 0 ;
 if ( 5 > 3 )
 if ( 5 > 3 )
 if ( 5 > 3 ){ Alert ( "AAAAAAAAAAAAAAAAAAAAAAA" ); a= 5 ;}
 else Alert ( "a=" , a);
 else Alert ( "a=" , a+ 1 );
 else Alert ( "a=" , a+ 2 );
}

İlk koşul karşılanmazsa, bir uyarımız var: "a=2"

İkinci koşul karşılanmazsa, bir uyarımız var: "а=1"

Üçüncü koşul karşılanmazsa, bir uyarımız var: "а=0"

Hmm, ilk başta beklenmedik bir şekilde beklenmedikti))

 
ALXIMIKS :

ne de bu komut dosyasından herhangi bir Uyarı. Else, " if ( 5 > 3 ){ Alert ( "AAAAAAAAAAAAAAAAAAAAA" ); a= 5 ;} " koşulunu ifade eder.

Onaylar:

Uyarımız var: "а=0".

Sonuç, koşul hatası işlemenin yalnızca son koşul için, belirli bir dizi koşul numaralandırılırken küme parantezleri "{" kullanılmadığı takdirde mümkün olmasıdır.

Her şey doğru, mantık çalışıyor, ancak her şeyi tek sıraya koymanıza gerek yok:

 int start(){
 int a= 0 ;
 if ( 3 > 3 )
     if ( 5 > 3 )
       if ( 5 > 3 ){ Alert ( "AAAAAAAAAAAAAAAAAAAAAAA" ); a= 5 ;}
       else Alert ( "a=" , a);
}
o zaman daha net olur. Doğruysa küme parantezleri gereklidir: {operator1;operator2;operatorN}. Yalnızca bir operatör varsa, küme parantezleri atlanabilir ve operatör de bir koşuldur, sonra her şey tekrarlanır.
 
artmedia70 :

Yani, mantıksal dalları düzenlemek için parantezlere ihtiyaç vardır. Onlar olmadan, ilk koşul esastır. Eğer doğru değilse, o zaman geri kalan koşullar yerine getirilmeyecektir.

Burada anlamaya çalışın:

Ve sonra, başka ne anlama geldiğini anlayın:


else " if (b>c)" anlamına gelir
 

Merhaba.

 if (DayOfWeek()==DayOfWeekIf
  && TimeCurrent ()>=StrToTime(TimeToStr( TimeCurrent (), TIME_DATE)+ " " +TimeTradeIf)
  && TimeCurrent ()<StrToTime(TimeToStr( TimeCurrent (), TIME_DATE)+ " " +TimeTradeIf)+Duration)
   {
     if   (iClose( "XAUUSD" , PERIOD_H1 , 0 )-iOpen( "XAUUSD" , PERIOD_H1 , 0 )>= 0 )
    Sell = true ;
     if   (iOpen( "XAUUSD" , PERIOD_H1 , 0 )-iClose( "XAUUSD" , PERIOD_H1 , 0 )> 0 )
    Sell = false ;
   }
   if (DayOfWeek()==DayOfWeekOpen
  && TimeCurrent ()>=StrToTime(TimeToStr( TimeCurrent (), TIME_DATE)+ " " +TimeTradeOpen)
  && TimeCurrent ()<StrToTime(TimeToStr( TimeCurrent (), TIME_DATE)+ " " +TimeTradeOpen)+Duration)
  {...

Sonuç şudur: falan filan günde falan filan zamanda mum boğa ise, o zaman satmak = doğru, eğer aşağı yönlü ise, o zaman yanlış. Sonra, filan günde, filan zamanda satarız=doğruysa satarız, tersiyse alırız.

Fakat nedense durum çalışmaz, tüm işlemler satışa açılır. M1 üzerinde test ediyorum.

 
ALXIMIKS :

else " if (b>c)" anlamına gelir

Doğru şekilde.

 if (a>b)
   if (b>c) 
      Alert ( " условие if (a>b && b>c) выполнено " );
   else if (d>e) 
      if (e>f) 
         Alert ( " условие if (d>e && e>f) выполнено" );

Ve şimdi kaşlı ayraçlar olmadan mantık kurmaya çalışın:

(a>b) ise, satırlar yürütülür if (b>c) Alert() ;

Aksi takdirde, if (d>e), o zaman satırlar if (e>f) Alert();

Başka bir deyişle: else öğesinin ilk koşula atıfta bulunmasını sağlayın. Kıvırcık parantez yok.

 
Antonius :

Merhaba.

Sonuç şudur: falan filan günde falan filan zamanda mum boğa ise, o zaman sat = doğru, eğer aşağı yönlü ise, o zaman yanlış. Sonra filan günde filan zamanda satarız=doğruysa satarız, tersiyse alırız.

Fakat nedense durum çalışmaz, tüm işlemler satışa açılır. M1 üzerinde test ediyorum.

Köpeğin kodun bu bölümünü karıştırdığından emin misin? Gösterdiklerinden sonuç çıkarmak zor - birçok bilinmeyen değişken var ve keşfin kendisi görünmüyor.

Sebebi kendiniz bulmak için değişkenlerin değerlerini yazdırın veya yorumlayın. Ardından değerlerini istediğiniz zaman görebilirsiniz.

 
Antonius :

Merhaba.

Sonuç şudur: falan filan günde falan filan zamanda mum boğa ise, o zaman sat = doğru, eğer aşağı yönlü ise, o zaman yanlış. Sonra, filan günde, filan zamanda satarız=doğruysa satarız, tersiyse alırız.

Fakat nedense durum çalışmaz, tüm işlemler satışa açılır. M1 üzerinde test ediyorum.

Ve böylece karşılaştırabilirsiniz? Sağ taraftaki bir şeyi sevmiyorum (aynı yerde, tür dönüştürme bir dizedeki her şeyi " yyyy.mm.dd " TimeTradeIf"" değerine sahip olarak puanlayacaktır) ???
 TimeCurrent ()>=StrToTime(TimeToStr( TimeCurrent (), TIME_DATE)+ " " +TimeTradeIf
 
ALXIMIKS :
Ve böylece karşılaştırabilirsiniz? Sağ taraftaki bir şeyi sevmiyorum (aynı yerde, tür dönüştürme bir dizedeki her şeyi " yyyy.mm.dd " TimeTradeIf"" değerine sahip olarak puanlayacaktır) ???

Hesaplanan değere TimeTradeIf değerinin eklendiği görülmektedir. Size tam olarak neyin içerdiğini kim söyledi ve gösterdi? Zaman TicaretiEğer?

Kodunda bir sorun aramak için kişiye bilinmeyen ve anlaşılmaz birçok değer olduğunu yazdım.

 
artmedia70 :

Doğru şekilde.

Ve şimdi kaşlı ayraçlar olmadan mantık kurmaya çalışın:

(a>b) ise satırlar if (b>c) Alert();

Aksi takdirde, if (d>e), o zaman satırlar if (e>f) Alert();

Başka bir deyişle: else öğesinin ilk koşula atıfta bulunmasını sağlayın. Kıvırcık parantez yok.


 if (a>b)
   if (b>c) Alert ( " условие if (a>b && b>c) выполнено " );
   else ; 
else 
   if (d>e) 
       if (e>f) Alert ( " условие if (d>e && e>f) выполнено" );

Taki yaptı, eğer tasarım yoksa mantık okumak için çok uygun değil ve derleyici azarlıyor " ';' - noktalı virgül beklenmedik "

ama yine de "(d>e && e>f) koşulu karşılanırsa" uyarısı a>b başarısız olursa , söner. (görevi öyle anladıysam).


 
Antonius :

Merhaba.

Sonuç şudur: falan filan günde falan filan zamanda mum boğa ise, o zaman satmak = doğru, eğer aşağı yönlü ise, o zaman yanlış. O halde, filan günde, filan zamanda, sat=doğruysa satar, tersiyse alırız.

Fakat nedense durum çalışmaz, tüm işlemler satışa açılır. M1 üzerinde test ediyorum.


Bana göre hesap sıfır barın başında, açık hala kapanışa eşitken ve tabii aradaki fark 0 iken başlıyor. Bir önceki barı kontrol etmeniz gerekiyor.
Neden: