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

 

Merhaba! 3 barın (3,2,1) açılış fiyatlarını karşılaştırıyorum. Fiyatların eşit olduğu bir barı nasıl saymazsınız?

 for ( x=< 3 ;x--)
{
 if ( Open[x]==Open[x] )
  {
    x+ 1 ;
   }
   if ( Open[x]<Open[x] )
   {
   ,,,
   }
 
skyjet :

Merhaba! 3 barın (3,2,1) açılış fiyatlarını karşılaştırıyorum. Fiyatların eşit olduğu bir barı nasıl saymazsınız?

 for ( int x= 1 ; x< 3 ; x++)
{
 if (Open[x]==Open[x+ 1 ]) continue ;
 if (Open[x]<Open[x+ 1 ])
   {
   //--- action
   }
}
 
Merhaba, yardım edin. H1'de oynuyorum, H4 göstergem var. Doğru gösteriyor. Ancak, örneğin yılın başında görselleştirme ile bir test cihazında çalıştırırsanız, şu anda piyasada olan güncel bilgileri gösterir. Genel olarak, test cihazında çalışmaz. Nasıl çalıştırılır. Veya çözüldüğü konuyu atın.
 
artmedia70 :
Peki, ne kadar boş? Hiç çıktı vermiyor mu, yoksa dizi hücrelerinde hala sıfırlar var mı?


Hiçbir şey..

Objects'e gitseniz bile, oklar ve trend çizgileri dışında hiçbir nesne yoktur.

artmedia70 :

Döngünün gövdesinde neden i'yi artırıyorsunuz?

ve bu: i<=p, neden "veya eşit"?


Zaten yorgunluktan bayıldım. Bu şekilde düzeltildi:

 for (i= 0 ; i<p; i++)
      {
          pr( "a[i][1] = " + a[i][ 1 ]);
      }

Bu kod parçasının kendisi bir fonksiyondadır:

 //+-------------------------------------------------------------------------------------+
//| Закрытие ордеров, отсортированных по размеру лотов                                  |
//+-------------------------------------------------------------------------------------+
void ClosePosBySortLots()
{
   double a[][ 2 ];
   int p = 0 ;
   
   for ( int i= OrdersTotal ()- 1 ; i>= 0 ; i--)
   {
       if (! OrderSelect (i, SELECT_BY_POS, MODE_TRADES)) continue ;
       if (OrderMagicNumber() != i_magic) continue ;
       if (OrderSymbol() != Symbol ()) continue ;
       if (OrderType() < 2 )
      {
         p++;
         ArrayResize (a, p);
         a[p- 1 ][ 0 ] = OrderLots();
         a[p- 1 ][ 1 ] = OrderTicket();
      }
   }
//   pr ("ClosePosBySortLots(): " + "p = " + p);
   if (p > 0 )
   {
       ArraySort (a, WHOLE_ARRAY , 0 , MODE_DESCEND);
      
       for (i= 0 ; i<p; i++)
      {
          pr( "a[i][1] = " + a[i][ 1 ]);
      }
      
       for (i= 0 ; i<p; i++)
      {
         if ( OrderSelect (a[i][ 1 ], SELECT_BY_TICKET, MODE_TRADES))
         {
             if (OrderCloseTime() == 0 ) ClosePosBySelect();
         }
      }
   }
}
 
hoz :


Hiçbir şey..

Objects'e gitseniz bile, oklar ve trend çizgileri dışında hiçbir nesne yoktur.


Zaten yorgunluktan bayıldım. Bu şekilde düzeltildi:

Bu kod parçasının kendisi bir fonksiyondadır:

Önce ve sonra

 if (p > 0 )

p değerini yazdır

Hata arama sırasını sizin için yazmam mı gerekiyor?

 
artmedia70 :

Önce ve sonra

p değerini yazdır

Hata arama sırasını sizin için yazmam mı gerekiyor?



Aslında evet. Genel olarak durum şu:

 void ClosePosBySortLots()
{
   double a[][ 2 ];
   int p = 0 ;
   
   for ( int i= OrdersTotal ()- 1 ; i>= 0 ; i--)
   {
       if (! OrderSelect (i, SELECT_BY_POS, MODE_TRADES)) continue ;
       if (OrderMagicNumber() != i_magic) continue ;
       if (OrderSymbol() != Symbol ()) continue ;
       if (OrderType() < 2 )
      {
         p++;
         ArrayResize (a, p);
         a[p- 1 ][ 0 ] = OrderLots();
         a[p- 1 ][ 1 ] = OrderTicket();
      }
   }
//   pr ("ClosePosBySortLots(): " + "p = " + p);
   pr( "___p = " + p);   // Значение кол-ва позиций до if..
   
   if (p > 0 )
   {
      pr( "p = " + p);   // Значение кол-ва позиций после if..
      
       ArraySort (a, WHOLE_ARRAY , 0 , MODE_DESCEND);
      
       for (i= 0 ; i<p; i++)
      {
          pr( "a[i][1] = " + a[i][ 1 ]);
      }
      
       for (i= 0 ; i<p; i++)
      {
         if ( OrderSelect (a[i][ 1 ], SELECT_BY_TICKET, MODE_TRADES))
         {
             if (OrderCloseTime() == 0 ) ClosePosBySelect();
         }
      }
   }
}

Bu şekilde çalıştırıyorum, grafiğin bu bölümünde de bir şey vermiyor. Diğer yerlerde 0 basmasına rağmen, bir pozisyon açıldığında hemen kapandı. Onlar. bu alanda, özellikle Kosyakova, sanki ...

İşte ekran görüntüsü:

Tper tüm bu değerleri yazdır?

p++;
ArrayResize (a, p);
a[p- 1 ][ 0 ] = OrderLots();
a[p- 1 ][ 1 ] = OrderTicket();

Çok daha ileride gibi görünüyor. Sonuçta, her şey açıktır ve genellikle orada yazılır.

 
hoz :


Aslında evet. Genel olarak durum şu:

Bu şekilde çalıştırıyorum, grafiğin bu bölümünde de bir şey vermiyor. Diğer yerlerde 0 basmasına rağmen, bir pozisyon açıldığında hemen kapandı. Onlar. bu alanda, özellikle Kosyakova, sanki ...

İşte ekran görüntüsü:

Tper tüm bu değerleri yazdır?

Çok daha ileride gibi görünüyor. Sonuçta, her şey açıktır ve genellikle orada yazılır.

Siparişlerle ilgili verilerle "doldurulduktan" hemen sonra dizinizde ne olduğunu anlıyor ve görüyor musunuz? Numara. Bilmiyorsun, sadece tahmin ediyorsun. Dizinin tüm hücrelerinin içeriğini, pr()'nizi değil, standart Print()'i UNPRINT yapın ve test günlüğüne bakma zahmetine girin ve dizinizde, her bir hücresinde, hemen ardından ne olduğunu görün. dolu. İşte o zaman, dizinin içeriğinin, içeriği hakkındaki fikirlerinize karşılık geldiğinden emin olduğunuzda, ardından pr () ile yazdırın. Size aynı sonuçları vermezse - içinde, pr'nizde (), veriler eşleşirse, bir sonraki aşamada hatayı daha fazla arayın.
 
Lot büyüklüğü ile ilgili logda hatalar var ( OrderSend hatası 4051). Bu sorunu çözeceğim. O yardımcı olabilir. Ve sonra izleyeceğiz.
 
hoz :
Günlük, parti boyutuyla ilgili hatalar içeriyor (OrderSend hatası 4051). Bu sorunu çözeceğim. O yardımcı olabilir. Ve sonra izleyeceğiz.

Tanklara bakın, yeniden yükleyin, belki yardımcı olur ... :-)

not Şu an iyiyim.

 
Böyle bir sorun - boyutu değişebilen tek boyutlu bir dizi var.
Bir döngüde birbirleriyle olası tüm dizi öğeleri kombinasyonları nasıl yinelenir?
Elemanların sırası önemli değildir, yani. 123==213==321..

4 elemanlı bir dizi için bir örnek:
[ 4 ] <=> { 1 2 3 4 }

1 , 12 , 13 , 14 , 123 , 124 , 134 , 1234 , 
2 , 23 , 24 , 234 , 
3 , 34 ,
4