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

 

Merhaba! mkuel4'ü anlamaya başladı. Sorumu, mumların maksimum ve minimum fiyatını hesaplayan ve iki tampon kullanarak ekranda mum ekstremine dayalı satırları görüntüleyen basit bir gösterge örneğini kullanarak belirteceğim:

 #property indicator_chart_window // Индик. рисуется в основном окне
#property indicator_buffers 2 // Количество буферов
#property indicator_color1 Blue // Цвет первой линии
#property indicator_color2 Red // Цвет второй линии

double Buf_0[],Buf_1[]; // Объявление массивов (под буферы индикатора)
//--------------------------------------------------------------------
int init() // Специальная функция init()
{
SetIndexBuffer ( 0 ,Buf_0); // Назначение массива буферу
SetIndexStyle ( 0 , DRAW_LINE , STYLE_SOLID , 2 ); // Стиль линии
SetIndexBuffer ( 1 ,Buf_1); // Назначение массива буферу
SetIndexStyle ( 1 , DRAW_LINE , STYLE_DOT , 1 ); // Стиль линии
return ; // Выход из спец. ф-ии init()
}
//--------------------------------------------------------------------
int start() // Специальная функция start()
{
int i, // Индекс бара
Counted_bars; // Количество просчитанных баров 
//--------------------------------------------------------------------
Counted_bars= IndicatorCounted (); // Количество просчитанных баров 
i= Bars -Counted_bars- 1 ;
// Индекс первого непосчитанного
while (i>= 0 ) // Цикл по непосчитанным барам
{
Buf_0[i]=High[i]; // Значение 0 буфера на i-ом баре
Buf_1[i]=Low[i]; // Значение 1 буфера на i-ом баре

i--; // Расчёт индекса следующего бара
}
//--------------------------------------------------------------------
return ; // Выход из спец. ф-ии start()
}

Peki tampon hattı her mumdan değil de iki (üç vb.) mumdan nasıl geçirilir?

 
wolf05632 :

Peki tampon hattı her mumdan değil de iki (üç vb.) mumdan nasıl geçirilir?

Başlamak için, "SRC" düğmesini kullanarak koda nasıl doğru bir mesaj ekleyeceğinizi öğrenin, böylece okunabilir bir görünüme sahip olur ve MetaEditor'daki gibi görünür.


İkinci adım, Counted_bars değişkenini if ifadesine bağlama girişiminiz olacaktır.

Örneğin:

Gösterge hesaplamasını her saniye çubuğa gireceğiz (tekleri atlıyoruz, çiftleri bırakıyoruz):

 if ( MathMod (Counted_bars, 2 ) == 0 )
{
   // расчёт для буферов индикатора
}
else return ( 0 );

MathMod() işlevi hakkında buradan bilgi edinebilirsiniz. Ama kullanmak zorunda değilsin. if deyimine herhangi bir koşul ekleyebilirsiniz.

Ancak, koddaki bu tür değişikliklerden arabellekteki bazı değerleri kaybetmeye başlayacağınızı unutmayın. İhtiyacın var mı, yok mu, bilmiyorum. Her şey görevinize bağlı olacaktır.

 

Pek anlayamadım. Döngü adımını ikiye eşitlemeye çalıştım (bence senin anlamın aynı olacak), ama olmuyor. Spesifik olarak bir mumdan değil, rastgele sayıda mumdan ihtiyacım var. Yapının şöyle olması gerektiğini anlıyorum:

arabellek dizisi[1]= mum dizisi[1]

arabellek dizisi[2]= mum dizisi[2]

arabellek dizisi[3]= mum dizisi[4]

...

arabellek dizisi[5]= mum dizisi[x], vb. Ama çalışmıyor

 
wolf05632 :

Tampon endeksler ve şamdan endeksleri arasında herhangi bir kalıp görmüyorum...

Ve almak istediğiniz şeyin bir resmini eklerseniz daha da iyi olur.

 

Böyle çıkıyor

Ve buna şöyle ihtiyacım var:

Ancak, çizgilerin bir mumdan çizildiği gerçeğine özellikle bağlanmayın, ikiden sonra ve üçten sonra çizilebilirler, vb.

 
sergeev :

Görünüşe göre konuyu burada değil, telepatlar için yıkmak gerekiyordu.

sadece bizimle alay ediyor.


Evet, zaten koda bakın, boşluk bırakmadan siparişin gönderilmesinin sonucunun nerede olduğunu, hata kodunu ve enstrümanın rakamlarını görebilirsiniz.
 

O zaman bunun gibi bir zikzak göstergesi kullanmanız gerekir (Benim bakış açım):

 #property indicator_chart_window // Индик. рисуется в основном окне
#property indicator_buffers 2 // Количество буферов
#property indicator_color1 Blue // Цвет первой линии
#property indicator_color2 Red // Цвет второй линии

double Buf_0[], Buf_1[]; // Объявление массивов (под буферы индикатора)
//--------------------------------------------------------------------
int init() // Специальная функция init()
{
   SetIndexBuffer ( 0 , Buf_0); // Назначение массива буферу
   SetIndexStyle ( 0 , DRAW_SECTION );
   SetIndexBuffer ( 1 , Buf_1); // Назначение массива буферу
   SetIndexStyle ( 1 , DRAW_SECTION );
   return ; // Выход из спец. ф-ии init()
}
//--------------------------------------------------------------------
int start() // Специальная функция start()
{
   int i, // Индекс бара
   Counted_bars; // Количество просчитанных баров 
   //--------------------------------------------------------------------
   Counted_bars= IndicatorCounted (); // Количество просчитанных баров 
   if ( MathMod ( Bars , 2 ) != 0 && Counted_bars == 0 )
       return ( 0 );
   i = Bars -Counted_bars- 1 ;
   // Индекс первого непосчитанного
   while (i >= 0 ) // Цикл по непосчитанным барам
   {
       if ( MathMod (i, 2 ) == 0 )
      {
         Buf_0[i] = High[i]; // Значение 0 буфера на i-ом баре
         Buf_1[i] = Low[i]; // Значение 1 буфера на i-ом баре
      }
   
      i--; // Расчёт индекса следующего бара
   }
   //--------------------------------------------------------------------
   return ; // Выход из спец. ф-ии start()
}

Değişiklikleri anlayacağını düşünüyorum. Yanıldığım tek şey, hesaplanan çubuğun indeksi olarak IndicatorCounted() yerine Bars parametresini kullanmanın daha iyi olduğudur.

Şimdi göreviniz, böleni harici bir parametreye taşımak. Atlanan mumların sayısına eşit olacaktır.

 
grell :

Evet, zaten koda bakın, orada sipariş gönderme sonucunun, hata kodunun ve enstrümanın rakamlarının nerede olduğunu boşluk olmadan görebilirsiniz.

Bu kadar. Bu nedenle konuşma da Telepatlar hakkında gitti.

Daha önce, kodu sağladınız:

 Alert ( "Ordersend_Number" ,res,err);

Ve kaç kere koda bakmadım maalesef hatayı bulamadım... Çoklu para birimi Expert Advisors yazma konusunda tecrübem yok. Sadece bazı prensipleri biliyorum, daha fazlasını değil.

 
Yani -1129'un hata kodu olması hiç akıllıca değil, 1292 hata numarasını nerede gördünüz?
 
grell :
Yani -1129'un hata kodu olması hiç akıllıca değil, 1292 hata numarasını nerede gördünüz?

Her şey olur...

Uzman Danışmanınızı yalnızca bir DC'de test ettiniz mi? Ve 129 hatası ne kadar süreyle geliyor? Yoksa sipariş birkaç istekten sonra hala açılıyor mu?

Neden: