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

 
Fox_RM :

Pratikte hiçbir fark yoktur, sadece A ve B kontrol noktalarını elde etmek için biraz farklı bir süreç olacaktır. Dizilerle zaten denedim.

Ardından, A ve B arasında, çubukları numaralandırarak da bir döngü düzenlemeniz gerekecektir. Başka bir yol göremiyorum, bu yüzden soruyu sordum.

Belki birisi sana söyler. Belki de kod yazma mantığı topal nerede?


1. Kodu satırları (merdiven) kaydetmeden tasarlayın.

2. Tekrarlanan kısa koşullu ifadeler yerine if(...) ... else... kullanın.

3. Çağrıyı, iç döngü (ana fren) dışında bir grafik nesne oluşturma işlevine taşıyın.

 
Chiripaha :

buna:



... veya daha iyisi - şöyle:

 if (AOBuffer3[i]<= 0 ){
   ExtMapBuffer1[i] =  nSum; Vol_Arr[i] =  Volume[i]* Point *coaf;
}
else {
   ExtMapBuffer1[i] = -nSum; Vol_Arr[i] = -Volume[i]* Point *coaf;
}
 
tara :

... veya daha iyisi - şöyle:

Evet katılıyorum.

Tüm önerilerimi "eski" yorumda (eğer varsa) topluyorum. - Belki bu tam olarak "doğru" değildir, ancak dağılmayacaktır.

Sorunun biriken metinlerde olduğunu düşünüyorum - bunu ana yoruma yansıttım (nasıl link ekleyeceğimi bilmiyorum - üzgünüm).

 
tara :

3. Çağrıyı, iç döngü (ana fren) dışında bir grafik nesne oluşturma işlevine taşıyın.

Ve burada da ilginç - Nasıl yapılır? (fark etmek)

Hımm... Kesinlikle! - Birikimli. Ve ara değerler önemli değildir.

       if (shift_up > shift_dn)
       {
         for ( int dn_br = shift_dn; dn_br <= shift_up; dn_br++)             //-------------- Перебор значений внутри основного цикла
          {
           Vol_AO_up += Volume[dn_br]; 
          }   
         ObjectDelete ( "Awesome_super_volumes" +up_koaf);         // Заодно и удалить старый текст, чтобы не копился
         SetText( "Awesome_super_volumes" +up_koaf, DoubleToStr(Vol_AO_up, 0 ), AO_time_dn, AO_dn, Blue);
       }

O zaman bir demet verimli olmayacak ...

 

init işlevinde aşağıdaki çağrıya sahibim:

GetMarketInfo();

Bu işlev burada:

 //+-------------------------------------------------------------------------------------+
//| Сбор рыночных данных                                                                |
//+-------------------------------------------------------------------------------------+
void GetMarketInfo()
{
   gd_spread = MarketInfo( Symbol (),MODE_SPREAD) * Point ;
   gd_stopLevel = MarketInfo( Symbol (),MODE_STOPLEVEL)  * Point ;
   gd_tickSize = MarketInfo( Symbol (),MODE_TICKSIZE);
}

gd_spread , gd_stopLevel , gd_tickSize değişkenlerini şimdiye kadar global olarak deklare ettim. Şimdi bu değişkenleri kullanan birkaç kitaplık yazmaya karar verdim. Bu değişkenleri başlık dosyasına aktardığım ortaya çıktı. Ve nasıl oluyor da kütüphane derlerken hata yok, GetMarketInfo() fonksiyonunu da kütüphaneye aktarmam gerekiyor değil mi?

 
hoz :

init işlevinde aşağıdaki çağrıya sahibim:

Bu işlev burada:

Bu noktaya kadar gd_spread , gd_stopLevel , gd_tickSize değişkenlerini global olarak ilan ettim. Şimdi bu değişkenleri kullanan birkaç kitaplık yazmaya karar verdim. Bu değişkenleri başlık dosyasına aktardığım ortaya çıktı. Ve nasıl oluyor da kütüphane derlerken hata yok, GetMarketInfo() fonksiyonunu da kütüphaneye aktarmam gerekiyor değil mi?

İnternette bu işlevi çağırmak kesinlikle mümkün değildir - yayılma ve durma seviyesi zamanla değişebilir
 
artmedia70 :
İnternette bu işlevi çağırmak kesinlikle mümkün değildir - yayılma ve durma seviyesi zamanla değişebilir


Gerçek ticarette söve olmaması için init'in terk edilmesi gerektiğini düşünüyorum. Sonuçta, bağlantı DC'yi keser ve ardından belirirse, yeniden başlatma olmayacak ve bu, gerçek hayatta çalışırken zaten hatalar ve sıkışmalar gerektiriyor, değil mi?

Peki, o zaman ne yapmalı? Sürekli bazılarını çağırmak için her fonksiyonda. bu piyasa değişkenlerini döndürecek bir fonksiyon?

 
hoz :


Gerçek ticarette söve olmaması için init'in terk edilmesi gerektiğini düşünüyorum. Sonuçta, bağlantı DC'yi keser ve ardından belirirse, yeniden başlatma olmayacak ve bu, gerçek hayatta çalışırken zaten hatalar ve sıkışmalar gerektiriyor, değil mi?

Peki, o zaman ne yapmalı? Sürekli bazılarını çağırmak için her fonksiyonda. bu piyasa değişkenlerini döndürecek bir fonksiyon?

Bu tür bilgiler değişebilir ve değişmez olarak bölünmelidir.

Değişmez - her yerde kayıt olabilirsiniz - çünkü. iletişimde bir kesinti olsa bile, veriler alakalı olacaktır. - Tabii ki, baykuşa aşırı yüklenmemek için başlangıçta değil.

ancak Değiştirilebilir - bunları bir işlev çağrısı yoluyla (bir kitaplık kullanılıyorsa) veya yalnızca başlatma işlevinin en başında güncelleyebilirsiniz.

 

O da gerçektir. Beyin, zihnin bunu en iyi nasıl yapacağını tam olarak anlamadığı bir zamanda, sürekli olarak performans hakkında düşünür. Şey, benim bir karakterim var .. bir ikizim :(

Bu doğru, birini diğerinden hemen ayırmanız gerekiyor.

Yine de. Piyasa ortamı değişkenleri gd_stopLevel , gd_tickSize farklı işlevlerde kullanılıyorsa (değiştirme, sipariş gönderme vb. işlevler), o zaman bir kitaplık işlevinde sürekli olarak verilen değerleri alan bir işlevi çağırmak tamamen mantıklı değildir. Gibi. birleştirilebilir mi? Aslında, yayılmanın aksine, durma seviyesi ve kene boyutu her zaman sabit olacaktır.

 
hoz :

O da gerçektir. Beyin, zihnin bunu en iyi nasıl yapacağını tam olarak anlamadığı bir zamanda, sürekli olarak performans hakkında düşünür. Şey, benim bir karakterim var .. bir ikizim :(

Bu doğru, birini diğerinden hemen ayırmanız gerekiyor.

Yine de. Piyasa ortamı değişkenleri gd_stopLevel , gd_tickSize farklı işlevlerde kullanılıyorsa (değiştirme, sipariş gönderme vb. işlevler), o zaman bir kitaplık işlevinde sürekli olarak verilen değerleri alan bir işlevi çağırmak tamamen mantıklı değildir. Gibi. birleştirilebilir mi? Gerçekten de, yayılmanın aksine, durma seviyesi ve kene boyutu her zaman sabit olacaktır.

Artem, Durdurma Seviyesinin de yüzebileceğini söyledi - bu sabit bir değer değil! - Bir kene boyutu - evet, bir sabit.

Birleştirme için - yine 2 fonksiyona bölün - MarketInfoConst ve MarketInfoIsm (değişen). Birini Init'e, diğerini Start(lar)ın başına yerleştirin. Ve onu kütüphaneye bağlamak mümkün olacak.

Performans sorusu (bir baykuşun çalışmasının optimizasyonu) farklıdır. Şahsen tüm bu işlevleri bir baykuşa sokmuyorum. Ve sadece parametreleri gerektiği gibi alıyorum. Evet, daha fazla kod yazmanız gerekiyor, ancak baykuş daha az "ekstra" kitaplık saçmalığı işler, tk. Bir baykuşta MarketInfo'daki her şey gerekli olmayabilir.