Dize olarak verilen matematiksel ve mantıksal ifadeleri çözmek için bir sınıf içeren betik.
Betik, cTokenBase ve cTokenBase sınıfının bir üyesi olan cToken olmak üzere iki sınıf içerir. Sınıflar ayrı bir dosyaya taşınmamıştır, çünkü pratik uygulamalar için cTokenBase sınıfında bazı değişiklikler yapılması gerekmektedir (buna aşağıda değinilecektir).
MQL5 dilindeki tüm matematiksel fonksiyonlar desteklenmektedir: abs, arccos, arcsin, arctan, ceil, cos, exp, floor, log, log10, max, min, mod, pow, rand, round, sin, sqrt, tan.
Aritmetik ve mantıksal işlemler desteklenmektedir: ;/, %, *, +, -, >, <, >=, <=, ==, !=, &&, ||.
İfadenin argümanları, ondalık ayırıcı (nokta) içeren sayılar, kullanıcı değişkenleri ve kullanıcı dizileri olabilir. Kullanıcı değişkenleri ve dizileri kullanılırken, bu değişkenlerin ve dizilerin değerlerini alan fonksiyonların eklenmesi gerekir.
Kullanıcı değişkenlerinin ve dizilerinin değerlerini alma işlevleri cTokenBase sınıfına eklenir; aslında bu amaçla iki sınıfa ayrılmıştır: cToken sınıfı herhangi bir değişiklik yapılmadan kullanılırken, cTokenBase sınıfında değişkenlerin ve dizilerin değerlerini alma işlevleri bulunur.
Değişken ve dizilerin adları harflerden oluşur (büyük/küçük harf fark etmez; aynı şekilde ifadenin tamamının büyük/küçük harfleri de fark etmez), dizi elemanları köşeli parantez içindeki sayılarla 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 dizi adını kaydedin. Kayıt işlemi UsersVariables() işlevinde gerçekleştirilir. Bu işlevde UserVariables ve UserArrays değişkenlerine değerler atanır; ";" ayırıcısıyla ayrılmış değişken listeleri şeklinde dize değerleri atanır.
void UsersVariables() { UserVariables="a;b;c;d"; // kullanıcı değişkenleri listesi UserArrays="e;f"; // kullanıcı dizileri listesi }
2. UserFunc(string FuncName) işlevine, ilgili işlev argümanıyla birlikte belirli bir işlevin ç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 işlev"+FuncName+"belirlenmemiş"); return("0"); }
3. Her bir kullanıcı değişkeni için fonksiyon yazınız:
string a() { return("1"); } string b() { return("2"); } string c() { return("3"); } string d() { return("4"); }
4. UserArray(string ArrName, int aIndex) işlevine, işlevin ilk argümanı (ArrName değişkeni) ile belirli bir işlevin çağrılmasını ekleyin.
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şlevi"+ArrName+"belirlenmemiş"); return("0"); }
5. Her bir kullanıcı dizisi 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ım sırası
1. Kullanıcının ifadeyi gireceği bir dış değişken tanımlayın.
input string Expression="ifadeyi girin";
2. Modülün genel bölümünde, sınıfa işaret eden bir değişken tanımlayın:
cToken token;
3. Expression değişkeninde belirtilen ifade ile sınıfın başlatılmasını gerçekleştirin.
token.Init(Expression);
4. Gerektiğinde SolveExpression() yöntemini çağırın.
double Value=token.SolveExpression(); Sınıf, birden fazla ifadenin çözülmesi için kullanılabilir; her biri için ayrı bir sınıf işaretçisi tanımlanır.
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 dizileri kullanacaktır.
Sınıf, başka işlevlerin kullanılması için geliştirilebilir.
cToken sınıfına yeni işlevler ekleme
MetaQuotes Ltd tarafından Rusçadan çevrilmiştir.
Orijinal kod: https://www.mql5.com/ru/code/303
downloadhistory.mq5
Komut dosyası, geçerli sembol için mevcut geçmiş verileri yükler.
Rainbow Multiple Moving Average (RMMA) MT5
Rainbow Multiple Moving Average (RMMA) MetaTrader göstergesi - standart hareketli ortalamaya dayanan çok basit ama görsel olarak bilgilendirici bir göstergedir. Tercih ettiğiniz türde 66 gökkuşağı renkli hareketli ortalama çizgisi ve doğrudan grafiğin ana penceresinde fiyat çizer. Bu gösterge, ticaret platformunun hem MT4 hem de MT5 sürümleri için kullanılabilir.
CDownLoadHistory sınıfı
MQL5’teki programlarda geçmiş verilerinin yüklenmesini düzenlemek için kullanılır.
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.