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

 
lottamer :

Belirli bir çubuk sayısı için MACD göstergesinin minimum (resimde olduğu gibi) ve maksimum değerini belirlemem gerekiyor. (bu durumda 20).

Bunu fiyat için yapan bir kod buldum ve aptalca HIGH LOW'u MACD ile değiştirmeye çalıştım. ama hiçbir şey olmadı....

İhtiyacınız olan MACDAC verilerini massMACD[20] dizisine kopyalayın ve bu dizide bulun
minimum DiziMinimum (kütleMACD); ve
maksimum ArrayMaximum(kitleMACD); değerler.
 
ALXIMIKS :
Özel macdac'ınızın sonuna yapıştırın.

not bu daha doğru ve daha iyi olmasına rağmen:


eğer öyleyse çalışmıyor...

double MACDBuffer[];
double SignalBuffer[];

 
 int start()
  {
   int limit;
   int counted_bars=IndicatorCounted();
//---- last counted bar will be recounted
   if (counted_bars> 0 ) counted_bars--;
   limit= Bars -counted_bars;
//---- macd counted in the 1-st buffer
   for ( int i= 0 ; i<limit; i++)
      MACDBuffer[i]= iMA ( NULL , 0 , 12 , 0 , MODE_EMA , PRICE_CLOSE ,i)- iMA ( NULL , 0 , 26 , 0 , MODE_EMA , PRICE_CLOSE ,i);
//---- signal line counted in the 2-nd buffer
   for (i= 0 ; i<limit; i++)
      SignalBuffer[i]=iMAOnArray(MACDBuffer, Bars , 9 , 0 , MODE_SMA ,i);
         //t=MACDBuffer[0];
         //Print(t*10000);
//---- done
  
  
int max,min;
   static double maxlast,minlast;
   max = ArrayMaximum (MACDBuffer, 20 , 1 );
   min = ArrayMinimum (MACDBuffer, 20 , 1 );
   if (MACDBuffer[max]!=maxlast){
      maxlast=MACDBuffer[max];
       ObjectDelete   ( "highline" );   
       ObjectCreate ( "highline" , 1 ,WindowOnDropped( ) , 0 ,MACDBuffer[max], 0 , 0 );
   }
   if (MACDBuffer[min]!=minlast){
      minlast=MACDBuffer[min];
       ObjectDelete   ( "lowline" );   
       ObjectCreate ( "lowline" , 1 ,WindowOnDropped( ) , 0 ,MACDBuffer[min], 0 , 0 );
       Print (min,max);
   }
     return ( 0 );
  }
 
artmedia70 :
İhtiyacınız olan MACDAC verilerini massMACD[20] dizisine kopyalayın ve bu dizide bulun
minimum DiziMinimum(kütleMACD); ve
maksimum ArrayMaximum(kitleMACD); değerler.


Harika.

tek soru, verilerin diziye NASIL kopyalanacağıdır? Böyle?

 for ( int i=1; i<20; i++)
      MACDBuffer[i]= iMA ( NULL , 0 , 12 , 0 , MODE_EMA , PRICE_CLOSE ,i)- iMA ( NULL , 0 , 26 , 0 , MODE_EMA , PRICE_CLOSE ,i);

ya da öyle mi?

   MACDLineBuffer[i] = iMACD ( NULL , 0 , 12,26,9, PRICE_CLOSE ,MODE_MAIN,i);
 
lottamer :


eğer öyleyse çalışmıyor...

Özel MACD'nin sonuna:

Navigator ==> Özel Göstergeler ==> MACD ==> RMB (sağ tıklama) ==> Düzenle ==>

 
lottamer :


Harika.

tek soru, verilerin diziye NASIL kopyalanacağıdır? Böyle?

ya da öyle mi?


kahretsin, aynı şey, sadece iMACD çağrısının kaynak kodu kadar kaynak gerektireceği bir gerçek değil.

iMACD ve tüm iCostum, bir dizi üyesinin değerini döndürür ve bu nedenle, daha fazla referans için bunları bir arabellekte toplamak ve toplamak gerekir.

  MACDLineBuffer[i] = iMACD ( NULL , 0 , 12 , 26 , 9 , PRICE_CLOSE ,MODE_MAIN,i);

doğru değil, çünkü yalnızca bir değer elde edersiniz ve 20'ye ihtiyacınız vardır, bu nedenle bir döngü kullanın:

 for ( int i= 1 ; i< 20 ; i++)
      MACDLineBuffer[i] = iMACD ( NULL , 0 , 12 , 26 , 9 , PRICE_CLOSE ,MODE_MAIN,i);

 
ALXIMIKS :

Özel MACD'nin sonuna:

Navigator ==> Özel Göstergeler ==> MACD ==> RMB (sağ tıklama) ==> Düzenle ==>

İşler :)

tabi ki sadece ihtiyacım olanı yapmıyor ama ben onun örneğinden yararlanmaya çalışacağım.

Teşekkür ederim

 

baştan başlayalım.

 int start()
  {
  
    
for ( int i= 0 ; i< 20 ; i++)
MACDBuffer[i] = iMACD ( NULL , 0 , 12 , 26 , 9 , PRICE_CLOSE ,MODE_MAIN,i);

20 (19 önemli değil) gösterge değerini bir diziye kopyalamak yeterli mi?

 
lottamer :

baştan başlayalım.

20 (19 önemli değil) gösterge değerini bir diziye kopyalamak yeterli mi?

Açıklığa kavuşturalım, birinin bir şeye ihtiyacı varsa ve en azından bir şey biliyorsam, o zaman bu kişiye yardım etmeye çalışmaktan mutluluk duyarım,

ama her osuruktan sonra kıçını silmeyeceğim - ne yazık ki.

Evet, bir statik dizi double MACDBuffer[20] bildirdiyseniz bu yeterlidir ve bir dinamik dizi double MACDBuffer[] bildirdiyseniz bu yeterli değildir.

artmedia70 size bunu söyledi.

 
ALXIMIKS :

Açıklığa kavuşturalım, birinin bir şeye ihtiyacı varsa ve en azından bir şey biliyorsam, o zaman bu kişiye yardım etmeye çalışmaktan mutluluk duyarım,

ama her osuruktan sonra kıçını silmeyeceğim - ne yazık ki.

Evet, bir statik dizi double MACDBuffer[20] bildirdiyseniz bu yeterlidir ve bir dinamik dizi double MACDBuffer[] bildirdiyseniz bu yeterli değildir.

artmedia70 size bunu söyledi.


tamam, statik olsun.

 double MACDBuffer[ 20 ];

double min,max;
 
  
 int start()
  {
 
   for ( int i= 0 ; i< 20 ; i++)
      MACDBuffer[i]= iMA ( NULL , 0 , 12 , 0 , MODE_EMA , PRICE_CLOSE ,i)- iMA ( NULL , 0 , 26 , 0 , MODE_EMA , PRICE_CLOSE ,i);

   min= ArrayMinimum (MACDBuffer);
   max= ArrayMaximum (MACDBuffer);
  
   Print (min, "____" ,max);

neden 19__0 yazdırıyor???

 
lottamer :


tamam, statik olsun.

neden 19__0 yazdırıyor???


çünkü doğru çalışıyor. Başka bir şey?