Fan sayfamıza katılın
Öyleyse bir link gönderin -
başkalarının da faydalanmasını sağlayın
- Görüntülemeler:
- 29
- Derecelendirme:
- Yayınlandı:
-
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:
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
- 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).
- 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

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

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

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

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.