Alım-satım robotlarını ücretsiz olarak nasıl indirebileceğinizi izleyin
Bizi Facebook üzerinde bulun!
Fan sayfamıza katılın
Komut dosyasını ilginç mi buldunuz?
Öyleyse bir link gönderin -
başkalarının da faydalanmasını sağlayın
Komut dosyasını beğendiniz mi? MetaTrader 5 terminalinde deneyin
Görüntülemeler:
29
Derecelendirme:
(35)
Yayınlandı:
\MQL5\Scripts\
MQL5 Freelance Bu koda dayalı bir robota veya göstergeye mi ihtiyacınız var? Freelance üzerinden sipariş edin Freelance'e git

Bir dize ile verilen matematiksel ve mantıksal ifadeleri çözmek için bir sınıfa sahip bir kod.

Kod iki sınıf içerir cTokenBase ve cTokenBase sınıfının bir üyesi olan cToken. Sınıflar ayrı bir dosyaya yerleştirilmemiştir, çünkü pratik uygulamaları için cTokenBase sınıfında bazı değişiklikler yapmak gerekir (aşağıda bununla ilgili).

Tüm MQL5 matematiksel fonksiyonları desteklenir: abs, arccos, arcsin, arctan, ceil, cos, exp, floor, log, log10, max, min, mod, mod, pow, rand, round, sin, sqrt, tan.

Aritmetik ve mantıksal işlemler desteklenir: ;/, %, *, +, -, >, <, >=, <=, ==, !=, &&, ||.

Bir ifadenin bağımsız değişkenleri, ondalık ayırıcılı (noktalı) olanlar da dahil olmak üzere sayılar, kullanıcı değişkenleri ve kullanıcı dizileri olabilir. Özel değişkenler ve diziler kullanırsanız, bu değişkenlerin ve dizilerin değerlerini almak için fonksiyonlar eklemeniz gerekir.

Kullanıcı değişkenlerinin ve dizilerinin değerlerini elde etmek için fonksiyonlar cTokenBase sınıfına eklenir, aslında bu amaçla iki sınıfa bölünme yapılır - cToken sınıfı değişiklik yapılmadan kullanılır ve cTokenBase sınıfında değişkenlerin ve dizilerin değerlerini elde etmek için fonksiyonlar vardır.

Değişkenlerin ve dizilerin adları harflerden oluşur (büyük/küçük harf fark etmez, ayrıca tüm ifadenin büyük/küçük harf fark etmez), dizilerin öğeleri köşeli parantez içinde bir sayı ile tanımlanır, örneğin - e[0], e[1], f[0], f[1].

Örnek:

Aritmetik işlemler

Aritmetik işlemlerin sonucu

cTokenBase sınıfını düzenleme sırası

1. Değişken veya dizinin adını kaydedin. Kayıt işlemi UsersVariables() fonksiyonunda gerçekleştirilir. Fonksiyon, UserVariables ve UserArrays değişkenlerine değerler atar, dize değerleri atar - değişken listeleri ayırıcı ";" aracılığıyla.

      void UsersVariables()
      {
         UserVariables="a;b;c;d"; // kullanıcı değişkenleri listesi
         UserArrays="e;f";       // kullanıcı dizilerinin listesi 
      } 

2. UserFunc(string FuncName) fonksiyonunda, fonksiyonun ilgili argümanına belirli bir fonksiyonun çağrısını ekleyin.

      string UserFunc(string FuncName)
      {
         if(FuncName=="a")return(a()); 
         if(FuncName=="b")return(b());
         if(FuncName=="c")return(c());
         if(FuncName=="d")return(d());
         Alert("Değişken için fonksiyon "+FuncName+"tanımlanmamış");
         return("0");
      }

3. Kullanıcı değişkenlerinin her biri için fonksiyonlar yazın:

      string a()
      {
         return("1");
      }
      string b()
      {
         return("2");
      }
      string c()
      {
         return("3");
      }
      string d()
      {
         return("4");
      } 

4. UserArray(string ArrName,int aIndex) fonksiyonunda, fonksiyonun karşılık gelen ilk argümanına (ArrName değişkeni) belirli bir fonksiyon çağrısı yazın.

aIndex değişkeni kullanıcı dizisinin elemanının indeksini belirleyecektir.

      string UserArray(string ArrName,int aIndex)
       {
         if(ArrName=="e")return(e(aIndex));
         if(ArrName=="f")return(f(aIndex));
         Alert("Dizi için işlev "+ArrName+"tanımlanmamış");
         return("0");
      }

5. Özel dizilerin her biri için fonksiyonlar yazın:

      string e(int Index)
      {
         string v[]={"1","2","3","4","5","6","7","8","9"};
         return(v[Index]);
      }
      string f(int Index)
      {
         string v[]={"10","20","30","40","50","60","70","80","90"};
         return(v[Index]);
      }

Sınıfın kullanıldığı sıra

1. Kullanıcının ifadeyi gireceği harici bir değişken bildirin.

input string Expression="ifade girin.";

2. Modülün genel bölümünde, sınıfa bir değişken işaretçisi bildirin:

cToken token;

3. Sınıfı Expression değişkeninde belirtilen ifade ile başlatın.

   token.Init(Expression);

4. SolveExpression() yöntemini gerektiği gibi çağırın

double Value=token.SolveExpression();

Bir sınıf birkaç ifadeyi çözmek için kullanılabilir ve her biri için farklı bir sınıf işaretçisi bildirilir.

cToken token1;
cToken token2;
cToken token3;
cToken token4;

Bu durumda, tüm sınıf örnekleri cTokenBase sınıfındaki aynı kullanıcı değişkenlerini ve dizilerini kullanacaktır.

Sınıf, diğer fonksiyonları kullanacak şekilde geliştirilebilir.


cToken sınıfına yeni fonksiyonlar ekleme

  1. Yeni bir fonksiyon kaydedin. Kayıt işlemi Init() işlevinde "as" değişkeninde gerçekleştirilir (kullanıcı değişkenlerinin ve dizilerinin kaydına benzer şekilde).
  2. Yeni fonksiyonu hesaplamak için kodu SolveFunc(string Func,string & aRes[]) fonksiyonuna ekleyin. Fonksiyonun hesaplanması için argümanlar aRes[] dizisinde yer alacaktır. Fonksiyonlar herhangi bir sayıda argümana sahip olabilir.

MetaQuotes Ltd tarafından Rusçadan çevrilmiştir.
Orijinal kod: https://www.mql5.com/ru/code/303

downloadhistory.mq5 downloadhistory.mq5

Kod, mevcut geçmişi geçerli karaktere göre yükler.

GARCH Indicator - Industrial Level Volatility Estimator GARCH Indicator - Industrial Level Volatility Estimator

Volatility indicator with a threshold line based on the Generalized AutoRegressive Conditional Heteroskedasticiticy (GARCH) statistical model used for time series analysis and forecasting.

Sınıf CDownLoadHistory Sınıf CDownLoadHistory

MQL5 programlarında geçmiş yüklemesini düzenlemek için kullanılır.

Telegram To MT5 Copier Telegram To MT5 Copier

TelegramToMT5, Telegram kanallarınızdan, gruplarınızdan ve özel sohbetlerinizden gelen mesajları doğrudan ticaret grafiklerinizde görüntüleyerek Telegram ve MT5 arasında köprü kuran bir MetaTrader 5 Uzman Danışmanıdır. Basitçe bir Telegram botu oluşturun, istediğiniz kanallara / gruplara ekleyin ve EA'nın tüm mesajları gerçek zamanlı olarak grafiğinizde yorum olarak göstermesine izin verin.