"MQL5'te göstergeler nasıl çağrılır" makalesi için tartışma

 

Yeni makale MQL5'te göstergeler nasıl çağrılır yayınlandı:

MQL programlama dilinin yeni versiyonuyla birlikte, yalnızca göstergelerle ilgilenme yaklaşımı değişmedi, aynı zamanda göstergelerin nasıl oluşturulacağının da yeni yolları var. Ayrıca, göstergenin tamponlarıyla çalışma esnekliğine sahipsiniz - artık istediğiniz indeksleme yönünü belirleyebilir ve tam olarak istediğiniz kadar gösterge değeri alabilirsiniz. Bu makale, göstergeleri çağırmanın ve göstergenin tamponundan veri almanın temel yöntemlerini açıklar.

MQL5'te göstergeleri çağırmanın birkaç yolu vardır ve bunlar çoğunlukla IndicatorCreate() ve iCustom() fonksiyonları kullanılarak gerçekleştirilir. Ayrıca, bu fonksiyonlar yalnızca gösterge tanıtıcısını verir ve göstergeler üzerinde daha fazla çalışma bunun aracılığıyla yapılır. Peki tanıtıcı nedir? IndicatorCreate() ve iCustom() fonksiyonları nasıl ele alınır? Ve uzmanınız gösterge verilerini nasıl alacak? Tüm bu sorular bu makalede ele alınmıştır.

Bir kaynak dosyası oluşturma

Uzmanımızla başlamak için kaynak dosyasını oluşturalım. Bunu hemen hemen MetaEditor4'teki gibi Dosya -> Yeni menüsünden MQL5 Sihirbazını çağırarak yapacağız. İlk adımda Uzman Danışmanı (EA) seçin ve İleri düğmesine basın.


Yazar: KlimMalgin

 
faydalı makale. çok teşekkürler.
 

İyi ++

Teşekkürler.

 

Lütfen açıklayın.

" IndicatorCreate() kullanarak gösterge tanıtıcısını elde etme" içinde

Bir dizi oluşturun

MqlParam params[];      // Gösterge parametrelerini saklamak için dizi

Türü belirtmeden, dizi türünü gerektiği gibi değiştirin.

Bu nasıl çalışır? Herhangi bir yapı için mi yoksa sadece bu yapı için mi kullanılabilir? Var olan bir dizinin türünü değiştirmek mümkün müdür?

 
MqlParam tipi parametreler dizisi, IndicatorCreate() işlevi için yalnızca bir tanıtıcı oluştururken gereklidir. Bir şeyi değiştirmek istiyorsanız, IndicatorRelease kullanarak mevcut tanıtıcıyı "öldürmeniz" ve yeni bir tane oluşturmanız gerekir. Hareket halindeyken gösterge "motor değişimi" sağlanmamıştır.
 

Ama makalede, metinde.

   ***
   // Yavaş MA'nın periyodunu ayarlayın
   params[0].type         =TYPE_INT;
   params[0].integer_value=21;
   ***

ve onu takip eden.

   ***
   ArrayResize(params,2);
   // Adım
   params[0].type         =TYPE_DOUBLE;
   params[0].double_value = 0.02;
   ***
hiçbir şey silinmez, tür değiştirilir.....
 
Bunu bir yemek servisi düzeyinde ele alalım. Bir garson yemekleri bir tepsiye yerleştirir ve siparişinizi size getirir. Sonra aynı tepsiye başka bir müşterinin yemeğini koyuyor ve sizin siparişinizi de ona götürüyor. Bu, diğer müşteriyle aynı yemeği yediğiniz anlamına mı geliyor?
 

Yani, farklı yemekler sadece garsonun tepsisinde olabilir. Tamam, deneyeceğim.

int][double] gibi karışık tipteki diziler için herhangi bir plan var mı?

 
Silent:

Yani, farklı yemekler sadece garsonun tepsisinde olabilir. Tamam, deneyeceğim.

int][double] gibi karışık tipteki diziler için bir plan yok mu?

Yapıları kullanın, yardımdaki örneğe bakın - https://www.mql5.com/ru/docs/basis/types/casting#casting_structure:

Başka bir örnek, renk türünden RGB (Kırmızı, Yeşil, Mavi) renk gösterimini almak için kendi işlevinizi nasıl düzenleyebileceğinizi gösterir. Bunu yapmak için, aynı boyutta ancak farklı iç bileşime sahip iki yapı oluşturuyoruz . Kolaylık sağlamak için, yapıya RGB gösterimindeki rengi bir dize olarak döndüren bir fonksiyon ekleyelim.

#property script_show_inputs
input color          testColor=clrBlue;// test için rengi ayarlayın
//--- RGB renk gösterimi için yapı
struct RGB
  {
   uchar             blue;          // mavi renk bileşeni
   uchar             green;         // yeşil renk bileşeni
   uchar             red;           // kırmızı renk bileşeni
   uchar             empty;         // bu bayt kullanılmaz
   string            toString();    // string olarak almak için fonksiyon
  };
//--- rengi bir dize olarak çıktılayan fonksiyon
string RGB::toString(void)
  {
   string out="("+(string)red+":"+(string)green+":"+(string)blue+")";
   return out;
  }
//--- yerleşik tip rengini saklamak için yapı 
struct builtColor
  {
   color             c;
  };
//+------------------------------------------------------------------+
//| Betik program başlatma işlevi|
//+------------------------------------------------------------------+
void OnStart()
  {
//--- RGB olarak depolanacak değişken
   RGB colorRGB;
//--- renk türünü saklamak için değişken
   builtColor test;
   test.c=testColor;
//--- iki yapıyı içeriklerini kopyalayarak dönüştürme
   colorRGB=test;
   Print("color ",test.c," = ",colorRGB.toString());
//---
  }

Документация по MQL5: Основы языка / Типы данных / Приведение типов
Документация по MQL5: Основы языка / Типы данных / Приведение типов
  • www.mql5.com
Основы языка / Типы данных / Приведение типов - Документация по MQL5
 
Rosh:

Yapıları kullanın, yardımdaki örneğe bakın - https://www.mql5.com/ru/docs/basis/types/casting#casting_structure:

Yapıları az çok anlıyorum, dizilerle ilgileniyorum.

Teşekkürler.

 
Silent:

Yapıları az çok anladım, dizilerle ilgileniyorum.

Teşekkür ederim.

Bir yapı oluşturun ve bu türden bir dizi yazın.