Hatalar, hatalar, sorular - sayfa 1394

 
Ilya Malev :

tamam kod burada

Göstergelerde pek iyi değilim ama bu çizgi şüpheli

 return ( CopyBuffer (hnd, buf, index, 1 , Arr)== 1 ?Arr[ 0 ]: EMPTY_VALUE );

Geri dönüş değeri

Kopyalanan dizi öğelerinin sayısı veya hata durumunda -1.

1 eleman kopyalanırsa fonksiyon değerini döndürür, eleman yoksa veya 1'den fazla varsa fonksiyon EMPTY_VALUE değerini döndürür.

Belki böylesi daha iyi olur?

 return ( CopyBuffer (hnd, buf, index, 1 , Arr) >= 1 ?Arr[ 0 ]: EMPTY_VALUE );
 
Ilya Malev :

tamam kod burada

Çizgiyi düzelttim ve işe yarıyor gibi görünüyor)))

buffer2[i]=- MathRand ()% 5 * Point ();
 
Vladimir Pastushak :

Çizgiyi düzelttim ve işe yarıyor)))

Sonunda kendim tamir ettim. Ama mantığı neden değiştirdiklerini merak ediyorum (MT4'te ölçek Nokta ile çarpmadan iyiydi). Ve neden çizimsiz tamponların (DRAW_NONE ile) grafik ölçeğini etkilememesi mümkün değil.

 
Vladimir Pastushak :

Göstergelerde pek iyi değilim ama bu çizgi şüpheli

1. Dönüş değeri Kopyalanan dizi öğelerinin sayısı veya bir hata durumunda -1.

2. 1 eleman kopyalanırsa, fonksiyon değerini döndürür

1. ve 2. ifadeler çelişkili değil mi?
 
Ilya Malev :
1. ve 2. ifadeler çelişkili değil mi?

Değil )))

1 1'den sınıra kadar olabilir

2 yalnızca 1 öğe kopyalanırsa 2 veya daha fazlaysa EMPTY_VALUE döndürülür

yardım diyor

Geri dönüş değeri

Kopyalanan dizi öğelerinin sayısı veya hata durumunda -1. 1 eleman hangi koşulda kopyalanacak?

 
Ilya Malev :

Sonunda kendim tamir ettim. Ama mantığı neden değiştirdiklerini merak ediyorum (MT4'te ölçek Nokta ile çarpmadan iyiydi). Ve neden çizimsiz tamponların (DRAW_NONE ile) grafik ölçeğini etkilememesi mümkün değil.

Tüm gösterge arabelleğinin üzerinden geçmezsiniz. Kayıt

 for ( int i=rates_total- MathMax ( 1 , prev_calculated); i>= 0 ; i--)

genel olarak yanlış. Rate_total, prev_hesaplanmış ve gösterge ofset iStdDev değişkenleriniz var. İlk geçişte, boş dizinleri doldurmanız gerekir:

gösterge ofseti

ve ardından gösterge arabelleğinin kalan endekslerini gözden geçirin (yürümek, değerleri atamak anlamına gelir).

 
Karputov Vladimir :

Tüm gösterge arabelleğinden geçmezsiniz. Kayıt

genel olarak yanlış. Rate_total, prev_hesaplanmış ve gösterge ofset iStdDev değişkenleriniz var. İlk geçişte, boş dizinleri doldurmanız gerekir:

ve ardından gösterge arabelleğinin kalan endekslerini gözden geçirin (yürümek, değerleri atamak anlamına gelir).

Orijinalde, her şeyi sıfırlarla dolduran bir fonksiyona sahiptim.

       for ( int i=( int ) SeriesInfoInteger ( Symbol (), Period (), SERIES_BARS_COUNT )- 1 ; i>= 0 ; i--){
         buffer1[i]= 0 ;
         buffer1[i]= 0 ;
      }

Bu durumda önemli değil. Orada boş değerler olsaydı, bunlar grafiğin başında olur ve en sonundaki pencerenin ölçeğini etkilemezdi. Burada mesele tamamen farklı, burada yukarıdaki yoldaş zaten anladı.

 
Ilya Malev :

Sonunda kendim tamir ettim. Ama mantığı neden değiştirdiklerini merak ediyorum (MT4'te ölçek Nokta ile çarpmadan iyiydi). Ve neden çizimsiz tamponların (DRAW_NONE ile) grafik ölçeğini etkilememesi mümkün değil.

Şu şekilde deneyin:

 PlotIndexSetDouble (0, PLOT_EMPTY_VALUE , EMPTY_VALUE );
PLOT_BOŞ_DEĞER >>>
 
Vladimir Pastushak :

Değil )))

1 eleman hangi koşulda kopyalanacak?

Evet )))

 int    CopyBuffer (
     int        indicator_handle,     // handle индикатора
     int        buffer_num,           // номер буфера индикатора
     int        start_pos,             // откуда начнем 
     int        count,                 // сколько копируем
     double     buffer[]               // массив, куда будут скопированы данные
    );
 
Ilya Malev :

Evet )))

Evet, o zaman çizginiz doğru.