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

 
ALXIMIKS :
Bu makaleye bakın , her şey göründüğü kadar basit değil ve genel olarak çok faydalı.

baktı. Onu ayrıntılı olarak incelemek bir haftamı alacak. ama bundan daha kötüsü, orada işimle ilgili olabilecek yerler bulamadım. Göstergeleri renklendirmiyorum ve hiçbir şekilde değiştirmiyorum. Sadece son n çubuklarda iniş ve çıkışları bulmak istiyorum. RSI_Extremums_Sample.mq4'te bir benzerlik ipucu var ama bu kodu çözemiyorum. çok fazla gereksiz var, gösterge orada ÇİZİLDİ.... ama buna ihtiyacım yok...
 
lottamer :

baktı. Onu ayrıntılı olarak incelemek bir haftamı alacak. ama daha da kötüsü, orada işimle ilgili olabilecek yerler bulamadım. Göstergeleri renklendirmiyorum ve hiçbir şekilde değiştirmiyorum. Sadece son n çubuklarda iniş ve çıkışları bulmak istiyorum. RSI_Extremums_Sample.mq4'te bir benzerlik ipucu var ama bu kodu çözemiyorum. çok fazla gereksiz var, gösterge orada ÇİZİLDİ.... ama buna ihtiyacım yok...


3173
artmedia70 27.10.2013 15:42 #
Forexman77 :

Özel bir göstergenin en yakın maksimumunu hesaplamak için "ArrayMaximum" işlevini kullanmak mümkün müdür?

Yoksa bunun için başka işlevlere mi ihtiyacınız var?

Bunu şöyle yapmaya çalıştım:

Ve hiçbir şey çıkmıyor. Guru, bana nasıl yapacağımı söyle?

   for (i= 2 ; i<nBars; i++) {                    
       double a= iCustom ( NULL , 0 , "EMAF" , 0 , 0 ,i+ 1 );
       double b= iCustom ( NULL , 0 , "EMAF" , 0 , 0 ,i);
       double c= iCustom ( NULL , 0 , "EMAF" , 0 , 0 ,i- 1 );
       if ((a-b)*(b-c)< 0 ) {
         if (b<c) {                                
             // Нашли донышко
            }
         if (b>c) {                           
             // Нашли пичок
            }
         }
      }   
Danışmanda aramak için. göstergede DEĞİLDİR.

 
lottamer :

Bu kodu ders kitabından aldım. her şey temelde açıktır. n dönem için fiyat uçlarını hesaplamak yerine, örneğin MACD göstergesinin uçlarını nasıl hesaplayacağı açık değil.

anahtar blokta, görünüşe göre, YÜKSEK ve DÜŞÜK'ü MACD olarak değiştirmeniz gerekiyor ... ama anlamıyorum ... tüm tef ile dans etme girişimleri sıfırlama ile bitiyor.

Bir dizi MACD oluşturmanız gerektiğini anlıyorum ...

çift MACDBffer[];

Bu satırı başka danışmanlarda da gördüm.

ama birini diğeriyle karşılaştırmak zor...

nasıl yapacağımı söyle?


makale .
 

Kim ile benzer bir şey buldum

 //+----------------------------------------------------------------------------+
//|  Автор    : Ким Игорь В. aka KimIV,  http://www.kimiv.ru                   |
//+----------------------------------------------------------------------------+
//|  Версия   : 17.05.2008                                                     |
//|  Описание : Возвращает значение максимального элемента массива.            |
//+----------------------------------------------------------------------------+
//|  Параметры:                                                                |
//|    x - массив значений числового ряда                                      |
//+----------------------------------------------------------------------------+
double ArrayMax( double & x[]) {
   if ( ArraySize (x)> 0 ) return (x[ ArrayMaximum (x)]);
   else {
     Print ( "ArrayMax(): Массив пуст!" );
     return ( 0 );
  }
}

soru: bir dizi gösterge değeri nasıl oluşturulur?

 
lottamer :

Kim ile benzer bir şey buldum

soru: bir dizi gösterge değeri nasıl oluşturulur?

Sorulanları tekrar okudum, başta yanlış anladım (

türkiye verileriyle bir arabellek almak için şunları yapabilirsiniz:

1) arabelleğe iMACD değerlerinin toplanmasıyla döngüyü çalıştırın

2) MACD'den kaynak kodunu alın, orada bir arabellek var

 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 ,FastEMA, 0 , MODE_EMA , PRICE_CLOSE ,i)- iMA ( NULL , 0 ,SlowEMA, 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 ,SignalSMA, 0 , MODE_SMA ,i);
//---- done
   return ( 0 );
  }
 
ALXIMIKS :

Sorulanları tekrar okudum, başta yanlış anladım (

türkiye verileriyle bir arabellek almak için şunları yapabilirsiniz:

1) arabelleğe iMACD değerlerinin toplanmasıyla döngüyü çalıştırın

2) MACD'den kaynak kodunu alın, orada bir arabellek var


ama arabelleği nasıl oluşturabilirim, yoksa onunla ne yapacağımı anlamıyorum ....

Yazdır (MACDBuffer[1]); ?? sıfır yazdırır...neden? teoride 1. çubuğun değeri olmalıdır....

ve daha fazlası... neden doğrudan bir iMACD işlevi varken MACD'yi MA üzerinden hesaplayasınız ki???

 
lottamer :


ama arabelleği nasıl oluşturabilirim, yoksa onunla ne yapacağımı anlamıyorum ....

Yazdır(MACDBuffer[1]); ?? sıfır yazdırır...neden? teoride 1. çubuğun değeri olmalıdır....

ve daha fazlası... neden doğrudan bir iMACD işlevi varken MACD'yi MA üzerinden hesaplayasınız ki???


Lütfen bana neye ihtiyacın olduğunu söyle

ama daha açık bir şekilde, böylece aptal bir insan bile anlayabilir.

 
ALXIMIKS :


Lütfen bana neye ihtiyacın olduğunu söyle

ama daha açık bir şekilde, böylece aptal bir insan bile anlayabilir.

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ı....



 
artmedia70 :
Kaliteli bir hikaye vermek bir DC'nin işidir. Tembeldirler ve her zaman MK'yi suçlarlar.


Teşekkür ederim!
 
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ı....

Özel macdac'ınızın sonuna yapıştırın.
   int max,min,maxlast,minlast;
   max = ArrayMaximum (MacdBuffer, 20 , 1 );
   min = ArrayMinimum (MacdBuffer, 20 , 1 );
   if (max!=maxlast){
       ObjectDelete   ( "highline" );   
       ObjectCreate  ( "highline" , 1 ,WindowOnDropped( ) , 0 ,MacdBuffer[max], 0 , 0 );
   }
   if (min!=minlast){
       ObjectDelete   ( "lowline" );   
       ObjectCreate  ( "lowline" , 1 ,WindowOnDropped( ) , 0 ,MacdBuffer[min], 0 , 0 );
   }

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

   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 );
   }