[ARŞİV] Forumu kirletmemek için herhangi bir acemi sorusu. Profesyonel, kaçırmayın. Sensiz hiçbir yerde - 3. - sayfa 240

 
a1 = SiparişlerToplam();
için (i = 0; i < a1; i++)
{
OrderSelect(i,SELECT_BY_POS);
OrderDelete(OrderTicket());

}

İşte bekleyen tüm siparişleri silmesi gereken basit bir komut dosyası , ancak siparişlerin tam olarak yarısını siliyor... ???

 
        
FAQ 04.03 . 2011 12 : 56 

Подскажите, как найти цену последнего фрактала?


sergeev: Для этого можно воспользоваться индикатором iFractals . Он возвращает значение 0 , если на баре нет фрактала и значение цены фрактала если он есть. Фракталы делятся на верхние и нижние. Если вам надо получить верхние, то в функцию iFractals передается MODE_UPPER, а для нижних - MODE_LOWER. Поэтому для поиска фрактала надо пройти в цикле по барам и первое не 0 значение и будет искомым фракталом.

пример:

double frac;
for ( int i= 3 ; i< Bars ; i++)
{
   frac= iFractals ( Symbol (), Period (), MODE_UPPER, i); if (frac> 0 ) break ;
   frac= iFractals ( Symbol (), Period (), MODE_LOWER, i); if (frac> 0 ) break ;
}
if (frac> 0 ) Print ( "Цена последнего фрактала: " , frac);


пример организации отдельной функции:

//---------------------------------------------------------------   GetLastFrac
double GetLastFrac( string smb, int tf, int iB)
{
   int n= iBars (smb, tf);   double frac;
   for ( int i=iB; i<n; i++)
   {
      frac= iFractals (smb, tf, MODE_UPPER, i); if (frac> 0 ) return (frac);
      frac= iFractals (smb, tf, MODE_LOWER, i); if (frac> 0 ) return (frac);
   }
   return ( 0 );
}
.....
Print ( "Последний фрактал: " , GetLastFrac( "EURUSD" , 60 , 3 ));
SSS'deydi, ilk kez çevirdim ve fark etmedim.
 
Neo333 :
a1 = SiparişlerToplam();
için (i = 0; i < a1 ; i++)
{
OrderSelect(i ,SELECT_BY_POS);
OrderDelete(OrderTicket());

}

İşte bekleyen tüm siparişleri silmesi gereken, ancak siparişlerin tam olarak yarısını silen basit bir komut dosyası... ???

Diyelim ki 10 sipariş vardı.

Burada yarısını kaldırdınız (sıfırdan beşinciye)

şimdi altıncıyı seçmek istiyorsun.. ve sadece 5 tane kaldı.Bir hata ve silinecek bir şey yok. geri kalanı ile aynı

 
Neo333 :
a1 = SiparişlerToplam();
için (i = 0; i < a1; i++)
{
OrderSelect(i,SELECT_BY_POS);
OrderDelete(OrderTicket());

}

İşte bekleyen tüm siparişleri silmesi gereken, ancak siparişlerin tam olarak yarısını silen basit bir komut dosyası... ???

Sipariş arama yönünü değiştirin:

için (i=a1-1; i>=0; i--) {....}

 
artmedia70 :

Sipariş arama yönünü değiştirin:

için (i=a1-1; i>=0; i--) {....}

Çalışıyor... ama mantık nedir - i++ veya i-- arasındaki fark nedir?
 
Zhunko :

1. Kontrol ettiniz mi?

Rapor ediyorum: yardımcı oldu, ancak sorunlu görünüyor.

İlk terminal. Tüm çizelgeler ve semboller kaldırıldı, 7 dolar sembolleri eklendi, çizelgeler eklendi. Hepsi yeniden başlatma ile.

Ekranın 3/4'üne kadar gerilmiş tik. İlk 6'yı dolduran 7., 5 hücre üzerinde durdu.

Bir sonraki yeniden başlatmadan sonra, hepsi tamamen dolmaya başlamadı, dağılım neredeyse rastgele - listedeki sembol ne kadar düşükse, o kadar az hücre alır.

İkinci terminal. Üzerinde 7 yen çifti vardı. Fazladan karakterleri sildim, yeniden başlattım - çok daha derinleri doldurmaya başladılar, ancak doldurma derinliğinin rastgele dağıldığı ortaya çıktı.

Bunun küçük önbellek nedeniyle bir hata olduğuna inanma eğilimindeyim - bu herkes için yeterli değil ve dağıtım ya rastgele ya da "ilk kim, bu spor ayakkabılar".

Her durumda, bir para birimi için yöntem işe yarar. Özet: tarif aslında :) Teşekkürler.

 
Neo333 :
Çalışıyor... ama mantık nedir - i++ veya i-- arasındaki fark nedir?

Nedenini hemen yazmışsın. Bu, i++ veya i-- ile ilgili değil, ancak siparişleri silmeye hangi sondan başlayacağınızla ilgili - listenin başından (sizin gibi) veya listenin sonundan (bu durumda gerektiği gibi)

Emirler silindiğinde ne olduğunu anlamak için emirlerin bir dizide nasıl saklandığını bilmeniz ve anlamanız gerekir.

İlk sırayı sildiğinizde (i=0 ile indekslenir), sonra tüm emirlerin indeksleri dizide kaydırılır - ilk olan sıfır olur, ikincisi birinci olur, üçüncüsü ikinci olur, ve benzeri. Bu nedenle tüm emirler tamamen silinmez - sonuçta, i 6'ya eşit olduğunda, altıncı sıra emirler dizisindeki beşinci pozisyona kaydırılır ve emir sadece indeks 6'da seçilmez.

Listenin sonundan siparişleri kaldırdığınızda, herhangi bir kayma olmaz - ilk sipariş listede sıfır konumuna sahip olduğu için onu almaya devam eder. 10. sıra 9. sıraya sahipti, silindi, ardından listede 8. sıraya sahip olan 9. sıra silindi vb. sipariş dizisinde sıfır konumu olan ilk sıraya.

 
Neo333 :
Çalışıyor... ama mantık nedir - i++ veya i-- arasındaki fark nedir?
kullanıcı zaten size cevap verdi
152
bu soruya ilunga
 
nadya :
kullanıcı zaten size cevap verdi
152
bu soruya ilunga
Bir şey bana çiğnemek ve daha ayrıntılı bir cevap vermek gerektiğini söyledi ... :)
 
Zhunko :
... grafiği çevrimdışı aç.
Grafiklerin geri kalanı tıklıyor. Bir seçenek değil.