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

 
evillive :
Bai'nin eski sayısını hatırlayın ve mevcut olanla karşılaştırın, başka nasıl?
Bu tam olarak ne işe yaramaz
 
Leonid123456 :
işte bu işe yaramaz
bir tamsayı değişkeni oluşturun, satın alma sayısını atayın ve daha sonra tekrar satın almaları saymak ve o değişkenin değeriyle karşılaştırmak gerektiğinde işe yaramaz mı?
 
evillive :
bir tamsayı değişkeni oluşturun, satın alma sayısını atayın ve daha sonra tekrar satın almaları saymak ve o değişkenin değeriyle karşılaştırmak gerektiğinde işe yaramaz mı?
Teşekkür ederim!
 
tuner :

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 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:

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

Evet... Sorunu hemen anlamadım. Her zaman bir sunucudan çok yerel bir tane var ve böyle bir sorunla karşılaşmadım. Tek çıkış yolu, günü hesaba katmak ve kısaltılmış zaman gösterimini kullanmamaktır.
 
AlexeyVik :
Evet... Sorunu hemen anlamadım. Her zaman bir sunucudan çok yerel bir tane var ve böyle bir sorunla karşılaşmadım. Tek çıkış yolu, günü hesaba katmak ve kısaltılmış zaman gösterimini kullanmamaktır.

peki, evet, TimeCurrent () öğesinden çıkarılan tarihle birlikte doğru zamanı işleve kaydırma seçeneği olarak, bu durumda bir sorun görünmemelidir.

Bu arada, yerel bilgisayarımın zamanı her zaman komisyoncu zamanından daha uzundur, ancak yine de, bu sorun geçen Cuma günü iki farklı komisyoncuda (bir demo, ikinci gerçek) eşzamanlı olarak yukarıda açıklanan şekilde kendini gösterdi. Bunun neden olduğu hala bir sır. Ancak, kod zaten bir başkasıyla değiştirildi, bu nedenle bu tür sıkıntılar artık olmayacak.

 
tuner :

peki, evet, TimeCurrent () öğesinden çıkarılan tarihle birlikte doğru zamanı işleve kaydırma seçeneği olarak, bu durumda bir sorun görünmemelidir.

Bu arada, yerel bilgisayarımın zamanı her zaman komisyoncu zamanından daha uzundur, ancak yine de, bu sorun geçen Cuma günü iki farklı komisyoncuda (bir demo, ikinci gerçek) eşzamanlı olarak yukarıda açıklanan şekilde kendini gösterdi. Bunun neden olduğu hala bir sır. Ancak, kod zaten bir başkasıyla değiştirildi, bu nedenle bu tür sıkıntılar artık olmayacak.

Evet, birkaç seçenek var. Örneğin, Cuma gününün başlangıcını sunucu saatine göre değil yerel saate göre kontrol edin. Doğru, bu durumda, bilgisayarın zamanı yanlış giderse, o zaman çok fazla sorun yaşayabilirsiniz.
 
evillive :
bir tamsayı değişkeni oluşturun, satın alma sayısını atayın ve daha sonra tekrar satın almaları saymak ve o değişkenin değeriyle karşılaştırmak gerektiğinde işe yaramaz mı?

Bir kod örneği verebilir misiniz?

Sonuçta, karşılaştırmadan sonra değişkeni yeniden kaydetmeniz gerekir, aksi takdirde kod aynı şekilde sonsuza kadar yürütülür. (diyelim ki 6 oldu ve 7 oldu, karşılaştırmadan sonra 7 olan değişkene girmek gerekiyor)

 
Leonid123456 :

Bir kod örneği verebilir misiniz?

Sonuçta, karşılaştırmadan sonra değişkeni yeniden kaydetmeniz gerekir, aksi takdirde kod aynı şekilde sonsuza kadar yürütülür. (diyelim ki 6 oldu ve 7 oldu, karşılaştırmadan sonra 7 olan değişkene girmek gerekiyor)


Endişelenme, işte kullandığım Kim'in işlevi ve tüm yapılarda çalışıyor:

 //+----------------------------------------------------------------------------+
//|  Автор    : Ким Игорь В. aka KimIV,  http://www.kimiv.ru                   |
//+----------------------------------------------------------------------------+
//|  Версия   : 19.02.2008                                                     |
//|  Описание : Возвращает количество позиций.                                 |
//+----------------------------------------------------------------------------+
int NumberOfPositions( string sy= "" , int op=- 1 , int mn=- 1 ) {
   int i, k= OrdersTotal (), kp= 0 ;
   if (sy== "0" ) sy= Symbol ();
   for (i= 0 ; i<k; i++) {
     if ( OrderSelect (i, SELECT_BY_POS, MODE_TRADES)) {
       if (OrderSymbol()==sy || sy== "" ) {
         if (OrderType()==OP_BUY || OrderType()==OP_SELL) {
           if (op< 0 || OrderType()==op) {
             if (mn< 0 || OrderMagicNumber()==mn) kp++;
  } } } } }
   return (kp);
}
//+----------------------------------------------------------------------------+

Ve bu ek olarak:

   int BuyPos = NumberOfPositions( Symbol (),OP_BUY, Magic);
   int SellPos = NumberOfPositions( Symbol (),OP_SELL,Magic);

Yalnızca görevlerinize göre kontrol etmeniz gerekir:

 if (BuyPos >= n) 
 
borilunad :

Endişelenme, işte kullandığım Kim'in işlevi ve tüm yapılarda çalışıyor:

Ve bu ek olarak:

Yalnızca görevlerinize göre kontrol etmeniz gerekir:

Çok teşekkürler!
 
borilunad :

Endişelenme, işte kullandığım Kim'in işlevi ve tüm yapılarda çalışıyor:

Ve bu ek olarak:

Yalnızca görevlerinize göre kontrol etmeniz gerekir:

Bağlı. durmadan çalışıyor...

Bu makaledeki son yöntemi kullanarak sorunu çözmeyi başardım https://www.mql5.com/ru/articles/1399