MQL5'te birlikte öğrenme ve yazma - sayfa 8

 

Basit fiyat yapılarını MKL4'ten MKL5'e aktarmak için bir algoritma yazıyorum, MKL4 kodunu MKL5 stokastik masd ve rsai'ye kopyalama örneklerine, MKL4 verilerine erişmenin ana yöntemleri orada kullanılıyor.

yakında olacak, ne olmalı

Şimdi iMaOnArrau işleviyle mücadele ediyorum, çünkü MT5'te özel dizilerden en basit hareketli ortalama yöntemlerini almak sağlanmamıştır.

Kütüphaneleri tüm teknik araçlara genişleteceğim, neredeyse tüm algoritmaları biliyorum

Документация по MQL5: Стандартные константы, перечисления и структуры / Константы индикаторов / Методы скользящих
Документация по MQL5: Стандартные константы, перечисления и структуры / Константы индикаторов / Методы скользящих
  • www.mql5.com
Стандартные константы, перечисления и структуры / Константы индикаторов / Методы скользящих - Документация по MQL5
 

Aptal olduğum bir şey ... Sadece nasıl yazacağımı bulamıyorum ...

Bu kod var:

   MqlRates rates[];
   
   ArraySetAsSeries (rates,true);
   int copied= CopyRates ( _Symbol , _Period , 0 , 1000 ,rates);
   

Ardından, i-inci ile j-inci arasındaki çubuklar arasında minimum Düşük olan çubuğun indeksini almam gerekiyor.

ArrayMinimum işlevini kullanmaya çalışıyorum.

int k=ArrayMinimum(rates.low,i,j-i+1); - doğru değil

int k=ArrayMinimum(oranlar[].düşük,i,j-i+1); - doğru değil

Nasıl doğru olacak?

Документация по MQL5: Операции с массивами / ArrayMinimum
Документация по MQL5: Операции с массивами / ArrayMinimum
  • www.mql5.com
Операции с массивами / ArrayMinimum - Документация по MQL5
 
owl :

Aptal olduğum bir şey ... Sadece nasıl yazacağımı bulamıyorum ...

Bu kod var:

Ardından, i-inci ile j-inci arasındaki çubuklar arasında minimum Düşük olan çubuğun indeksini almam gerekiyor.

ArrayMinimum işlevini kullanmaya çalışıyorum.

int k=ArrayMinimum(rates.low,i,j-i+1); - doğru değil

int k=ArrayMinimum(oranlar[].düşük,i,j-i+1); - doğru değil

Nasıl doğru olacak?

Doğrudan erişim işlevlerini kullanın, MqlRates bir "yapılar" dizisidir ve burada bir Düşük dizisine ihtiyacınız vardır, burada hemen Yüksek için bir örnek verilmiştir.

   rates_total= CopyHigh ( NULL , _Period ,_start,_end,iHigh);
   if (rates_total<= 0 )
       return ;
   else
      HighDay=iHigh[ ArrayMaximum (iHigh, 0 ,rates_total)];
   rates_total= CopyLow ( NULL , _Period ,_start,_end,iLow);
   if (rates_total<= 0 )
       return ;
   else
      LowDay=iLow[ ArrayMinimum (iLow, 0 ,rates_total)];

Kod örneklerine bakın. Bu, https://www.mql5.com/en/code/102 adresinden

PivotPointUniversal
PivotPointUniversal
  • oylar: 17
  • 2010.04.26
  • Dmitry
  • www.mql5.com
Опорные точки Pivot без использования объектов строятся по всей доступной истории. Пять вариантов расчета. Три варианта построения: дневной, недельный, месячный. Для дневных уровней есть возможность смещения по GMT.
 
vdv2001 :

Doğrudan erişim işlevlerini kullanın, MqlRates bir "yapılar" dizisidir ve burada bir Düşük dizisine ihtiyacınız vardır, burada hemen Yüksek için bir örnek verilmiştir.

Bu temiz. Benim durumumda, sadece şunu yazdım:

         int k=i; double min= rates[k].low;
         for ( int m=i+ 1 ;m<=j;m++)
             if (rates[m].low<min) {min=rates[m].low; k=m;}

Şey, bir sürü dizi istemiyorum ... Kaynaklar açısından ekonomik değil ve çok güzel değil ...

Sadece ArrayMinimum ile uğraşmak istedim - bu işlevi bir dizi yapı ile kullanmak mümkün mü ....

 
owl :

Bu temiz. Benim durumumda, sadece şunu yazdım:

Şey, bir sürü dizi istemiyorum ... Kaynaklar açısından ekonomik değil ve çok güzel değil ...

Sadece ArrayMinimum ile uğraşmak istedim - bu işlevi bir dizi yapı ile kullanmak mümkün mü ....

Bir dizi bilgiyi bir dizi yapı içinde depolamanın ikili bir diziden daha ekonomik olduğunu düşünüyorsanız, o zaman kollarımı açıyorum.

 struct MqlRates
  {
   datetime time;         // время начала периода
   double    open;         // цена открытия
   double    high;         // наивысшая цена за период
   double    low;           // наименьшая цена за период
   double    close;         // цена закрытия
   long      tick_volume;   // тиковый объем
   int       spread;       // спред
   long      real_volume;   // биржевой объем 
  };

Yoksa int'leri, long'ları ve tarihleri depolamanın bellek açısından daha ekonomik olduğunu mu düşünüyorsunuz? ;))

ya da daha ekonomik olarak ihtiyacınız olanı bir çöp yığınından seçin, ha ha ...

 
vdv2001 :

Bir dizi bilgiyi bir dizi yapı içinde depolamanın ikili bir diziden daha ekonomik olduğunu düşünüyorsanız, o zaman kollarımı açıyorum.

Yoksa int'leri, long'ları ve tarihleri depolamanın bellek açısından daha ekonomik olduğunu mu düşünüyorsunuz? ;))

ya da daha ekonomik olarak ihtiyacınız olanı bir çöp yığınından seçin, ha ha ...

Eh... verimlilik pahasına, tabii ki biraz heyecanlandım... Ama aslında, MqlRates'ten gelen neredeyse tüm bilgilere ihtiyacım var (olası hacimler hariç ve bu bir gerçek değil.. .)
Документация по MQL5: Стандартные константы, перечисления и структуры / Структуры данных / Структура исторических данных
Документация по MQL5: Стандартные константы, перечисления и структуры / Структуры данных / Структура исторических данных
  • www.mql5.com
Стандартные константы, перечисления и структуры / Структуры данных / Структура исторических данных - Документация по MQL5
 

Genellikle, bir şey sormadan önce, cevap aramak için çeşitli kaynaklara bakarım.

Ama şimdi, bir haftalık çileden sonra anladım - bir cevabım yok ve bence henüz kimse bununla karşılaşmadı. Bu yüzden bir bulmaca öneriyorum.

İlk veri:

1) Düzeyler ve Oklar gibi basit bir gösterge var iS7N_SacuL_v3.mq5 (ekli)

2) Bu göstergeden veri almaya çalışan Uzman Danışman aS7N_TIC.mq5 (ekli)

İşte burada!

Beş gösterge arabelleğinden yalnızca ikisi verileri doğru şekilde döndürür.

Detaylı açıklamalar takip edilecek!

Усреднение ценовых рядов без дополнительных буферов для промежуточных расчетов
Усреднение ценовых рядов без дополнительных буферов для промежуточных расчетов
  • 2010.10.25
  • Nikolay Kositsin
  • www.mql5.com
Статья о традиционных и не совсем традиционных алгоритмах усреднения, упакованных в максимально простые и достаточно однотипные классы. Они задумывались для универсального использования в практических разработках индикаторов. Надеюсь, что предложенные классы в определенных ситуациях могут оказаться достаточно актуальной альтернативой громоздким, в некотором смысле, вызовам пользовательских и технических индикаторов.
Dosyalar:
 

Duruma daha dikkatli baktıktan sonra, hem 3 hem de 4 gösterge arabelleklerinin her zaman doğru verileri vermediğini buldum (hangilerinin doğru ve hangilerinin olmadığını anlamak imkansız olsa da)

Tabloya bakın. Veri penceresinde solda grafikte ayarlanan göstergenin değeri, altta Uzman Danışman tarafından alınan verilerdir. Değerlerin çoğu aynı, ancak böyle olanlar da var, aşağıya bakın ...

Bu bağlamda, grafikte ve test cihazında farklı tarihsel verilerin kullanıldığı varsayımı vardı.

Kim ne düşünüyor?

 

Ve nihayet asıl sorun! 1,2 ve 5 gösterge tamponları için olağan şekilde veri elde etmek mümkün değildir.

Sorun şu ki, bu diziler için veriler hesaplanırken, önceki çubukların önceden hesaplanmış verileri dikkate alınır.

Tabii ki, göstergeyi çağırırken, prev_calculated değerinden bağımsız olarak yaklaşan N çubuğu yeniden hesaplamaya zorlamasını söyleyebilirsiniz.

Gösterge değerlerinin çağrılması ve hesaplanmasının 0'a eşit olmayan prev_calculated değeriyle gerçekleştiğini varsayıyorum.

Bu çoğu gösterge için geçerlidir, çünkü kaynakları korur, ancak verilen örnek için çalışmayacaktır.

Ne yapalım? Hangi düşünceler?

Opsiyonel olarak tüm hesaplamaları bir uzmana aktarabilirsiniz!!! Bu seçenek işe yarıyor ama o kadar değil ... Hala kafamın üzerinde olmayan pantolon giymek istiyorum.

Способы вызова индикаторов в MQL5
Способы вызова индикаторов в MQL5
  • 2010.03.09
  • KlimMalgin
  • www.mql5.com
C появлением новой версии языка MQL, не только изменился подход к работе с индикаторами, но и появились новые способы создания индикаторов. Кроме того, появилась дополнительная гибкость при работе с индикаторными буферами - теперь вы можете самостоятельно указать нужное направление индексации и получать ровно столько значений индикатора, сколько вам требуется. В этой статье рассмотрены базовые методы вызова индикаторов и получения данных из индикаторных буферов.
 

EA'da kullanılan

 int resIup = CopyBuffer (iCusHandlI_H4, 2 , 0 , 1 ,dBufIup_H4);
değer 0. çubuktan alınır, bunun için gösterge tamponlarının değerleri mum kapanana kadar her tikte değişir.
Усреднение ценовых рядов без дополнительных буферов для промежуточных расчетов
Усреднение ценовых рядов без дополнительных буферов для промежуточных расчетов
  • 2010.10.25
  • Nikolay Kositsin
  • www.mql5.com
Статья о традиционных и не совсем традиционных алгоритмах усреднения, упакованных в максимально простые и достаточно однотипные классы. Они задумывались для универсального использования в практических разработках индикаторов. Надеюсь, что предложенные классы в определенных ситуациях могут оказаться достаточно актуальной альтернативой громоздким, в некотором смысле, вызовам пользовательских и технических индикаторов.