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

 
AlexeyVik :

Benim yerel saatim sunucu saatinden 1 saat fazla.

Buna dayanarak, bu değerlerde sizi neyin şaşırttığını açıklayın?

Bu değerlerde utanç verici bir şey yok, orada her şey doğru, ama bu bununla ilgili değil.

Yerel saatiniz komisyoncu saatinden X saat daha fazlaysa, özellikle Cuma ile ilgili sorun alakalı değildir.

Ancak yerel bilgisayarınızdaki komisyoncu ile +1 değil, -1 saatlik farkınız olduğunu hayal edin.

Ve şu basit durum var:

 if (TimeDayOfWeek( TimeCurrent ()) == 5 && TimeCurrent () >= StringToTime ( "21:30" ))
   Print ( "Настала пятница и время больше чем  21:30 " );

Bu durumda:

1. Broker Cuma gününün ilk onayını alacaktır, örneğin 2014.11.07 00:00 saatine sahip olan bugünün onayını alacaktır.

2. 01/01/1970 00:00'dan dikkate alınan onay saatine, yani 2014/11/07 00: 00'a kadar geçen saniye sayısını alıyoruz

3. 01/01/1970 00:00'dan 11/06/2014 21:30'a kadar geçen saniye sayısını alıyoruz (bu tam olarak dünün tarihidir, çünkü o sırada yerel bilgisayarın saati alınır, dikkate alınan kene Cuma değil, Perşembe, yani 6. sayı ve daha kesin olmak gerekirse, 2014.11.06 23:00, 1 saatlik fark)

Voila, 2. noktadaki saniye sayısı 3. maddedekinden daha büyük.

Bu, kodda belirtilen baskının ilk Cuma kenesinde yürütüleceği anlamına gelir, ancak StringToTime() işlevi tarihi aracının sunucusundan aldıysa, o zaman her şey istendiği gibi çalışır, baskı ancak Cuma günü açılır. saat 21:30'u aşıyor

 
Leonid123456 :

Merhaba.

Böyle bir görev var. (tike vidalayamam)

Bekleyen bir sipariş tetiklenirse {o zaman...}

Siparişleri saymak için EA'da Terminal.mqh kullanıyorum.

Terminal // Mas_Tip[0] Satın Al'ı aç

// Buy emirlerinin sayısı 1 artarsa...

if (Mas_Tip[0]+1)

{

işlev

}

Her şey çalışıyor. Ama sonraki her kene üzerinde çalışır.

Bu davayı işaretlemek için nasıl eklenir? Ardından, önceki tik ve mevcut tik üzerindeki değeri karşılaştırın.

Seçtiğiniz satırı insan dilimize çevirebilir misiniz? Bu satırı uyguladığınızda ne olmalı ve ne olacak...
 
AlexeyVik :
Seçtiğiniz satırı insan dilimize çevirebilir misiniz? Bu satırı uyguladığınızda ne olmalı ve ne olacak...

// Buy emirlerinin sayısı 1 artarsa...

{

örneğin bir fonksiyon diğer emirleri açar veya kapatır...

}

Böyle olmak zorunda değil.. if (Mas_Tip[0]+1) yapılabilir if (Mas_Tip[0] > Mas_Tip[1]) // Cell'den daha fazla Buy emri varsa. Sonra ertelenmişi açın, örneğin ...

Gerçek şu ki, bir sonraki tikte bu veriler tekrar doğrudur.

 
Leonid123456 :

// Buy emirlerinin sayısı 1 artarsa...

{

örneğin bir fonksiyon diğer emirleri açar veya kapatır...

}

if (Mas_Tip[0]+1)

parantez içinde, bool olması gerekiyorsa, yani doğru veya yanlış.

Ve burada, açıkçası, int. Bu bir tam sayıdır.

Tabii ki doğru 1 ve yanlış 0 (yanılmıyorsam). Ama yine de doğru değil. Mas_Tip[0] ne döndürür?

 
ikatsko :

if (Mas_Tip[0]+1)

parantez içinde, bool olması gerekiyorsa, yani doğru veya yanlış.

Ve burada, açıkçası, int. Bu bir tam sayıdır.

Tabii ki doğru 1 ve yanlış 0 (yanılmıyorsam). Ama yine de doğru değil. Mas_Tip[0] ne döndürür?

açık Satın alma siparişlerinin sayısı.

 
Leonid123456 :

// Buy emirlerinin sayısı 1 artarsa...

{

örneğin bir fonksiyon diğer emirleri açar veya kapatır...

}

Hayır, istediğin bu. Ve aslında değil. Mas_Tip[0] dizisinde bir değer var ve sıfırdan büyükse if(Mas_Tip[0]) koşulu zaten doğru olacaktır. Ve bu değere 1 eklerseniz, bu her zaman doğru olacaktır çünkü açık emirlerin sayısı -1'e eşit olamaz.

 
AlexeyVik :

Hayır, istediğin bu. Ve aslında değil. Mas_Tip[0] dizisinde bir değer var ve sıfırdan büyükse if(Mas_Tip[0]) koşulu zaten doğru olacaktır. Ve bu değere 1 eklerseniz, bu her zaman doğru olacaktır çünkü açık emirlerin sayısı -1'e eşit olamaz.


öyle yapmaya çalıştı

   bool  Fact_1 = false ;                    // Глобальная перемен.
       bool  Fact_2 = false ;                    // Глобальная перемен.
//--------------------------------------------------------------------
int start ()                                     // Спец. функция start
  {
                          // Локальная перемен.
   if ( Fact_2 == true )                            //Если сообщение уже..
      return ;                                   //..было, то выходим
 
   if ( Mas_Tip[0]+1 )
      Fact_1 = true ;                            // Произошло событие 1
 
   
 
   return ;                                      // Выход из start()
  }
//--------------------------------------------------------------------
                               // Пользовательс. ф-ия
  {
             // Сообщение
   Fact_2 = true ;                               // Произошло событие 2
   return ;                                      // Выход из польз.ф-ии

}

Bir kere çıkıyor.

 
ikatsko :

if (Mas_Tip[0]+1)

parantez içinde, bool olması gerekiyorsa, yani doğru veya yanlış.

Ve burada, açıkçası, int. Bu bir tam sayıdır.

Tabii ki doğru 1 ve yanlış 0 (yanılmıyorsam). Ama yine de doğru değil. Mas_Tip[0] ne döndürür?

false 0'dır ve 0 değilse true

Bu satırı dene

 bool b;
b = 7.40 ;
if (b) Print ( "b = " , b);
Derleyici olası bir hassasiyet kaybı konusunda uyarabilir, ancak işe yarayacaktır.
 

Mas_Tip[0] bırakabilirsiniz

Bir etkinlik nasıl alınır. Satın açıldı.

 
Leonid123456 :

Mas_Tip[0] bırakabilirsiniz

Bir etkinlik nasıl alınır. Satın açıldı.

eski bais sayısını bir değişkende saklayın ve bunu bai sayım işlevi tarafından döndürülen mevcut değerle karşılaştırın, başka nasıl?
Neden: