xdiz.net
Dev Adımlar Atacağınız İş Siteniz
www.devadim.com

   

Yazılar  
Forum yazısı - Yorumlar: 1 - 7 || Toplam yorum: 7
<< Geri [ 1 ] İleri >>
 Gürsel Gürel
Dev Nokta
MT4 ile Expert Programlamak 2009-03-12 09:04:27
     

Sayın Üyelerimiz,

Bize gelen soruların ve taleplerin yoğunluğu karşısında burada MT4 ile Expert Advisor programlamanın detaylarını sizlerle paylaşmaya karar verdik. Bu çerçevede Türkiye'de ilk defa Türkçe olarak bu incelikleri yayınlayacağız.

Hergün İngilizceden Türkçeye çevrilmiş olarak birkaç sayfa bilgiyi burada paylaşacağız. Toplam 171 sayfalık tüm bu detayları çalışmanız halinde iyi bir Expert Advisor programlayıcısı olabilirsiniz.

Ancak önemle belirtmek istediğimiz husur şudur; Başarılı bir expert advisor yazmanın iyi bir expert advisor programcısı olmakla ilgisi yoktur. Zira biz bu konuda Türkiyenin en iyi, dünyanın ise sayılı programlayıcılarından biri ile işbirliği içinde olmamıza rağmen ancak 4 yıllık bir sürecin sonunda başarıya ulaşabildik. Dolayısı ile EA (Expert Advisor) yazmaya ilgi duymanız beyninizi geliştirmek, dünyaya matematiksel açıdan bakabilmek amacı için size çok büyük faydalar sağlayabilir yani bir hobi ve boş zaman geçirme çalışması olabilir ama ben mutlaka başarılı bir EA yazacağım savı ile bu işe hayatınızı vermeniz asla tavsiye edilmez. Zira dipsiz bir kuyunun içine girip çıkamaz hatta akıl sağlığınıza zarar verebilirsiniz !

Lütfen bu tavsiyelerimizi dikkate alınız.

Bilgilerinize.
DevPara
 
 Ali Feridun
Sarp Endüstriyel Ürünler
Re: MT4 ile Expert Programlamak 2009-03-12 23:12:22
     

bekliyoruz
 
 Gürsel Gürel
Dev Nokta
Re: MT4 ile Expert Programlamak 2009-03-13 00:49:09
     

MetaQuotes Dili 4 (MQL4) ticaret stratejilerinin programlanması için yerleştirilmiş yeni bir dildir.Bu dil,otomatikleştirilmiş ticaret yöneticiliği yapan ve sizin kusursuz biçimde ticaret stratejilerinizi yerine getiren,Uzman Danışmanlarınızı yaratmanıza izin verir.Bunun yanı sıra, MQL4 kendinize ait Özel Göstergeler, Elyazıları ve Kütüphaneler yaratılması için de kullanılabilir.

İşlevlerin geniş bir miktarı geçerli ve önceden aktarılmış gelirlerin analizinde temel aritmetik ve mantık kadar gereklidir.Ayrıca, temel göstergeler inşa edilmiştir ve yerleştirmeler ve kontrol düzeni komutları vardır.

MetaEditor 4 (metin editörü), MQL4 dilinin farklı inşası için program kodu yazılmasında kullanılır.Kullanıcıları kendilerini uzman sistem metnine alıştırmalarına yardım eder. MQL4 dili için bir Yardım Sistemi olarak MetaQuotes dil sözlüğünü kullanırız.Kısaltılmış rehber, kategorilere,operasyonlara,saklı kelimelere ve diğer dillerin inşasına bölünmüş fonksiyonlar içerir ve bizim kullandığımız tüm unsurların tanımlarını bulmamıza izin verir.

MetaQuotes Dili 4’ de yazılmış olan programların farklı özellikleri ve amaçları vardır:
 Expert Advisor - Uzman Danışman, mekanik ticaret sistemi (MTS)’ ni kesin bir çizelgeye bağlar.Bir danışman,verilmiş olan bir sembol için gelen her imi çalıştırmaya başlar.Eğer Danışman o anda önceki bir işlemden geçiyorsa,yeni bir im için başlatılmayacaktır (örneğin;Danışman henüz onun operasyonunu tamamlamadı).Danışman,sizi ticaret olasılığı ve ticaret sunucusuna direkt olarak bir hesaptaki ticaretin otomatik olarak gönderilip gönderilmeyeceği hakkında haberdar eder.Birçok ticaret sistemlerinde olduğu gibi terminal, tarih dataları üzerinde test edilen stratejiler ile ticaret çizelgesindeki giriş-ve-çıkış noktalarının sergilenmesini destekler.
Uzmanlar terminal_directoryexperts de depolanır.
 Custom Indicator - Özel Gösterge,müvekkil terminaline zaten entegre edilip bağımsız olarak eklenmiş, teknik bir göstergedir.Yerleştirilmiş göstergelerdeki gibi otomatik olarak ticaret yapamazlar ve sadece çözümsel işlevlerin yürütülmesi için tasarlanmışlardır.
Özel Göstergeler terminal_directoryexpertsindicators da depolanır.
 Script - Elyazısı,bazı aksiyonların tek bir uygulaması için tasarlanmıştır.Farklı Uzman Danışmanlar,Elyazılarını tickwise olarak koşulamazlar, fakat rica ederler.
Elyazıları terminal_dictionaryexpertsscripts de depolanır.
 Library - Kütüphane, sık sık kullanılan programları içeren özel işlevlerin takımıdır.Kütüphaneler uygulamayı kendileri başlatamazlar.
Kütüphanelerin terminal_directoryexpertslibraries. de depolanması önerilir.
 Included file - İçerilmiş dosya,en sık sık kullanılan özel programların bloklarının bir dosya kaynağıdır.Bunun gibi dosyalar,uzmanların, elyazılarının,özel göstergelerin ve kütüphanelerin derleme aşamalarına dahil edilebilirler.Kütüphane işlevlerinin çağırılması ek sıkıntılar yarattığından İçerilmiş dosyaların kullanımı,kütüphanelerin kullanımına tercih edilir.
İçerilmiş dosyaların terminal_directoryexpertsinclude da depolanması önerilir.

A- Basics - Temeller

MetaQuotes Dili 4,ticari stratejilerin programlanması için entegre edilmiş yeni bir dildir.Bu dil, ticari yöneticiliği otomatikleştiren ve kendi ticari stratejilerini yerine getirmek için uygun olan kullanıcılara kendi programlarını yazmasına izin verir (Uzman Danışmanlar).Bunun yanı sıra,kendiniz için kendi teknik göstergelerinizi (Özel Göstergeler),elyazılarınızı ve kütüphanelerinizi MQL4 ‘ de yaratabilirsiniz.

1- Syntax – Sözdizimi

MQL4 ‘ün sözdizimi C-like sözdiziminden çoktur ve bazı işlevlerinden ayrıdır:
 Adres aritmetiği yok;
 do….while operatörü yok;
 goto….. operatörü yok;
 [condition]?[expression 1]:[expression 2] operasyonu yok
 bileşik data tipleri (yapılar) yok
 karmaşık ödevler olanaksızdırlar (örneğin; val1=val2=0; arr[i++]=val; cond=(cnt=OrdersTotal)>0; gibi )
 mantıklı bir anlatım hesabı her zaman tamamlanır;asla erkenden son verilmez.





1- a) Comments – Açıklamalar

Çok satırlı açıklamalar /* sembolü ile başlar; */ sembolü ile biter.Bu gibi açıklamalara yuva yapılamaz.Tek açıklamalar // sembolü ile başlar; yeni bir satırın sembolü ile biter ve çok satırlı açıklamalar içerisine yuvalandırılır.Açıklamaların mümkün olan boş yerlerde ve izin verilen herhangi bir yer numarasında olmasına izin verilir.
Örnekler :
// single comment
/* multi-
line // nested single comment
comment
*/


1- b) Identifiers – Kimlikleyiciler

Kimlikleyiciler değişken , işlevler ve veri türlerinin adları olarak kullanılmışlardır. Bir kimlikleyicinin uzunluğu 31 karakteri aşamaz.

Kullanabileceğiniz semboller;0’dan 9’ a kadar numaralar, a’dan z’ye ve A’dan Z’ye kadar Latin küçük ve büyük harfler(farklı semboller olarak bilinen),altçizgi sembolü (_). İlk sembol bir numara olamaz. Kimlikleyici özel amaçlı sözcükle çakışmamalıdır.

Örnekler :
NAME1 namel Total_5 Paper


1- c) Reserved words – Özel amaçlı sözcükler

Aşağıdaki listede verilen Kimlikleyiciler özel amaçlı sözcükleri düzeltir.Kesin bir aksiyon onların her birine atanır ve diğer amaçlar için kullanılamazlar.

Data types Memory classes Operators Other
bool extern break false
color static case true
datetime continue
double default
int else
string for
void if
return
switch
while


2- Data types – Veri-data Tipleri

Herhangi bir program veri ile işletilir.Veri,kendi özelliklerine bağlı olan farklı tiplerden yapılabilir.Örneğin; tamsayı verisi düzen bileşenlerine erişmek için kullanılır.Fiyat verisi,çift doğruluk ile kaynayan noktanın ikisine birden aittir.Bu şu gerçekle ilişkilidir ki, MQL4’deki veriyi fiyatlandırmak için özel veri türü önceden görülmez.Farklı tiplerdeki veriler farklı oranlar ile işlemden geçirilirler.Tamsayı verisi en hızlı işlemden geçirilendir. Çifte kesinlik verisini işlemden geçirmek için özel bir co-işlemci kullanılmıştır.Bununla beraber, verinin içsel sunucusunun yüzen nokta ile olan suç ortaklığından dolayı tamsayı olanlardan daha yavaş işlemden geçirilir.Dizgi verisi,dinamik bilgisayar bellek tahsisi/tekrar tahsisinden dolayı,en uzundaki işlemden geçirilir.

Ana veri tipleri şunlardır:
 Integer (int) : Tamsayı
 Boolean (bool) :
 Literals (char) :Harfi harfine
 Strings (string) : Dizgi
 Floating-point number (double) : Yüzen-nokta numarası
 Color (color) : Renk
 Date and time (datetime) : Tarih ve zaman
Renk ve tarih-zaman tiplerinin, sadece hayalinde canlandırmayı kolaylaştırma anlamı vardır ve bu parametrelerin girişi uzman danışman özellik sekmesi veya özel gösterge “Girdiler” sekmesinden yapılır.Renk ve tarih-zaman tiplerinin verisi,tamsayı değeri .int olarak temsil edilmiştir ve çift de aritmetik (numerik) tip olarak adlandırılmıştır.
Sadece imalı tip dökümü ifadelerde kullanılmıştır.
2- a) Type casting – Tip Dökümü
Sadece imalı tip dökümü MQL4 ifadelerinde kullanılmıştır.Tip önceliği dökümde gelişir:
int (bool,color,datetime);
double;
string;
Operasyonlar gerçekleştirilmeden önce (atama olanları için hariç),veri en yüksek öncelikli tipe dönüştürülür.
Örnekler:
int i = 1 / 2; // no types casting, the result is 0
int i = 1 / 2.0; // the expression is cast to the double type, then is to the target type of int, the result is 0
double d = 1.0 / 2.0; // no types casting, the result is 0.5
double d = 1 / 2.0; // the expression is cast to the double type that is the same as the target type, the result is 0.5
double d = 1 / 2; // the expression of the int type is cast to the target type of double, the result is 0.0

int i = 1 / 2; // tiplerin dökümü yoktur; sonuç 0’dır
int i = 1 / 2.0; // ifade çift tipe fırlatılır sonra da int’ in hedef tipine; sonuç 0’dır.
double d = 1.0 / 2.0; // tiplerin dökümü yoktur; sonuç 0.5’dir
double d = 1 / 2.0; // ifade, hedef tipi ile aynı olan çift tipe fırlatılır; sonuç 0.5’dir.
double d = 1 / 2; // int tipinin ifadesi çiftin hedef tipine fırlatılır; sonuç 0.0’dır

diziler = 1.0 / 8; // ifadesi çift tipte kullanılır,ardından dizinin hedef tipi yapılır,sonuç : "0.125" (5 karakteri içeren dizgi) diziler = NULL; // int tipinin sabiti dizginin hedef tipine atılır,sonuç : "0" (1 karakteri içeren dizgi)
Tip dökümü sadece sabitler üzerine uygulanmaz fakat ayrıca uygun tiplerin değişkenlerine de uygulanır.
2- b) Integer constants – Tamsayı Sabitleri
Ondalıklar: 0’dan 9’ a kadar olan sayılar; sıfır ilk sayı olamaz.
Örnekler:
12, 111, -956 1007
Hexadecimals (Altıondalıklar) : 0’dan 9’ a kadar olan sayılar, a’dan f’ye veya A’dan F’ye kadar olan harfler 10’dan 15’e kadar olan değerleri temsil ederler; bunlar 0x veya 0X ile başlarlar.
Örnekler :
0x0A, 0x12, 0X12, 0x2f, 0xA3, 0Xa3, 0X7C7
Onun içsel gösterimi uzun bir 4-bayt tamsayı sayısıdır.Tamsayı sabitleri m -2147483648’den 2147483647’ye kadar olan değerler olarak varsayılabilir. If the constant exceeds this range, the result is undefined.
Eğer sabit bu alanı geçerse, sonuç tanımlanamaz.
2- c) Literal constants -
Herhangi bir tek karakter, tek tırnak işareti veya 'x10' gibi gözüken,ki bu karakter tamsayı tipinin sabitidir, bir karakterin bir hexadecimal ASCII-kodu olarak eklenmiştir.Tek tırnak işareti ('),çift tırnak işareti ("),soru işareti (?),ters eğik çizgi () ve kontrol karakterleri gibi bazı karakterler, aşağıda yer alan tabloya dayanarak ters eğik çizgi () ile başlayan karakterlerin kombinasyonu olarak temsil edilebilirler.
line feed NL (LF) n
horizontal tab HT t
carriage return CR r
reverse slash \
single quote ' '
double quote " "
hexadecimal ASCII-code hh xh

çizgi besleme NL (LF) n
yatay sekme HT t
taşıma geri dönüşü CR r
ters eğik çizgi \
tek fiyat teklifi (tırnak) ' '
çift fiyat teklifi (tırnak) " "
onaltılık ASCII-kodu hh xh
Yukarıda listelenmiş ters eğik çizgiyi takip eden farklı bir karakter var ise sonuç tanımlanamaz:
int a = 'A';
int b = '$';
int c = '©'; // code 0xA9
int d = 'xAE'; // symbol code ®


Onun içsel gösterimi uzun bir 4-bayt tamsayı sayısıdır.Harfi harfine sabitleri 0’dan 255’e kadar olan değerler olarak farz edilebilirler.Eğer sabit verilmiş olan diziyi aşarsa,sonuç tanımlanamaz.


2- d) Boolean constants – Boolean Sabitleri

Boolean sabitlerinin true(doğru) veya false (yanlış) değerlerinin olması gerekir,bunların nümerik temsilleri 1 veya 0’dır,sırasıyla.Ayrıca True veya TRUE, False veya FALSE da kullanılabilir.

Örnekler:
bool a = true;
bool b = false;
bool c = 1;
Onun içsel gösterimi uzun bir 4-bayt tamsayı sayısıdır.Boolean sabitleri 0 veya 1 değerleri olarak farz edilebilirler.

2- e) Floating-point number constants (double) – Yüzen Nokta Sabitleri

Yüzen-nokta sabitleri, tamsayı bölümü,nokta (.) ve kesirli bölümden oluşmaktadır.Tamsayı ve kesirli bölümler, ondalık sayıların sıralarını temsil etmektedirler.

Örnekler:
double a = 12.111;
double b = -956.1007;
double c = 0.0001;
double d = 16;
Onun içsel gösterimi 8 baytın bir çift-doğruluk sayısıdır.Yüzen-nokta sabitleri 1.7 * e-308 den 1.7 * e308 e kadar olan değerler farz edilebilirler.Eğer bir sabit bu değeri aşarsa, sonuç tanımlanamaz.

2- f) String constants – Dizgi Sabiti

Dizgi sabiti, çift tırnak işaretleri içerisine konulmuş ASCII-kod karakterlerinin bir serisidir : “Karakter sabiti”.

Bir dizgi sabiti, tırnak işaretleri içerisine konulmuş karakterlerin bir tertibidir.Bu dizgi sabitidir.Eğer dizgiye çift tırnak işareti konulması gerekli ise bundan önce bir ters eğik çizgi konulması şarttır. Herhangi bir özel karakter sabiti dizgiye konulabilir eğer bunlardan evvel bir ters eğik çizgi var ise.Dizgi sabitinin uzunluğu 0 ve 255 karakter arasındadır.Eğer dizgi sabiti daha uzun ise sağdaki lüzumsuz karakterler red edileceklerdir ve derleyici karşılık olarak uyarı verecektir.

Örnekler:
"This is a character string"
"Copyright symbol txA9"
"this line contains an LF symbol n"
"A" "1234567890" "0" "$"
Onun içsel gösterimi 8 baytın bir yapısıdır.Yapının ilk öğesi,satır için dağıtılmış tamponun büyüklüğünü içeren ,uzun bir tamsayıdır.Yapının ikinci öğesi,satır içeren tamponun 32-düzen (sıra;diziliş) adresidir.

2- g) Color constants – Renk Sabitleri

Renk sabitleri üç yol ile temsil edilmiş olabilir : harfiyen,tamsayılar ile veya isimler ile (sadece web renklerini adlandırmak için)

Harfi harfine gösterimi,üç ana renk bileşeninin üç bölüm temsilinin nümerik(sayısal) oran değerini içermektedir: kırmızı,yeşil,mavi.Sabit C ile başlar ve tek tırnak işareti içerisine konulur.Bir renk bileşeninin sayısal oran değerleri 0’dan 255’e kadar olan menzil içerisinde yer alır.Tamsayı-değer gösterimi,hexadecimal (hexaondalık) veya bir ondalık sayının formu şeklinde yazılır.Bir hexadecimal (hexaondalık) sayısı 0x00BBGGRR gibi gözükür ki burada RR kırmızı renk bileşeninin, GG yeşil olanının, BB mavi olanının oranıdır.Ondalık (decimal) sabitler, direkt olarak RGB’ de yansıtılmazlar.Bunlar, hexadecimal (hexaondalık)tamsayı gösteriminin bir ondalık değerini temsil ederler.

Belirli renkler,Web renk setlerini yansıtırlar :

Örnekler:
// symbol constants
C'128,128,128' // gray
C'0x00,0x00,0xFF' // blue
// named color
Red
Yellow
Black
// integer-valued representation
0xFFFFFF // white
16777215 // white
0x008000 // green
32768 // green
Onun içsel temsili 4 baytın bir uzun tamsayı sayısıdır.İlk bayt öngörülmeyecektir.Diğer üç bayt RGB bileşenlerini içerir.


2- h) Datetime constants – Tarih zaman Sabitleri

Tarih-zaman sabitleri, yıl,ay,tarih,saatler,dakikalar ve saniyelerin değerleri için 6 bölümün harfi harfine satır oluşumu gibi temsil edilebilirler.Sabit, tek tırnak işareti içerisine konulur ve D ile başlar.Tarih (yıl,ay,tarih) veya zaman (saatler,dakikalar,saniyeler)dan bir ya da her ikisi birden atlanabilir.Tarih-zaman sabiti, Jan 1, 1970’ den Dec 31, 2037’ye kadar değiştirilebilir.

Örnekler:
D'2004.01.01 00:00' // New Year
D'1980.07.19 12:30:27'
D'19.07.1980 12:30:27'
D'19.07.1980 12' //equal to D'1980.07.19 12:00:00'
D'01.01.2004' //equal to D'01.01.2004 00:00:00'
D'12:30:27' //equal to D'[compilation date] 12:30:27'
D'' //equal to D'[compilation date] 00:00:00'
Onun içsel temsili 4 baytın bir uzun tamsayı sayısıdır.Değer, 00:00 Jan 1, 1970’den itibaren geçen saniyelerin miktarını temsil eder.

3- Operations & Expressions – Operasyon Sembolleri

Bazı karakterler ve karakter sıralarının özel bir önemi vardır.Bunlar operasyon sembolleri olarak adlandırılırlar. Örneğin;
+ - * / % symbols of arithmetic operations
&& || symbols of logic operations
= += *= symbols of assignment operations

+ - * / % aritmetik operasyonların sembolleri
&& || mantıksal operasyonların sembolleri
= += *= atama operasyonlarının sembolleri

Operasyon sembolleri ifadelerde kullanılırlar ve bunlar, kendilerine tahis edilen operands verildiğinde bir anlam ifade ederler.

Noktalama işaretleri de vurgulanmıştır.Bunlar, parantezler,rabıt işaretleri,virgül,iki nokta üst üste,noktalı virgüldür.

Operasyon sembolleri, noktalama işaretleri, boşluklar dil öğelerini birbirlerinden ayırmak için kullanılırlar.


3- a) Expressions – İfadeler, Semboller

Bir ifade, birden fazla operand ve operasyon karakteri içerir.Bir ifade, birçok satırda yazılabilir.

Örnekler:
a++; b = 10;
x = (y * z) /
(w + 2) + 127;
Noktalı virgül (;) ile biten bir ifade, operatördür.


3- b) Arithmetical operations – Aritmetik Operasyonlar

Aritmetik operasyonlar, toplamsal ve çarpımsal operasyonlar içerir.
Sum of values i = j + 2;
Difference of values i = j - 3;
Changing the operation sign x = - x;
Product of values z = 3 * x;
Division quotient i = j / 5;
Division remainder minutes = time % 60;
Adding 1 to the variable value i++;
Subtracting 1 from the variable value k--;

değerlerin toplamı i = j + 2;
değerlerin farkı i = j - 3;
operasyon imini değiştirme x = - x;
değerlerin ürünü z = 3 * x;
bölme işlemi bölümü i = j / 5;
bölme işlemi kalanı minutes = time % 60;
değişken değerine 1 eklenmesi i++;
değişken değerinden 1 çıkarılması k--;
Ekleme/çıkarma operasyonları 1 (artış/azalış) ifadelerde kullanılamaz.

Örnekler:
int a=3;
a++; // valid expression
int b=(a++)*3; // invalid expression

int a=3;
a++; // geçerli ifade
int b=(a++)*3; // geçerli olmayan ifade



3- c) Assignment operation – Atanan Operasyonlar – Operasyon Ataması

Verilen operasyonları içeren ifadelerin değeri, atamadan sonra operand ın geride bıraktığı değerdir

Assigning the y value to the x variable y = x;

y değerini x değişkeninde görevlendirme y = x;

Takip edilen operasyonlar, operasyon ataması ile birim aritmetik veya bitwise operasyonlardır :

Adding x to the y variable y += x;
Subtracting x from the y variable y -= x;
Multiplying the y variable by x y *= x;
Dividing the y variable by x y /= x;
Module x value of y y %= x;
Logical shift of y representation to the right by x bit y >>= x;
Logical shift of y representation to the left by x bit y <<= x;
Bitwise operation AND y &= x;
Bitwise operation OR y |= x;
Bitwise operation exclusive OR
of x and y binary notations y ^= x;

x’i y değişkenine ekleme y += x;
x’i y değişkeninden çıkarma y -= x;
y değişkenini x ile çarpma y *= x;
y değişkenini x ile bölme y /= x;
y’nin x değeri modülü y %= x;
x biti tarafından y sunumunun sağa doğru mantıksal kaydırması y >>= x;
x biti tarafından y sunumunun sola doğru mantıksal kaydırması y <<= x;
Bitsel operasyon AND (VE) y &= x;
Bitsel operasyon OR (YA DA) y |= x;
x ve y ikili değer gösterimlerinin Bitsel operasyon özel OR (YA DA)’sı y ^= x;

Bir ifadede atamanın tek bir operasyonu olabilir. Bitwise operasyonları sadece tamsayı sayılarıyla gerçekleştirilirler. Mantıklı vardiya operasyonu 5 ikili rakamdan x değerlerini daha az kullanır.Daha büyük rakamlar rededilir; böylece vardiya 0’dan 31’ e kadar olan parçanın menzili içindir. %= operasyonu ile (x oran birimiyle y değeri ) sonuç işareti bölünmüş sayının işaretine eşittir.

3- d) Operations of relation – İlişki veya Mantıksal işlem Operasyonları, İlişkileri

Mantıklı değer TRUE (DOĞRU), sıfırdan farklı herhangi bir değer ile temsil edilirken mantıklı değer FALSE (YANLIŞ), bir tamsayı sıfır değeriyle temsil edilmiştir.

İlişki veya mantıksal işlemlerin operasyonlarını içeren ifadelerin değeri 0 (FALSE _ YANLIŞ) veya 1(TRUE – DOĞRU)’dir.

True if a equals b a == b;
True if a does not equal b a != b;
True if a is less than b a < b;
True if a is greater than b a > b;
True if a is less than or equals b a <= b;
True if a is greater than or equals b a >= b;

True (doğru) dur eğer a b’ye eşit ise a == b;
True (doğru) dur eğer a b’ye eşit değil ise a != b;
True (doğru) dur eğer a b’den küçük ise a < b;
True (doğru) dur eğer a b’den büyük ise a > b;
True (doğru) dur eğer a b’den küçük ya da eşit ise a <= b;
True (doğru) dur eğer a b’de büyük ya da eşit ise a >= b;

İki normalleştirilmemiş kayan nokta sayısı == veya != operasyonları ile bağlanamazlar.Bunun nedeni, birini diğerinden çıkarma gerekliliğidir ve normalleştirimiş sonucun sıfır ile kıyaslanmasına ihtiyaç duyulmasıdır.

3- e) Boolean operations – Boolean Operasyonları

Mantıklı olumsuzluğun operand (işlenen) i (operasyon ünlem işareti olarak gösterilmez) aritmetik tipten olmalıdır. Eğer operand (işlenen) değeri FALSE (YANLIŞ) (0) ise sonuç TRUE(DOĞRU) (1)’ ye eşittir ve eğer operand FALSE (YANLIŞ) (0)’dan farklı ise sonuç FALSE (YANLIŞ) (0)’a eşittir.

if(!a) Print("not 'a'");

Mantıksal operasyon OR (||) x ve y nin değerleridir.Eğer x veya y değeri doğru ise (sıfır değil) ifade değeri TRUE (DOĞRU)(1)’ dur. Aksi halde, FALSE (YANLIŞ)(0) olur. Mantıklı ifadeler tamamen hesaplanırlar.Örneğin; “kısa tahmin” yöntemi onlara uygulanmaz.
if(x<0 || x>=max_bars) Print("out of range");

Mantıksal operasyon AND (&&)x ve y nin değerleridir.Eğer x ve y nin ikisinin birden değerleri doğruysa (sıfır değil) ifadenin değeri TRUE (DOĞRU) (1)’dur.Aksi halde, FALSE (YANLIŞ) (0) olur.

if(p!=x && p>y) Print("TRUE");

3- f) Bitwise operations -

Değişken değerin tamamlaması bire kadar yapılır.İfadenin değeri tüm rakamlarda , n’ nin 0 içerdiği 1’i içerir ve n’nin 1 içerdiği tüm rakamlarda 0 içerir.
b = ~n;

x’in İkili-kodla gösterimi, y rakamları ile sağa kaydırılır.Sağ kaydırma mantıksal olandır.Örneğin; serbest bırakılan sol taraf parçası sıfır ile doldurulacaktır.
x = x >> y;

x’in İkili-kodla gösterimi, y rakamları ile sağa kaydırılır.Sağda serbest bırakılan rakamlar sıfır ile doldurulacaklardır.
x = x << y;

Bitwise operasyonu AND (VE), ikili-kodla x ve y nin temsilleridir.İfade değeri, x ve y ‘nin ikisinin birden sıfır içermediği yerlerde tüm rakamlarda 1 (TRUE)’i içerir ve diğer bütün rakamlarda 0 (FALSE) içerir.
b = ((x & y) != 0);

Bitwise operasyonu OR (VEYA), ikili-kodla x ve y nin temsilleridir. İfade değeri, x veya y’ nin 0’ a eşit olmadığı yerlerde tüm rakamlarda 1'i içerir ve tüm diğer rakamlarda 0 içerir.
b = x | y;

Bitwise operasyonu EXCLUSIVE OR (MÜNHASIR YA DA), ikili-kodla x ve y nin temsilleridir. . İfade değeri,x ve y’ nin farklı ikili değerlere sahip oldukları yerlerde tüm rakamlarda 1'i içerir ve diğer bütün rakamlarda 0 içerir.
b = x ^ y;

Bitwise operasyonları sadece tamsayılarla yürütülürler.


3- g) Other operations – Diğer Operasyonlar

İndeksleme :
Dizinin i-th öğesine hitap etmekte, ifade değeri seri numarası i ile değişkenin değeridir.

Örnek:
array[i] = 3; //Assign the value of 3 to the i-th element of the array.

array[i] = 3; //Düzenin i-th elemanında 3’ün değerini görevlendirir.


Sadece bir tamsayı bir dizinin içeriği olabilir.Dört-boyutlu ve altında dizilere izin verilir.Her ölçüm, 0’dan ölçüm büyüklüğü-1’e kadar indekslenmiştir.Belirli durumda, 50 öğeden oluşan bir bir-boyutlu dizi için, birinci öğenin referansı [0] dizisine benzeyecektir, ki en sona öğe [49]’u dizecektir.

Dizi ötesi erişimde, alt sistem yürütücüsü ERR_ARRAY_INDEX_OUT_OF_RANGE hatası üretir ki bu GetLastError() fonksiyonunun içinden geçirilebilir.

x1,x2,...,xn tartışmaları ile fonksiyonu arama :
Her tartışma, uygun tipin bir sabitini, bir değişkenini ya da bir ifadesini temsil edebilir. Geçen tartışmalar virgüller ile ayrılırlar ve parantez içerisinde olmak zorundadırlar;açıklık parantezler çağrılmış fonksiyonun ismini takip etmek içindir.

İfade değeri fonksiyon ile geri dönen değerdir.Eğer geri dönen değer geçersiz tip ise bu tip bir fonksiyon araması atama operasyonunun sağ tarafında yer alamayabilir. Lütfen, x1,x2,...,xn ifadesinin bu düzende tam olarak yürütüldüğünden emin olun.

Örnek :
double SL=Bid-25*Point;
int ticket=OrderSend(Symbol(),OP_BUY,1,Ask,3,SL,Ask+25*Point,"My comment",123,0,Red);

Virgül Operasyonu :
Virgüller ile ayrılan ifadeler, soldan sağa doğru yürütülürler.Sol ifade hesaplamalarının tüm taraflardaki etkileri, sağ taraftaki ifadenin hesaplanmasından önce belirebilir.Sonuç tipi ve değer sağ ifade ile çakışırlar.Geçmek için parametrelerin listesi (aşağıya bakınız) bir örnek olarak öngörülebilir.

Örnek :
for(i=0,j=99; i<100; i++,j--) Print(array[i][j]);



3- h) Precedence rules – Önce Yönetim, öncelik yönetimi

Çizelgedeki her operasyon grubu aynı önceliğe sahiptir.Öncelik arttıkça,çizelgedeki grubun pozisyonu da artar. Öncelik kuralları, operasyonların ve işlenenlerin gruplanmasını gösterir.

The precedence rules determine the grouping of operations and operands.

() Function call From left to right
[] Referencing to an array element
! Logical negation From right to left
- Sign changing operation
++ Increment
-- Decrement
~ Bitwise negation (complement)

() Fonksiyon çağırması Soldan sağa doğru
[] Bir düzen elemanına referans gösterilmesi
! Mantıksal olumsuzlama Sağdan sola doğru
- Operasyonu değiştiren işaret
++ Artış
-- Azalış
~ Bitsel olumsuzlama (tümleyici)

& Bitwise operation AND From left to right
| Bitwise operation OR
^ Bitwise operation exclusive OR
<< Left shift
>> Right shift

& Bitsel operasyon AND soldan sağa doğru
| Bitsel operasyon OR
^ Bitsel operasyon özel OR
<< Sol sekme
>> Sağ sekme

* Multiplication From left to right
/ Division
% Module division

* Çarpma işlemi Soldan sağa doğru
/ Bölme işlemi
% Modül bölme işlemi

+ Addition From left to right
- Subtraction

+ Toplama işlemi Soldan sağa doğru
- Çıkarma işlemi

< Less than From left to right
<= Less than or equal
> Greater than
>= Greater than or equal
== Equal
!= Not equal

< daha az Soldan sağa doğru
<= daha az ya da eşit
> daha büyük
>= daha büyük ya da eşit
== eşit
!= eşit değil

|| Logical OR From left to right

|| Mantıksal OR Soldan sağa doğru

&& Logical AND From left to right

&& Mantıksal AND Soldan sağa doğru

= Assignment From right to left
+= Assignment addition
-= Assignment subtraction
*= Assignment multiplication
/= Assignment division
%= Assignment module
>>= Assignment right shift
<<= Assignment left shift
&= Assignment bitwise AND
|= Assignment bitwise OR
^= Assignment exclusive OR

= Atama Sağdan sola doğru
+= Atama toplaması
-= Atama çıkarması
*= Atama çarpması
/= Atama bölmesi
%= Atama modülü
>>= Atama sağ sekmesi
<<= Atama sol sekmesi
&= Atama bitsel AND
|= Atama bitsel OR
^= Atama özel OR

, Comma From left to right

, Virgül Soldan sağa doğru

Daha yüksek önceliğe sahip olan parantezler,operasyonların yürütülme düzenini değiştirmek için uygulanırlar.
Dikkat : MQL4’deki operasyonların performanslarının önceliği, C dilindeki aleladeden bir dereceye kadar farklılıuk gösterir.
 
 Gürsel Gürel
Dev Nokta
Re: MT4 ile Expert Programlamak 2009-03-15 13:48:32
     

4- Operators - Operatorler

Bir görevi başarı ile bitirmek için dil operatörleri yürütülen bazı algoritmik operasyonları tanımlarlar.Programın gövdesi bunun gibi operatörlerin bir sırasıdır.Birbirlerini takip eden operatörler, bir noktalı virgül ile ayrılırlar.

Bir operatör bir veya birkaç diziyi meşgul edebilir.Bir veya daha fazla operatör aynı dizide konumlandırılabilirler.Yürütme düzeni üzerinde kontrol sağlayan operatörler birbirlerine yuva yapabilirler.

Örnek :
if(Month() == 12)
if(Day() == 31) Print("Happy New Year!");

4- a) Compound operator – Birleşik Operator
Bir bileşik operatör (bir blok), rabıt işaretlerinin {}içerisine yerleştirilmiş herhangi bir tipteki bir veya daha fazla operatörlerden oluşmaktadır. Kapanış rabıt işaretinin noktalı virgül (;) ile devam etmemesi gerekmektedir.
Örnek:
if(x==0)
{
Print("invalid position x=",x);
return;
}
4- b) Expression operator – İfade Operatorleri
Noktalı virgül (;) ile devam eden herhangi bir ifade, operatördür.İfade operatörleri için işte bazı örnekler:
Assignment operator - Atama operatörü :
Identifier=expression;
x=3;
y=x=3; // error
Atama operatörü bir ifadede sadece bir kere kullanılabilir.
Function call operator - Fonksiyon çağrı operatörü:
Function_name(argument1,..., argumentN);

FileClose(file);
Empty operator - Boş operatör:
Sadece bir noktalı virgülden (;) oluşur ve bir kontrol operatörünün geçersiz bir gövdeyi göstermesinde kullanılır.





4- c) Break operator – Ara Operatörü
Bir (break) ara operatörü, en yakındaki yürütümü yuvanın dışına switch(anahtar), while (iken) ya da for (için) operatörü ile sona erdirir.Kontrol, sona erdirilmiş olanı takip eden operatöre verilir.Bu operatörün amaçlarından biri de uygulama döngüsünü bitirmektir.

Örnek : İlk sıfır öğesini aramak
// searching for the first zero element
for(i=0;i if((array[i]==0)
break;
4- d) Continue operator – Devam Operatörü
Bir (continue) devam operatörü, , en yakındaki dış devir while (iken) ya da for (için) operatörünün başlangıcını kontrol eder;bir sonraki tekrarlama çağırılır. Bu operatörün amacı break (ara) operatörünün tam tersidir.
Örnek : Dizinin sıfır olmayan öğelerinin özeti
// summary of nonzero elements of array
int func(int array[])
{
int array_size=ArraySize(array);
int sum=0;
for(int i=0;i {
if(a[i]==0) continue;
sum+=a[i];
}
return(sum);
}
4- e) Return operator – Dönüş Operatörü
Bir dönüş (return) operatörü,geçerli fonksiyon uygulamasına son verir ve çağırma programı kontrolüne geri döner. Bir dönüş (return) (ifade); operatör geçerli fonksiyon uygulamasına sonuç iletimi ile son verir.Operatör ifadesi, parantezlerin içerisine yerleştirilmek zorundadır ve bir atama operatörü içermemelidir.
Örnek :
int CalcSum(int x, int y)
{
return(x+y);
}
Geçersiz tipin değer ile fonksiyonlarında geri dönmesi için return (dönüş) operatörü ifadesiz kullanılmak zorundadır :
void SomeFunction()
{
Print("Hello!");
return; // this operator can be deleted
}
Bu operatör silinebilir
Fonksiyondaki sağ rabıt işareti, dönüş (return) operatörünün ifadesiz olarak imalı uygulaması manasına gelmektedir.
4- f) Conditional operator if-else – Şarta bağlı operatorler eğer, başka
Eğer ifade doğru (true) ise operatör uygulanır ve kontrol operatör2’ yi takip eden operatöre verilir (operatör2 uygulanmamıştır). Eğer ifade yanlış (false) ise operatör2 uygulanır.
if (expression)
operator1
else
operator2
if (eğer) operatörünün else (başka) kısmı ihmal edilebilir.Bu nedenle, ihmal edilmiş else (başka) kısmı ile yuvalanmış if (eğer) operatörlerinde bir uzaklaşma belirebilir.Bu durumda, else (başka) adresleri aynı blokta bulunan bir sonraki, else (başka) kısmı bulunmayan, if (eğer) operatörüne en yakındır.

Örnek: Başka bölümü, ikinci eğer (if) operatörüne başvurur :
Başka bölümü, birinci eğer (if) operatörüne başvurur :
Yuvalanmış operatörler
// The else part refers to the second if operator:
if(x>1)
if(y==2) z=5;
else z=6;


// The else part refers to the first if operator:
if(x>l)
{
if(y==2) z=5;
}
else z=6;


// Nested operators
if(x=='a')
{
y=1;
}
else if(x=='b')
{
y=2;
z=3;
}
else if(x=='c')
{
y = 4;
}
else Print("ERROR");




4- g) Switch operator – Anahtar operatör
Durumun tüm değişik biçimlerinde sabitler ile ifade değerini karşılaştırır ve anlatım değeri ile uyuşan operatöre kontrolü verir.Durumun her değişik biçimi bir tamsayı ya da harfi harfine sabit ya da sabit ifade ile belirgin olabilir.Sabit anlatım, değişkenler ya da fonksiyon çağırmaları içermeyebilir.Switch (anahtar) operatörünün ifadesi tamsayı tipinde olmak zorundadır.
switch(expression)
{
case constant: operators
case constant: operators
...
default: operators
}

Anahtar(ifade)switch(expression)
{
durum sabiti : operatörler
durum sabiti : operatörler
...
varsayılan : operatörler
}
Eğer durum (case) operatörlerindeki sabitlerden hiçbiri ifade değerlerine eşit değil ise Default (varsayılan) etiket ile bağlanmış olan operatör uygulanmıştır. Default (varsayılan)değişik biçimi (varyantı) gerekli olarak final olmak zorunda değildir.Eğer sabitlerden hiçbiri ifade değeri ile uyuşmaz ise ve Default (varsayılan)değişik biçimi (varyantı) mevcut değil ise aksiyonlar yürütülmez.Anahtar sözcük durumu ve sabit sadece etikettirler ve eğer operatörler bazı durum değişik biçimi (varyantı) için yürütülür ise program ileride, takip edilen bütün değişik biçimlerin (varyantların) operatörlerini yürütecektir ta ki break operatörü meydana gelene kadar.Sonradan gelen operatörlerin birkaç değişik biçimler (varyantlar) ile bağlanmasını mümkün kılar.
Sabit bir ifade derlem sırasında hesaplanır.Bir switch (anahtar)de yer alan hiçbir iki sabit aynı değerlere sahip olamaz.
Örnek :
switch(x)
{
case 'A':
Print("CASE A");
break;
case 'B':
case 'C':
Print("CASE B or C");
break;
default:
Print("NOT A, B or C");
break;
}


4- h) Cycle operator while – Dönen-devir operatorleri iken

while (koşul) Döngü operatörü
Eğer ifade true (doğru) ise operatör,ifade false (yanlış) olana kadar yürütülür.Eğer ifade false (yanlış) ise kontrol, sonraki operatöre verilecektir.
while(expression)
operator;
Bir ifade değeri, operatör yürütülmeden önce belirtilen olurdu.Bundan dolayı, eğer ifade en baştan beri false (yanlış) ise operatör hiçbir suretle yürütülmeyecektir.Örnek:
while(k {
y=y*x;
k++;
}
4- ı) Cycle operator for – Dönen-devir operatörleri için

for (için) Döngü operatörü
İfade1 devir başlangıcını tanımlar. İfade2 devirin sona ermesi için koşullu testtir.Eğer bu true (doğru) ise for (için) operatörünün döngü gövdesi yürütülecektir.İfade 2 false (yanlış) olana dek devir yinelenir.Eğer bu false (yanlış) ise devir sona erecektir ve kontrol sonraki operatöre verilecektir. İfade3 her tekrarlamadan sonra hesaplanır.
for (Expression1; Expression2; Expression3)
operator;
For (için) operatörü , operatörlerin müteakip ardıllarına eşdeğerdir.
Expression1;
while(Expression2)
{
operator;
Expression3;
};
Herhangi bir üç ifade ya da üç ifadenin tümü for (için) operatöründe eksik olabilirler; fakat bunları birbirlerinden ayıran noktalı virgüllerin (;) atlanmaması mecburidir.Eğer İfade2 atlanır ise bunun devamlı doğru olduğu öngörülür.For (için) operatörü (;;), while(1) (iken)(1) operatörüne eşdeğer olan aralıksız bir döngüdür.İfade 1 ya da 3’den biri, bir virgül operatörü ‘,’ ile birbirine bağlanmış birçok ifade içerebilir.
Örnekler :
for(x=1;x<=7;x++) Print(MathPower(x,2));

for(;;)
{
Print(MathPower(x,2));
x++;
if(x>10) break;
}

for(i=0,j=n-l;i
5- Functions – Fonksiyonlar
Fonksiyon, diğer program kısımlarından gerekli oldukça birçok defalar çağırılabilen bir program kısmı olarak adlandırılmıştır.Bu, değerin geri dönmesi,isim,resmi parametreler ve kompozit operatörün (blok) aksiyonlarının yerine getirilmesi için tip tarifini içerir.Geçirilmiş parametrelerin miktarı kısıtlıdır ve 64’ü aşamaz.

Örnek :
double // geri dönmek için değerin tipi - type of value to be returned
linfunc (double x, double a, double b) // fonksiyon ismi ve parametreler listesi - function name and parameters list
{
// birleşik operator - composite operator
return (a + b); // geri dönmüş değer - returned value
}
“Return” (dönüş) operatörü, bu operatörün içerdiği ifade değerini dönüştürebilir.Eğer gerekli ise, ifade değeri fonksiyon sonucunun tipine dönüştürülebilir. Değerleri dönüştürmeyen bir fonksiyon, “void” (geçersiz) tipte olmak zorundadır.
Örnek :
void errmesg(string s)
{
Print("error: "+s);
}
Fonksiyona geçmek için parametreler uygun tipin sabitleri ile belirtilmiş olan ön değerlere sahiptir.
Örnek :
int somefunc(double a, double d=0.0001, int n=5, bool b=true, string s="passed string")
{
Print("Required parameter a=",a);
Print("The following parameters are transmitted: d=",d," n=",n," b=",b," s=",s);
return (0);
}
Eğer varsayılan değer bir parametreye atansa idi, süreklilik parametrelerinin tümü de varsayılan değere sahip olmak zorundaydı.
Yanlış deklerasyon için örnek :
int somefunc(double a, double d=0.0001, int n, bool b, string s="passed string")
{
}
5- a) Function call – Fonksiyon Çağırması
Eğer daha önce tanımlanmamış bir isim bir ifadede belirseydi ve sol parantezler ile takip edilseydi, bir fonksiyonun ismi olarak sözün gelişine ait olarak düşünülebilecekti.
function_name (x1, x2,..., xn)
Arguments (tartışmalar) [resmi parametreler] değer ile geçerler, örneğin; her bir xl, . . . , xn ifadesi hesaplanır ve değer fonksiyona geçirilir.İfadelerin hesaplanma düzenleri ve bunların değerlerinin yüklenmesi garantilenir.Yükleme sırasında sistem rakamları ya da fonksiyona verilmiş olan tartışmaların tipini kontrol eder.Fonksiyona yapılan bu tip bir adresleme bir değer çağırma olarak adlandırılır.Fonksiyon çağırması, fonksiyon ile geri dönen değerin bir ifade değeridir.Aşağıda tanımlanmış olan fonksiyon tipi dönmüş değer tipi ile uygun gelmek zorundadır.Fonksiyon, programın herhangi bir kısmında deklare edilebilir ya da tanımlanabilir.

Örnekler :
int start()
{
double some_array[4]={0.3, 1.4, 2.5, 3.6};
double a=linfunc(some_array, 10.5, 8);
//...
}
double linfunc(double x[], double a, double b)
{
return (a*x[0] + b);
}

Varsayılan parametreler ile bir fonksiyonu çağırarak, geçirilmiş olan parametrelerin listesi sınırlandırılabilir, fakat bu ilk varsayılan parametreden önce olamaz.

Örnekler:
void somefunc(double init,double sec=0.0001,int level=10); // fonksiyon prototipi - function prototype

somefunc(); // yanlış çağrı, ilk gerekli parametre sunulmak zorundadır - wrong call, the first required parameter must be presented.
somefunc(3.14); // uygun çağrı - proper call
somefunc(3.14, 0.0002); // proper call
somefunc(3.14, 0.0002, 10); // proper call

Bir fonksiyonu çağırırken, parametreler atlanmamalıdır; hatta bunlar varsayılan değerlere sahiptirler:
somefunc(3.14, , 10); // yanlış çağrı. İkinci parametre atlandı - wrong call. the second parameter was skipped.


5- b) Special functions – Özel Fonksiyonlar

MQL4’te ön-tanımlı üç fonksiyon ismi vardır :

init() başlangıç modulü sırasında bir fonksiyonun çağırılmasıdır.Eğer bu mevcut değil ise başlangıçta hiçbir modül çağırılamayacaktır.

start() temel fonksiyondur.Uzmanlar için, bu, sonraki tıklama geldikten sonra çağırılır.Özel göstergeler için,gösterge çizelgeye bağlandıktan sonra,istemci terminalinin açılışında (eğer gösterge çizelgeye iliştirilmiş ise), ve ek olarak sonraki tıklama geldikten sonra geri hesaplamada çağırılır. El yazıları için, bu, el yazısı çizelgeye bağlandıktan ve başlatıldıktan sonra acilen yürütülür.Eğer modülde start (başlangıç) () fonksiyonu yok ise modül (uzman, el yazısı ye da özel gösterge) yürütülemeyecektir.

deinit() modülün deinitialization (başlangıçtan mahrum) olduğu sırada çağırılan bir fonksiyondur.Eğer bu mevcut değil ise hiçbir fonksiyon deinitialization’da çağırılamayacaktır.

Ön-tanımlı fonksiyonlar, bazı parametrelere sahip olabilirler.Bununla beraber, hiçbir parametre dışarıdan alınmayacaktır, bu fonksiyonlar istemci terminal ile çağrıldıkları zaman; fakat varsayılan değerler kullanılacaklardır. start(), init(), and deinit() fonksiyonları, genel kurallara göre,diğer fonksiyonlara eşit olarak,modülün herhangi bir noktasından çağırılabilirler.

Start() fonksiyonunun, init() fonksiyonundan çağırılması ya da ticaret operasyonlarının gerçekleştirilmesi önerilmez; çünkü çizelge verisi, market fiyatları vb. başlangıç modülünün anı ile eksik olabilir. init() ve deinit() fonksiyonları, çalışmalarını mümkün olan en kısa sürede bitirmek zorundadırlar ve hiçbir durumda, start (başlangıç) fonksiyonu çağırılmadan önce tam diplomalı çalışmalarına başlamaya çalıştıkları zaman ilmeklemeyeceklerdir.
 
 Gürsel Gürel
Dev Nokta
Re: MT4 ile Expert Programlamak 2009-03-17 01:31:37
     

6- Variables - Değişkenler

Değişkenler, kullanılmadan önce bildirilmelidirler. Değişkenleri teşhis etmek için benzersiz isimler kullanılmışlardır.Değişkenlerin tanımları, tanımlanan olmak için ve belirtilen tipler olmak için kullanılmışlardır.Tanımlama, bir operatör değildir.

Temel tipler şunlardır : (The basic types are)
 bool - boolean değerlerinin true (doğru) ve false(yanlış);
 string (dizi) – karakter dizileri;
 double (çift) – serbest nokta ile çift-açıklık rakamları.
Örnekler:
string MessageBox;
int Orders;
double SymbolPrice;
bool bLog;
Ek tipler : (Additional types)
 color (renk) RGB rengini temsil eden bir tamsayıdır;
 datetime (tarih-zaman) tarih ve zamandır; 0.00 a.m. on 1 January, 1970 ‘den beri geçen saniyeleri içeren bir imzasız tamsayısıdır
Ek veri tiplerinin, sadece giriş parametrelerinin deklarasyonunda, özellik penceresindeki daha fazla uygun gösterim için, anlamı vardır.
Örnek :
datetime tBegin_Data = D'2004.01.01 00:00';
color cModify_Color = C'0x44,0xB9,0xE6';
Düzenler : (Arrays)
Düzen, aynı tip verinin indekslenmiş sırasıdır.
int a[50]; // Bir 50 tamsayısının bir-boyutlu dizisi - A one-dimensional array of 50 integers.
double m[7][50]; // Yedi dizilerinin iki-boyutlu dizisi - Two-dimensional array of seven arrays,
// Her biri 50 tamsayı içerir - each of them consisting of 50 integers.

Sadece bir tamsayı bir düzen indeksi olabilir.Dört-boyutlu düzenlerden daha fazlasına izin verilmez.Düzen öğelerini numaralandırmak 0 ile başlar.Bir-boyutlu düzenin en sondaki öğesi, düzen ölçüsünden daha az olan 1 rakamına sahiptir.Bu şu demektir ki; 50 tamsayı içeren bir düzenin en sondaki öğesini çağırmak için [49] olarak belirecektir.Aynısı çok boyutlu düzenleri ilgilendirir: Bir boyut, 0’dan dimension size-1(boyut büyüklük-1)’e kadar indekslenir. ,Örnekten bir İki-boyutlu düzenin en sondaki öğesi m[6][49] olarak gözükecektir.
Eğer düzen menzilinin dışına erişime bir teşebbüs olur ise yürütülen alt sistem hata olarak adlandırılan ERR_ARRAY_INDEX_OUT_OF_RANGE üretecektir ki GetLastError() fonksiyonunu kullanmaya sahiptir.



6- a) Local variables – Yerel Değişkenler

Bilinen bir değişkenin iç fonksiyonu yereldir.Yerel bir değişkenin sahası, deklare edilmiş olan fonksiyon menzilinin içinde kısıtlanır.Bir yerel değişken, herhangi bir ifadenin sonucu ile başlatılabilir.Fonksiyonun her çağrısı, yerel bir değişkeni başlatır. Yerel değişkenler ilişkin fonksiyonun bellek alanında depolanırlar.
Örnek :
int somefunc()
{
int ret_code=0;
....
return(ret_code);
}

6- b) Formal parameters – Resmi (Genel) Parametreler

Parametrelere geçen fonksiyonlar yereldir.Scope (saha) fonksiyon blokudur.Resmi parametrelerin isimleri dış kaynaklı verilerden farklı olmak zorundadır ve yerel değişkenler bir fonksiyon içinde tanımlandılar.Fonksiyonun bloğunda resmi parametrelere bazı değerler atanabilir.Bazı değerler,fonksiyon bloğundaki resmi parametrelere atanabilir.
Örnek :
void func(int x[], double y, bool z)
{
if(y>0.0 && !z)
Print(x[0]);
...
}
Resmi parametreler, sabitler ile başlatılabilir.Bu durumda, başlatılmış değer varsayılan değermiş gibi düşünülür.Parametreler,başlatılmış olandan sonraki, ayrıca başlatılmak zorundadır.
Örnek:
void func(int x, double y = 0.0, bool z = true)
{
...
}
Böyle bir fonksiyon çağırıldığı zaman, başlatılmış parametreler göz ardı edilebilir; varsayılanlar onların yerine yer değiştirir.
Örnek :
func(123, 0.5);
Diğer modüller içerisine ithal edilen MQL4 kütüphane fonksiyonları, varsayılan değerler ile başlatılmış parametrelere sahip olamayacaklardır.
Değer ile geçilen parametreler, örneğin;çağırılmış fonksiyon içindeki uyuşan yerel değişken modifikasyonlar çağırılma fonksiyonunda hiçbir şekilde gösterilmeyeceklerdir.Düzenleri parametreler olarak geçmek mümkündür.Bununla beraber, parametre gibi geçen bir düzen için öğelerinin değerlerini değiştirmek imkansızdır.

Ayrıca parametreleri referans ile geçmek de mümkündür.Bu durumda,bu tip parametrelerin modifikasyonu, referans ile çağırılmış fonksiyondan geçirilmiş karşılık değişkenlerde gösterilebileceklerdir. Parametreler,sadece tek bir modül içerisinde referans tarafından geçilebilir; böyle bir olasılık kütüphaneler için temin edilemez.Bir parametrenin referans ile geçtiğini bildirmek için veri tipinden sonra & niteleyen cümleciğinin konulması gereklidir.
Örnek :
void func(int& x, double& y, double& z[])
{
double calculated_tp;
...
for(int i=0; i {
if(i==ArraySize(z)) break;
if(OrderSelect(i)==false) break;
z[i]=OrderOpenPrice();
}
x=i;
y=calculated_tp;
}
Düzenler, referans ile geçirilebilirler, ek olarak,kaynak düzeninde tüm değişikler gösterilir.Basit parametrelercden farklı olarak düzenler,ek olarak, kütüphane fonksiyonlarına referans ile geçirilebilirler.
Referansa uğrayan parametreler, varsayılanlar ile başlatılamayacaklardır.
Fonksiyona 64 parametrelerinden daha fazla geçilemeyecektir.

6- c) Static variables – Durağan Değişkenler
Durağanın bellek sınıfı, statik bir değişkeni tanımlar.Belirtici durağan bir veri tipinden önce ilan edilir.
Örnek :
int somefunc()
{
static int flag=10;
....
return(flag);
}
Durağan değişkenler kalıcı bellekte depolanırlar, bunların değerleri fonksiyon çıkıldığı zaman da kaybolmazlar.Bloktaki herhangi bir değişken, fonksiyonun resmi parametreleri için hariç, durağan olarak tanımlanabilirler.Durağan değişken, uyuşmuş tiplerin bir sabiti ile başlatılabilirler; herhangi bir ifade ile başlatılabilen bir basit yerel değişkenden farklı olarak. Eğer kesin başlangıç yok ise durağan değişken sıfır ile başlatılır. "init()" fonksiyonunun çağırılmasından önce durağan değerler sadece bir defalık başlatılırlar;şu fonksiyon içinden çıkıştadır durağan değişkenin bildirildiği,bu değişkenin değeri kaybedilmez.



6- d) Global variables – Evrensel Değişkenler
Evrensel değişkenler, fonksiyonlar olarak aynı düzeyde belirtilenlerdir.Örneğin;blokta yerel değillerdir.
Örnek :
int GlobalFlag=10; // global variable
int start()
{
...
}
Genel değişkenlerin sahası tüm programdır.Evrensel değişkenler, programda tanımlanan tüm fonksiyonlardan erişilebilirlerdir. Eğer hiçbir birinci değer açıkça tanımlanmazsa bunlar sıfır ile başlatılırlar.Evrensel bir değişken, sadece kendi tipi ile uyuşan bir sabit ile başlatılabilir.Evrensel değişkenler, init() fonksiyonunun yürütülmesinden önce sadece bir defalığına başlatılabilirler.
Not : Evrensel seviyede bildirilen değişkenler,Evrensel Değer fonksiyonlarına erişebilmiş Alıcı Terminal evrensel değişkenleri ile karıştırılmamak zorundadırlar.

6- e) Defining extern variables – Tarif Edilen (tanımlanan) Asistan Değişkenler
Asistan bellek sınıfı,bir asistan değişkeni tanımlar.Asistan tayinci, bir veri tipinden önce bildirilirler.
Örnek :
extern double InputParameter1 = 1.0;
extern color InputParameter2 = red;

int init()
{
...
}
Asistan değişkenler, programın girdilerine karar verirler; bunlar bir program özellik penceresinden erişilebilirlerdir.Düzenler, kendilerini asistan değişkenler olarak temsil edemeyebilirler

6- f) Initialization of variables - Değişkenlerin başlangıcı
Herhangi bir değişken kendi tanımlılığında başlatılabilir. eğer başka hiçbir başlangıç değeri açıkça tanımlanmadıysa herhangi bir değişken sıfır (0)ile başlatılır.Evrensel ve durağan değişkenler sadece uyuşmuş tipin bir sabiti ile başlatılabilirler.Yerel değişkenler, sadece sabit ile değil herhangi bir ifade ile de başlatılabilirler.
Evrensel ve durağan değişkenler sadece bir defalığına başlatılırlar.Yerel değişkenler, uyuşmuş fonksiyonların çağırımı ile her zaman başlatılırlar.
Örnekler :
int n = 1;
double p = MarketInfo(Symbol(),MODE_POINT);
string s = "hello";
double f[] = { 0.0, 0.236, 0.382, 0.5, 0.618, 1.0 };
int a[4][4] = { 1, 1, 1, 1, 2, 2, 2, 2, 3, 3, 3, 3, 4, 4, 4, 4 };
Düzen öğelerinin değerlerinin listesi rabıta işareti içerisine kapatılmak zorundadır.İhmal edilmiş Başlatan değerler 0’ a eşit gibi öngörülürler.Eğer başlatan düzen büyüklüğü tanımlanmamış ise bu, başlatan sıranın büyüklüğünden olan derlemeci ile tanımlanacaktır.Çok boyutlu düzenler, bir-boyutlu sıra ile başlatılırlar. Örneğin;ek rabıt işareti olmaksızın sıra.Yerel sahada bu bilinenleri içeren tüm düzenler, sadece sabitler ile başlatılabilirler.

6- g) External functions definition – Tarif Edilen (tanımlanan) Dış Kaynaklı Fonksiyonlar
Başka bir programın bileşeninin içinde tanımlanan dış kaynaklı fonksiyonların tipleri,açıkça tanımlanmak zorundadır. Böyle bir tanımlamanın yokluğu, programın derlemesi,birleştiricisi ya da yüklemesi sırasında hatalarla sonuç verebilir.Bir dış nesneyi tanımlarken #dışalım anahtar sözcüğü ilişkin modül ile kullanılmış olmalıdır.
#import "user32.dll"
int MessageBoxA(int hWnd ,string szText,string szCaption,int nType);
int SendMessageA(int hWnd,int Msg,int wParam,int lParam);
#import "lib.ex4"
double round(double value);
#import
Dışalım, dış kaynaklı DLL’lerden veya derlenmiş EX4 kütüphanelerinden çağırılan fonksiyonları tanımlamada kolaylıkla kullanılabilir.
DLL fonksiyonlarını ithal etmek için değişkenlere ibreler geçilebilir.Dizi tipinin verisi, mukabil bellek blokuna bir ibre gibi geçer (akılda tutulmalıdır ki dizi verisinin içsel gösterimi iki kısımdan oluşur : bellek blok uzunluğu, bellek blok ibresi).Eğer int ya da çift tipinin verisinin geçirilmesine ihtiyaç varsa mukabil tipin bir-boyutlu düzeni bir parametre olarak referans ile geçilir.
Örnek :
#import "some_lib.dll"
void PassIntegerByref(int& OneInt[]);
#import
int start()
{
int array[1];
//...
PassIntegerByref(array);
Print(array[0]);
//...
}

7- Preprocessor - Önişlemci
Önişlemci,MQL4 derlemecinin özel alt sistemidir ki program kaynak kodunun hemen hazırlanması için program derlenmeden önce tasarlanmıştır.
Önişlemci, kaynak kod okunabilirliğini arttırmasına izin verir.Kod, MQL4 programlarının kaynak kodlarını içeren belirli dosyaların içeriği ile bölümlere ayrılabilir.Belirli sabitlere hatırlatıcı isimleri atamak için olasılık kod okunabilirliğinin arttırmasına katkıda bulunur.
Önişlemci ayrıca MQL4 programlarının belirli parametrelerinin saptanmasına izin verir.
Eğer programın ilk satırında # sembolü kullanılır ise bu satır önişlemci direktifidir.Bir önişlemci direktifi satır besleme karakteri ile biter.

7- a) Constant declaration – Sabit Tebliğler, İlanlar
#define (tanımlama) fonksiyonu kullanmada sembolik bir isim tanımlanabilir ya da belirli sembol dizisi olmak için programdaki sembolik sabit başlar.Daha sonra derlemeci , bu isimin tüm görünüşlerini mukabil dizi ile tırnak işaretleri olmadan yer değiştirecektir.Aslında, bu isim tümüyle herhangi bir keyfi metin ile yer değiştirebilecektir, rakamlar ile olması gerekli değildir.
#define identifier value
Sabit kimlikleyici, değişkenlerin isimlerini düzenleyiciler gibi olan aynı kurallara uyum sağlar.Değer herhangi bir tipte olabilir :
#define ABC 100
#define PI 0.314
#define COMPANY_NAME "MetaQuotes Software Corp."

...

void ShowCopyright()
{
Print("Copyright © 2001-2006, ",COMPANY_NAME);
Print("http://www.metaquotes.net " class="mavi">http://www.metaquotes.net ");
}

7- b) Controlling compilation – Kontrol Derlemeleri
Her bir MQL4 programı,programlar için uygun bakımdaki müşteri terminaline yardım eden # mülk diye adlandırılan ek belirli parametreleri, açıkça onları başlatmak için gereksinim olmaksızın, belirtmesine izin verir.Bu öncelikle göstergelerin dış ayarlarını ilgilendirir.
#property identifier value

Constant - Sabit Type Description - Tanımlama
link string Şirket websitesine bir bağlantı
copyright string Şirket ismi
stacksize int İstif büyüklüğü
library Bir kütüphane; hiçbir başlangıç fonksiyonu atanmadı, başvurulmamış fonksiyonlar kaldırılmadı
indicator_chart_window void Grafik penceresinde gösterge göster
indicator_separate_window void Ayrı bir pencerede gösterge göster
indicator_buffers int Hesaplama için tamponların sayısı, 8’e kadar
indicator_minimum double Ayrı bir gösterge penceresi için alttaki ölçeklendirme limiti
indicator_maximum double Ayrı bir gösterge penceresi için üstteki ölçeklendirme limiti
indicator_colorN color the color for displaying line N, where N lies between 1 and 8
indicator_widthN int N’in 1 ve 8 arasında yer aldığı yerdeki çizgi N’in genişliği
indicator_styleN int N’in 1 ve 8 arasında yer aldığı yerdeki çizgi N’in stili
indicator_levelN double N’in 1 ve 8 arasında yer aldığı yerdeki ayrı pencere özel göstergesi için önceden tanımlanmış düzey N
indicator_levelcolor color Düzey çizgi rengi
indicator_levelwidth int Düzey çizgi genişliği
indicator_levelstyle int Düzey çizgi stili
show_confirm void daha önce onaylama ile ileti kutusunu çalıştıran el yazısı belirir
show_inputs void El yazısından önce onun özellik sayfası görünür; göster_onay özeliğini sakatlar.

Örnekler :
#property link "http://www.metaquotes.net " class="mavi">http://www.metaquotes.net "
#property copyright "MetaQuotes Software Corp."
#property library
#property stacksize 1024
Derlemeci, ayarlardaki yürütülmüş modülün bildirilmiş değerlerini yazacaktır.
 
 Gürsel Gürel
Dev Nokta
Re: MT4 ile Expert Programlamak 2009-03-20 00:02:05
     

7- c) Including of files – Derleyici, dahil edici, kapsayıcı Dosyalar
#include komut satırı, programın herhangi bir yerine yerleştirilebilir;fakat genellikle bütün dahil olmalar kaynak kodunun başlangıcında yer alırlar.
#include
#include "file_name";


Örnekler:
#include
#include "mylib.mqh"
Önişlemci, bu satırı WinUser32.mqh dosyası ile yer değiştirtir. Açı dirsekleri, WinUser32.mqh dosyasnını varsayılan rehberden alınacağı anlamına gelir (genellikle terminal_directoryexpertsinclude). Geçerli rehber aranmaz.
Eğer dosya ismi tırnak işaretleri içine eklenmiş ise arama yürürlükte olan rehberde yapılacaktır (kaynak kodunun ana dosyasının yerleştirildiği yerde).Standart rehber aranmaz.



7- d) Importing of functions – Dışalım, İthal Edilmiş Fonksiyonlar
Fonksiyonlar, derlenmiş MQL4 modüllerinden (*.ex4 files) ve işletim sistem modüllerinden (*.dll files) içeri aktarılırlar.Modülün ismi #import (dışalım) direktifinde belirtilir. Derlemeci için ithal edilmiş fonksiyon çağırması oluşabilmesi ve uygun yönde parametrelerin geçirilebilmesi için fonksiyonun tam tanımı gereklidir.Fonksiyonların tanımları #import (dışalım)”modül ismi” ni hemen takip eder. Yeni #import (dışalım) komutu (parametrelersiz olabilirler) ithal edilmiş fonksiyonların tanım bloğunu tamamlar.
#import "file_name"
func1 define;
func2 define;
...
funcN define;
#import
İthal edilmiş fonksiyonlar benzersiz isimlerine sahip olmak zorundadırlar.Aynı isimlere sahip olan fonksiyonlar, farklı modüllerden eşzamanlı olarak ithal edilemeyeceklerdir.İthal edilmiş fonksiyonların isimleri, fonksiyonların içerisinde kurulmuş olanlar ile rastlaşmazlar.
İthal edilmiş fonksiyonlar derlenmek için modülün dışında yer aldıklarından beri derlemeci ,geçirilen parametrelerin doğruluğunu kontrol edemezler.Bunun sebebi, yürütme süresi hatalarından kaçınmak için, tamamen tiplerin ve parametrelerin düzeninin uyarlılığını bildirmek için gereklidir.İthal edilmiş fonksiyonları (EX4 ve DLL modüllerinden her ikisinden) geçen parametreler varsayılan tarafından değerlere sahip değillerdir.
Örnekler :
#import "user32.dll"
int MessageBoxA(int hWnd, string lpText, string lpCaption, int uType);

#import "stdlib.ex4"
string ErrorDescription(int error_code);
int RGB(int red_value, int green_value, int blue_value);
bool CompareDoubles(double number1, double number2);
string DoubleToStrMorePrecision(double number, int precision);
string IntegerToHexString(int integer_number);

#import "ExpertSample.dll"
int GetIntValue(int);
double GetDoubleValue(double);
string GetStringValue(string);
double GetArrayItemValue(double arr[], int, int);
bool SetArrayItemValue(double& arr[], int,int, double);
double GetRatesItemValue(double rates[][6], int, int, int);
int SortStringArray(string& arr[], int);
int ProcessStringArray(string& arr[], int);
#import
mql4 programının yürütülmesi sırasında fonksiyonların ithal edilmesi için sözde geç-bağlayıcı kullanılır..Bu şu demektir; ithal edilmiş fonksiyon çağırılıncaya kadar mukabil modül (ex4 ya da dll) yüklenemeyecektir.
Drive:DirectoryFileName.Ext gibi beliren yüklenmiş modülün tamamen vasıflı ismi kullanmak için önerilmez. MQL4 kütüphaneleri terminal_direxpertslibraries dosyasından yüklenebilir.Eğer kütüphane bulunamazsa terminal_direxperts dosyasından bir kütüphaneyi yüklemek için bir teşebbüs olacaktır.

B- Standard constants – Standart Sabitler

Program yazımını basitleştirmek ve kavrayış için program metinlerini daha fazla uygun yapmak için önceden tanımlanmış standart sabitler MQL4’de görülürler.

Standart sabitler, makro yerine koymalara benzerlerdir ve int tipindedirler.

Sabitler, amaçları ile gruplandırılırlar.

B- a) Series arrays – Seri Düzenler

Seri düzen kimlikleyici, ArrayCopySeries(), iHighest() ve iLowest() fonksiyonları ile kullanılmıştır.

Bu, aşağıdaki değerlerin herhangi biri olabilir :
Constant Value Description
MODE_OPEN 0 Open price.
MODE_LOW 1 Low price.
MODE_HIGH 2 High price.
MODE_CLOSE 3 Close price.
MODE_VOLUME 4 Volume, used in iLowest() and iHighest() functions.
MODE_TIME 5 Bar open time, used in ArrayCopySeries() function.


B- b) Timeframes – Zaman Çerçevesi

Çizelgenin zaman çerçevesi (çizelge dönemi). Bu, aşağıdaki değerlerin herhangi biri olabilir :
Constant Value Description
PERIOD_M1 1 1 minute.
PERIOD_M5 5 5 minutes.
PERIOD_M15 15 15 minutes.
PERIOD_M30 30 30 minutes.
PERIOD_H1 60 1 hour.
PERIOD_H4 240 4 hour.
PERIOD_D1 1440 Daily.
PERIOD_W1 10080 Weekly.
PERIOD_MN1 43200 Monthly.
0 (zero) 0 Timeframe used on the chart. Grafikte kullanılan Zaman-çerçeve.


B- c) Trade operations – Ticari Operasyonlar

OrderSend() fonksiyonu için operasyon tipi. Bu, aşağıdaki değerlerin herhangi biri olabilir :
Constant Value Description
OP_BUY 0 Buying position.
OP_SELL 1 Selling position.
OP_BUYLIMIT 2 Buy limit pending position.
OP_SELLLIMIT 3 Sell limit pending position.
OP_BUYSTOP 4 Buy stop pending position.
OP_SELLSTOP 5 Sell stop pending position.

B- d) Price constants – Fiyat Sabitleri

Uygulanmış fiyat sabitleri. Bu, aşağıdaki değerlerin herhangi biri olabilir :
Constant Value Description
PRICE_CLOSE 0 Close price.
PRICE_OPEN 1 Open price.
PRICE_HIGH 2 High price.
PRICE_LOW 3 Low price.
PRICE_MEDIAN 4 Median price, (high+low)/2.
PRICE_TYPICAL 5 Typical price, (high+low+close)/3.
PRICE_WEIGHTED 6 Weighted close price, (high+low+close+close)/4.



B- e) MarketInfo – Market Bilgisi

Market bilgi tanıtıcıları, MarketInfo() fonksiyonu ile kullanıldı. Bu, aşağıdaki değerlerin herhangi biri olabilir :
Constant Value Description
MODE_LOW 1 Düşük gün fiyatı.
MODE_HIGH 2 Yüksek gün fiyatı.
MODE_TIME 5 Son gelen işaret (tik) zamanı (bilinen son sunucu zamanı).
MODE_BID 9 Son gelen ihale fiyatı. Geçerli sembol için önceden tanımlanmış değişken Fiyat teklifinde depolanır.
MODE_ASK 10 Son gelen satış fiyatı. Geçerli sembol için önceden tanımlanmış değişken Satışta depolenır.
MODE_POINT 11 Aktarılmış nakit paradaki nokta büyüklüğü. Geçerli sembol için önceden tanımlanmış değişken Noktada depolanır.
MODE_DIGITS 12 Sembol fiyatlardaki ondalık sayı noktasından sonra basamakların sayımı. Geçerli sembol için önceden tanımlanmış değişken Basamaklarda depolanır.
MODE_SPREAD 13 Noktalardaki yaygın değer.
MODE_STOPLEVEL 14 Noktalardaki Bitiş düzeyi.
MODE_LOTSIZE 15 Temel nakit paradaki lot büyüklüğü.
MODE_TICKVALUE 16 Depozito nakit paradaki işaret (tik) değeri.
MODE_TICKSIZE 17 Noktalardaki işaret (tik) büyüklüğü.
MODE_SWAPLONG 18 Uzun pozisyonların takası.
MODE_SWAPSHORT 19 Kısa pozisyonların takası.
MODE_STARTING 20 Market başlama tarihi (genellikle gelecek için kullanılır).
MODE_EXPIRATION 21 Market son tarihi (genellikle gelecek için kullanılır).
MODE_TRADEALLOWED 22 Sembol için ticarete izin verilmiştir.
MODE_MINLOT 23 Bir lotun izin verilen minimum miktarı.
MODE_LOTSTEP 24 Değiştirilen lotlar için adım.
MODE_MAXLOT 25 Bir lotun izin verilen maksimum miktarı.
MODE_SWAPTYPE 26 Takas hesaplama metodu. 0-noktlarda; 1- sembol temel nakit parada; 2- faiz tarafından.
MODE_PROFITCALCMODE 27 Kazanç hesaplama modu. 0- Forex (döviz); 1-CFD; 2- Gelecek.
MODE_MARGINCALCMODE 28 Kenar hesaplama modu. 0- Forex (döviz); 1-CFD; 2- Gelecek; 3- indeksler için CFD.
MODE_MARGININIT 29 1 lot için İlk kenar gereklilikleri.
MODE_MARGINMAINTENANCE 30 1 lot içinaçık pozisyonları hesaplamyı sürdürmek için kenar.
MODE_MARGINHEDGED 31 1 lot için koruma amaçlı işlem kenar hesaplandı.
MODE_MARGINREQUIRED 32 Satın almak için boş kenar açık 1 lot gerektirdi.



B- f) Drawing styles – Çizim Tarzları

Çizim şekil tarz sayımı için SetIndexStyle() fonksiyonu.

Bu, aşağıdaki değerlerin herhangi biri olabilir :
Constant Value Description
DRAW_LINE 0 Çizim çizgisi
DRAW_SECTION 1 Çizim kısmı.
DRAW_HISTOGRAM 2 Çizim çubuk grafiği.
DRAW_ARROW 3 Çizim okları (sembolleri).
DRAW_ZIGZAG 4 Çift ve tek gösterge tamponları arasındaki çizim kısımları.
DRAW_NONE 12 Çizim yok.

Çizim stili. genişlik =1 olduğunda geçerlidir. Bu, aşağıdaki değerlerin herhangi biri olabilir :
Constant Value Description
STYLE_SOLID 0 Kalem doludur.
STYLE_DASH 1 Kalem kesik çizgilidir.
STYLE_DOT 2 Kalem noktalıdır.
STYLE_DASHDOT 3 Kalem değişen kesik çizgilere ve noktalara sahiptir.
STYLE_DASHDOTDOT 4 Kalem değişen kesik çizgilere ve çift noktalara sahiptir.

B- g) Arrow codes – Ok Kodları

Önceden tanımlanmış ok kod sayımı.Oklar sabitleri kodlarlar. Bu, aşağıdaki değerlerin herhangi biri olabilir :
Constant Value Description
SYMBOL_THUMBSUP 67 Thumb up symbol ().
SYMBOL_THUMBSDOWN 68 Thumb down symbol ().
SYMBOL_ARROWUP 241 Arrow up symbol ().
SYMBOL_ARROWDOWN 242 Arrow down symbol ().
SYMBOL_STOPSIGN 251 Stop sign symbol ().
SYMBOL_CHECKSIGN 252 Check sign symbol ().

Özel ok kodları,tam olarak fiyata ve zamana işaret ederler. Bu, aşağıdaki değerlerin herhangi biri olabilir :
Constant Value Description
1 Upwards arrow with tip rightwards (↱).
2 Downwards arrow with tip rightwards (↳).
3 Left pointing triangle (◄).
4 En Dash symbol (–).
SYMBOL_LEFTPRICE 5 Left sided price label.
SYMBOL_RIGHTPRICE 6 Right sided price label.


B- h) Wingdings -

Wingdings yazı tipi sembolleri, Ok nesneleri ile kullanıldı.



B- ı) Web colors – Web Renkleri

Renk tipleri,renk sabitlerini destekledi.




B- i) Indicator lines – Gösterge Hatları

Gösterge hat kimlikleyicileri iMACD(), iRVI() ve iStochastic() kimlikleyicilerinde kullanıldı.
Bu, aşağıdaki değerlerin herhangi biri olabilir :
Constant Value Description
MODE_MAIN 0 Base indicator line.
MODE_SIGNAL 1 Signal line.

Gösterge hat kimlikleyicileri iADX() göstergelerinde kullanıldı.
Constant Value Description
Constant Value Description
MODE_MAIN 0 Base indicator line.
MODE_PLUSDI 1 +DI indicator line.
MODE_MINUSDI 2 -DI indicator line.

Gösterge hat kimlikleyicileri iBands(), iEnvelopes(), iEnvelopesOnArray(), iFractals() ve iGator() göstergelerinde kullanıldı.
Constant Value Description
MODE_UPPER 1 Upper line.
MODE_LOWER 2 Lower line.


B- j) Ichimoku Kinko Hyo

Ichimoku Kinko Hyo kimlikleyicileri, istenmiş verinin kaynağı olarak adlandırılan iIchimoku() göstergede kullanıldı.
Bu, aşağıdaki değerlerin herhangi biri olabilir :
Constant Value Description
MODE_TENKANSEN 1 Tenkan-sen.
MODE_KIJUNSEN 2 Kijun-sen.
MODE_SENKOUSPANA 3 Senkou Span A.
MODE_SENKOUSPANB 4 Senkou Span B.
MODE_CHINKOUSPAN 5 Chinkou Span.


B- k) Moving Average methods – Taşınan Ortalama Metodları

Taşınan Ortalama hesap yöntemi, with iAlligator(), iEnvelopes(), iEnvelopesOnArray, iForce(), iGator(), iMA(), iMAOnArray(), iStdDev(), iStdDevOnArray(), iStochastic() göstergeleri ile kullanıldı. Bu, aşağıdaki değerlerin herhangi biri olabilir :
Constant Value Description
MODE_SMA 0 Simple moving average,
MODE_EMA 1 Exponential moving average,
MODE_SMMA 2 Smoothed moving average,
MODE_LWMA 3 Linear weighted moving average.


B- l) MessageBox

MessageBox() fonksiyonu dönüş kodları.

Eğer bir mesaj kutusunun Cancel (İptal) düğmesi varsa fonksiyon ya ESC anahtarına basıldığında ya da Cancel (İptal) düğmesi seçilmiş olursa IDCANCEL değerine döner. Eğer mesaj kutusunun Cancel (İptal) düğmesi yoksa ESC’ e basmanın bir etkisi olmaz.

Not: MessageBox dönüş kodları WinUser32.mqh dosyası içinde tanımlanır.

Constant Value Description
IDOK 1 OK button was selected.
IDCANCEL 2 Cancel button was selected.
IDABORT 3 Abort button was selected.
IDRETRY 4 Retry button was selected.
IDIGNORE 5 Ignore button was selected.
IDYES 6 Yes button was selected.
IDNO 7 No button was selected.
IDTRYAGAIN 10 Try Again button was selected.
IDCONTINUE 11 Continue button was selected.

MessageBox fonksiyon bayrakları içerikler ve iletişim kutusunun davranışını belirtir. Bu değer, bayrakların, aşağıdaki grupların bayraklarından bir birleşmesi olabilir.

Mesaj kutusunda gösterilmiş düğmeleri göstermek için aşağıdaki değerlerden biri belirtilir.

Constant Value Description
MB_OK 0x00000000 Mesaj kutusu bir itme düğmesi içerir :OK. Bu, varsayılandır.
MB_OKCANCEL 0x00000001 Mesaj kutusu iki itme düğmesi içerir: OK ve Cancel (OK ve İPTAL ET).
MB_ABORTRETRYIGNORE 0x00000002 Mesaj kutusu üç itme düğmesi içerir: Durdur (Abort), Tekrar dene (Retry), ve Yoksay (Ignore).
MB_YESNOCANCEL 0x00000003 Mesaj kutusu üç itme düğmesi içerir: Evet (Yes), Hayır (No), ve İptal et (Cancel).
MB_YESNO 0x00000004 Mesaj kutusu iki itme düğmesi içerir : Evet (Yes), Hayır (No).
MB_RETRYCANCEL 0x00000005 Mesaj kutusu iki itme düğmesi içerir : Tekrar dene (Retry) ve İptal et (Cancel).
MB_CANCELTRYCONTINUE 0x00000006 Windows 2000: Mesaj kutusu üç itme düğmesi içerir: İptal et (Cancel), Tekrar dene (Try Again),Devam et (Continue). Bu mesaj kutusu tipini MB_ABORTRETRYIGNORE yerine kullanın.




Mesaj kutusunda bir ikonu göstermek için aşağıdaki değerlerden biri belirtilir.

Constant Value Description
MB_ICONSTOP, MB_ICONERROR, MB_ICONHAND 0x00000010 Bir dur-imzala ikonu mesaj kutusunda görünür.
MB_ICONQUESTION 0x00000020 Bir soru işareti ikonu mesaj kutusunda görünür.
MB_ICONEXCLAMATION, MB_ICONWARNING 0x00000030 Bir uarı-noktası ikonu mesaj kutusunda görünür.
MB_ICONINFORMATION, MB_ICONASTERISK 0x00000040 Bir dönge içinde bir küçük harf içeren ikon mesaj kutusunda görünür.

Varsayılan düğmeyi göstermek için aşağıdaki değerlerden biri belirtilir.

Constant Value Description
MB_DEFBUTTON1 0x00000000 İlk düğme, varsayılan düğmedir. MB_DEFBUTTON1, MB_DEFBUTTON2, MB_DEFBUTTON3, ya da MB_DEFBUTTON4 belirtilene kadar varsayılandır.
MB_DEFBUTTON2 0x00000100 İkinci düğme, varsayılan düğmedir.
MB_DEFBUTTON3 0x00000200 Üçüncü düğme, varsayılan düğmedir.
MB_DEFBUTTON4 0x00000300 Dördüncü düğme, varsayılan düğmedir.

MessageBox() fonksiyonu davranış bayrakları WinUser32.mqh dosyası içinde tanımlanırlar; bunun nedeni, bu başlık dosyası #include .’ nin içinden programlara eklenmek zorundadır.Tüm mümkün bayraklar burada listelenmezler. Daha fazla ayrıntı için lütfen Win32 API tanımına başvurunuz.




B- m) Object types – Nesne Tipi

Nesne tipi tanıtıcı sabitleri ObjectCreate(), ObjectsDeleteAll() ve ObjectType() fonksiyonları ile kullanıldı. Bu, aşağıdaki değerlerin herhangi biri olabilir :

Nesnelerin ilgili tipe göre 1-3 koordinatlarına sahip olabilirler.

Constant Value Description
OBJ_VLINE 0 Dikey çizgi. İlk koordinatın zaman bölümünü kullanır.
OBJ_HLINE 1 Yatay çizgi. İlk koordinatın fiyat bölümünü kullanır.
OBJ_TREND 2 Yönelim çizgisi. 2 koordinat kullanır.
OBJ_TRENDBYANGLE 3 Açı ile yönelim. 1 koordinat kullanır. Çizginin açısını ayarlamak için ObjectSet() fonksiyonunu kullanın.

OBJ_REGRESSION 4 Bağlanım. İlk iki koordinatın zaman bölümlerini kullanın.
OBJ_CHANNEL 5 Kanal. 3 koordinat kullanır.
OBJ_STDDEVCHANNEL 6 Standart sapma kanalı. İlk iki koordinatın zaman bölümlerini kullanır.
OBJ_GANNLINE 7 Gann çizgisi. 2 koordinat kullanır; fakat ikinci koordinatın fiyat bölümüne önem verilmemiştir.
OBJ_GANNFAN 8 Gann fan. 2 koordinat kullanır; fakat ikinci koordinatın fiyat bölümüne önem verilmemiştir.
OBJ_GANNGRID 9 Gann klavuzu. İki koordinat kullanır; fakat ikinci koordinatın fiyat bölümüne önem verilmemiştir.
OBJ_FIBO 10 Fibonacci kaynağına gitmek. İki koordinat kullanır.
OBJ_FIBOTIMES 11 Fibonacci zaman alanları. İki koordinat kullanır.
OBJ_FIBOFAN 12 Fibonacci fanı. İki koordinat kullanır.
OBJ_FIBOARC 13 Fibonacci yayaları. İki koordinat kullanır.
OBJ_EXPANSION 14 Fibonacci açılımları. Üç koordinat kullanır.
OBJ_FIBOCHANNEL 15 Fibonacci kanalı. Üç koordinat kullanır.
OBJ_RECTANGLE 16 Dikdörtgen. İki koordinat kullanır.
OBJ_TRIANGLE 17 Üçgen. Üç koordinat kullanır.
OBJ_ELLIPSE 18 Elips. İki koordinat kullanır.
OBJ_PITCHFORK 19 Andrew’ un yabası. Üç koordinat kullanır.
OBJ_CYCLES 20 Çember.İki koordinat kullanır.
OBJ_TEXT 21 Metin. Bir koordinat kullanır.
OBJ_ARROW 22 Oklar. Bir koordinat kullanır.
OBJ_LABEL 23 Metin etiketi. Piksellerde bir koordinat kullanır.



B- n) Object properties – Nesne Özellikleri

Nesne değer fihristi ObjectGet() ve ObjectSet() fonksiyonları ile kullanıldı.Bu, aşağıdaki değerlerin herhangi biri olabilir :

Constant Value Type Description
OBJPROP_TIME1 0 datetime İlk koordinat zaman bölümünü ayarlamak/almak için tarih-zaman değeri.
OBJPROP_PRICE1 1 double İlk koordinat fiyat bölümünü ayarlamak/almak için çift değer.
OBJPROP_TIME2 2 datetime İkinci koordinat zaman bölümünü ayarlamak/almak için tarihzaman değeri.
OBJPROP_PRICE2 3 double İkinci koordinat fiyat bölümünü ayarlamak/almak için çift değer.
OBJPROP_TIME3 4 datetime Üçüncü koordinat zaman bölümünü ayarlamak/almak için tarihzaman değeri.
OBJPROP_PRICE3 5 double Üçüncü koordinat fiyat bölümünü ayarlamak/almak için çift değer.
OBJPROP_COLOR 6 color Nesne rengini ayarlamak/almak içim renk değeri.
OBJPROP_STYLE 7 int Değer, nesne çizgi stilini ayarlamak/almak için STYLE_SOLID, STYLE_DASH, STYLE_DOT, STYLE_DASHDOT, STYLE_DASHDOTDOT sabitlerinden biridir.
OBJPROP_WIDTH 8 int Nense çizgi genişliğini ayarlamak/almak için tamsayı değeri. 1’den 5’e kadar olabilir.
OBJPROP_BACK 9 bool Nesne için arka plan çizim bayrağını ayarlamak/almak için Boolean değeri.
OBJPROP_RAY 10 bool Nesnenin ışın bayrağını ayarlamak/almak için Boolean değeri.
OBJPROP_ELLIPSE 11 bool Fibo yayları için elips bayrağını ayarlamak/almak için Boolean değeri.
OBJPROP_SCALE 12 double Ayar nesne özelliğini ayarlamak/almak için çift değer.
OBJPROP_ANGLE 13 double Derecelerdeki açı nesne özelliğini ayarlamak/almak için çift değer.
OBJPROP_ARROWCODE 14 int Ok kod nesne özelliğini ayarlamak/almak için tamsayı değeri ya da ok sayımı.
OBJPROP_TIMEFRAMES 15 int Değer, zaman-çerçeve nesne özlleğini ayarlamak/almak için nesne görünürlük sabitlerinin bir ya da kombinasyonu (bitsel toplamı) olabilir.
OBJPROP_DEVIATION 16 double Standart sapma nesneleri için sapma özelliğini ayarlamak/almak için çift değer.
OBJPROP_FONTSIZE 100 int Metin nesneleri için yazı tipi büyüklüğünü ayarlamak/almak için tamsayı değeri.
OBJPROP_CORNER 101 int Etiket nesneleri için bağlantı köşe özelliğini ayarlamak/almak için tamsayı değeri. 0’dan 3’e kadar olmak zorundadır.
OBJPROP_XDISTANCE 102 int Piksellerde bağlantı X uzaklık nesne özelliğini ayarlamak/almak için tamsayı değeri.
OBJPROP_YDISTANCE 103 int Piksellerde bağlantı Y uzaklık nesne özelliğini ayarlamak/almak için tamsayı değeri.
OBJPROP_FIBOLEVELS 200 int Fibonacci nesne düzey sayımını ayarlamak/almak için tamsayı değeri. 0’dan 32’ye kadar olabilir.
OBJPROP_LEVELCOLOR 201 color Nesne düzey çizgi rengini ayarlamak/almak için renk değeri.
OBJPROP_LEVELSTYLE 202 int Değer, nesne düzey çizgi stilini ayarlamak/almak için STYLE_SOLID, STYLE_DASH, STYLE_DOT, STYLE_DASHDOT, STYLE_DASHDOTDOT sabitlerinden biridir.
OBJPROP_LEVELWIDTH 203 int Nesne düzey çizgi genişliğini ayarlamak/almak için tamsayı değeri. 1’den 5’e kadar olabilir.
OBJPROP_FIRSTLEVEL+n 210+n int Ayarlamak/almak için n’ in düzey içeriği olduğu yerde Fibonacci nesne düzey içeriği 0’dan 31’e kadar olabilir.


B- o) Object visibility – Nesne ????

Nesnenin gösterilebildiği zaman çerçeveleri. OBJPROP_TIMEFRAMES özelliğini kurmak için ObjectSet() fonksiyonu içinde kullanıldı.

Constant Value Description
OBJ_PERIOD_M1 0x0001 Object shown is only on 1-minute charts.
OBJ_PERIOD_M5 0x0002 Object shown is only on 5-minute charts.
OBJ_PERIOD_M15 0x0004 Object shown is only on 15-minute charts.
OBJ_PERIOD_M30 0x0008 Object shown is only on 30-minute charts.
OBJ_PERIOD_H1 0x0010 Object shown is only on 1-hour charts.
OBJ_PERIOD_H4 0x0020 Object shown is only on 4-hour charts.
OBJ_PERIOD_D1 0x0040 Object shown is only on daily charts.
OBJ_PERIOD_W1 0x0080 Object shown is only on weekly charts.
OBJ_PERIOD_MN1 0x0100 Object shown is only on monthly charts.
OBJ_ALL_PERIODS 0x01FF Object shown is on all timeframes.
NULL 0 Object shown is on all timeframes.
EMPTY -1 Hidden object on all timeframes.



B- p) Uninitialize reason codes – Başlatmasız Sebep Kodları

Başlatmasız sebep kodları UninitializeReason() fonksiyonları ile geri döndü. Bu, aşağıdaki değerlerin herhangi biri olabilir :

Constant Value Description
0 Elyazısı yürütmesini ayrı olarak bitirir.
REASON_REMOVE 1 Uzman, grafikten kaldırılır.
REASON_RECOMPILE 2 Uzman tekrar yeniden derlenir.
REASON_CHARTCHANGE 3 Sembol ya da zaman-çerçeve grafikte değiştirilir.
REASON_CHARTCLOSE 4 Grafik kapatılır.
REASON_PARAMETERS 5 Girdi parametreleri kullanıcı tarafından değiştirilir.
REASON_ACCOUNT 6 Diğer hesap aktive edilir.




B- r) Special constants – Özel Sabitler

Özel sabitler, parametreler ve değişkenler durumlarını gösterirdi. Bu, aşağıdaki değerlerin herhangi biri olabilir :

Constant Value Description
NULL 0 Dizinin boş bölgesini gösterir.
EMPTY -1 Parametrenin boş bölgesini gösterir.
EMPTY_VALUE 0x7FFFFFFF Varsayılan özel gösterge boş değeri.
CLR_NONE 0xFFFFFFFF Renklerin boş bölgesini gösterir.
WHOLE_ARRAY 0 Dizi fonksiyonları ile kullanılır. Bütün dizi öğelerinin işleneceğini gösterir.


B- s) Error codes – Hata Kodları

GetLastError() fonksiyonu kodları geri döndürür. Hata kod sabitleri stderror.mqh dosyasında tanımlandı.Metin mesajlarınının çıktısını almak için stdlib.mqh dosyasında tanımlanan ErrorDescription() fonksiyonu kullanılır.

#include
#include
void SendMyMessage(string text)
{
int check;
SendMail("some subject", text);
check=GetLastError();
if(check!=ERR_NO_MQLERROR) Print("Cannot send message, error: ",ErrorDescription(check));
}




Hata kodları ticaret sunucusundan geri döndüler.

Constant Value Description
ERR_NO_ERROR 0 Hata geri dönmez.
ERR_NO_RESULT 1 Hata geri dönmez; fakat sonuç bilinmeyendir.
ERR_COMMON_ERROR 2 Genel hata.
ERR_INVALID_TRADE_PARAMETERS 3 Geçersiz ticari parametreler.
ERR_SERVER_BUSY 4 Ticaret sunucu meşguldür.
ERR_OLD_VERSION 5 Müşteri terminalinin eski versiyonu.
ERR_NO_CONNECTION 6 Ticari sunucu ile bağlantı yok.
ERR_NOT_ENOUGH_RIGHTS 7 Yeterli sağ yok.
ERR_TOO_FREQUENT_REQUESTS 8 Çok fazla yaygın talep.
ERR_MALFUNCTIONAL_TRADE 9 Arızalı çalışma ticari operasyonu.
ERR_ACCOUNT_DISABLED 64 Hesap sakatlandı.
ERR_INVALID_ACCOUNT 65 Geçersiz hesap.
ERR_TRADE_TIMEOUT 128 Ticari zaman aşımı.
ERR_INVALID_PRICE 129 Geçersiz fiyat.
ERR_INVALID_STOPS 130 Geçersiz durdurmalar.
ERR_INVALID_TRADE_VOLUME 131 Geçersiz ticari hacim.
ERR_MARKET_CLOSED 132 Market kapatıldı.
ERR_TRADE_DISABLED 133 Ticaret sakatlandı.
ERR_NOT_ENOUGH_MONEY 134 Yeterli para yok.
ERR_PRICE_CHANGED 135 Fiyat değişti.
ERR_OFF_QUOTES 136 Devre dışı fiyat teklifi.
ERR_BROKER_BUSY 137 Broker meşguldür.
ERR_REQUOTE 138 Tekrar devre dışı.
ERR_ORDER_LOCKED 139 Sipariş kilitlendi.
ERR_LONG_POSITIONS_ONLY_ALLOWED 140 Sadece uzun pozisyonlara izin verildi.
ERR_TOO_MANY_REQUESTS 141 Çok fazla talep.
ERR_TRADE_MODIFY_DENIED 145 Değişiklik reddedildi; çünkü sipraiş markete çok yakın.
ERR_TRADE_CONTEXT_BUSY 146 Ticaret ortamı meşguldür.
ERR_TRADE_EXPIRATION_DENIED 147 Sona erme tarihi broker tarafından reddedildi.
ERR_TRADE_TOO_MANY_ORDERS 148 Açık ve askıda siparişlerin miktarı broker tarafından ayarlanan limite erişti.



MQL4, zaman hata kodlarını çalıştırır.
Constant Value Description
ERR_NO_MQLERROR 4000 Hata yok.
ERR_WRONG_FUNCTION_POINTER 4001 Yanlış fonksiyon göstergesi.
ERR_ARRAY_INDEX_OUT_OF_RANGE 4002 Dizi içeriği erimin dışındadır.
ERR_NO_MEMORY_FOR_FUNCTION_CALL_STACK 4003 Fonksiyon çağırma yığınla için bellek yok.
ERR_RECURSIVE_STACK_OVERFLOW 4004 Yinelemeli yığınla aşım.
ERR_NOT_ENOUGH_STACK_FOR_PARAMETER 4005 Parametre için yeterli yığın yok.
ERR_NO_MEMORY_FOR_PARAMETER_STRING 4006 Parametre dizi için bellek yok.
ERR_NO_MEMORY_FOR_TEMP_STRING 4007 Temp dizisi için bellek yok.
ERR_NOT_INITIALIZED_STRING 4008 Dizi başlatılmadı.
ERR_NOT_INITIALIZED_ARRAYSTRING 4009 Dizilimde dizi başlatılmadı.
ERR_NO_MEMORY_FOR_ARRAYSTRING 4010 Dizilim dizisi için bellek yok.
ERR_TOO_LONG_STRING 4011 Çok uzun dizi.
ERR_REMAINDER_FROM_ZERO_DIVIDE 4012 Sıfır bölmesinden arta kalan.
ERR_ZERO_DIVIDE 4013 Sıfır bölmesi.
ERR_UNKNOWN_COMMAND 4014 Bilinmeyen komut.
ERR_WRONG_JUMP 4015 Yanlış atlamak (hiçbir zaman hata üretmez).
ERR_NOT_INITIALIZED_ARRAY 4016 Başlatılmamış dizilim.
ERR_DLL_CALLS_NOT_ALLOWED 4017 DLL çağrılarına izin verilmez.
ERR_CANNOT_LOAD_LIBRARY 4018 Kütüphane yükleyemez.
ERR_CANNOT_CALL_FUNCTION 4019 Fonksiyonu çağıramaz.
ERR_EXTERNAL_EXPERT_CALLS_NOT_ALLOWED 4020 Uzman fonksiyon çağırılarına izin verilmez.
ERR_NOT_ENOUGH_MEMORY_FOR_RETURNED_STRING 4021 Fonksiyondan geri dönen temp dizisi için yeterli bellek yok.
ERR_SYSTEM_BUSY 4022 Sistem meşguldür (hiçbir zaman hata üretmez).
ERR_INVALID_FUNCTION_PARAMETERS_COUNT 4050 Geçersiz fonksiyon parametreleri sayımı.
ERR_INVALID_FUNCTION_PARAMETER_VALUE 4051 Geçersiz fonksiyon parametre değeri.
ERR_STRING_FUNCTION_INTERNAL_ERROR 4052 Dizi fonksiyonu içsel hatası.
ERR_SOME_ARRAY_ERROR 4053 Bazı dizilim hataları.
ERR_INCORRECT_SERIES_ARRAY_USING 4054 Doğru olmayan seriler dizilim kullanımı.
ERR_CUSTOM_INDICATOR_ERROR 4055 Özel gösterge hatası.
ERR_INCOMPATIBLE_ARRAYS 4056 Dizilimler uyumsuzdur.
ERR_GLOBAL_VARIABLES_PROCESSING_ERROR 4057 Genel değişkenler hata işlemine devam ediyor.
ERR_GLOBAL_VARIABLE_NOT_FOUND 4058 Genel değişken bulunamadı.
ERR_FUNCTION_NOT_ALLOWED_IN_TESTING_MODE 4059 Fonksiyona test etme modunda izin verilmedi.
ERR_FUNCTION_NOT_CONFIRMED 4060 Fonksiyon onaylanmadı.
ERR_SEND_MAIL_ERROR 4061 Gönderilmiş posta hatası.
ERR_STRING_PARAMETER_EXPECTED 4062 Dizi parametresi beklendi.
ERR_INTEGER_PARAMETER_EXPECTED 4063 Tamsayı parametresi beklendi.
ERR_DOUBLE_PARAMETER_EXPECTED 4064 Çift parametre beklendi.
ERR_ARRAY_AS_PARAMETER_EXPECTED 4065 Dizilim parametre olarak beklendi.
ERR_HISTORY_WILL_UPDATED 4066 Güncelleme bölümündeki Talep edilmiş geçmiş veri.
ERR_TRADE_ERROR 4067 Ticaret fonksiyonunda bazı hatalar.
ERR_END_OF_FILE 4099 Dosyanın sonu.
ERR_SOME_FILE_ERROR 4100 Bazı dosya hataları.
ERR_WRONG_FILE_NAME 4101 Wrong file name.
ERR_TOO_MANY_OPENED_FILES 4102 Çok fazla açılmış dosyalar.
ERR_CANNOT_OPEN_FILE 4103 Dosyayı açamıyor.
ERR_INCOMPATIBLE_ACCESS_TO_FILE 4104 Bir dosyaya Uyumsuz erişim.
ERR_NO_ORDER_SELECTED 4105 Seçilen Sipariş yok.
ERR_UNKNOWN_SYMBOL 4106 Bilinmeyen sembol.
ERR_INVALID_PRICE_PARAM 4107 Geçersiz fiyatInvalid price.
ERR_INVALID_TICKET 4108 Geçersiz bilet
ERR_TRADE_NOT_ALLOWED 4109 Ticarete izin verilmedi.
ERR_LONGS__NOT_ALLOWED 4110 Uzunlara izin verilmedi.
ERR_SHORTS_NOT_ALLOWED 4111 Kısalara izin verilmedi.
ERR_OBJECT_ALREADY_EXISTS 4200 Nesne zaten vardı.
ERR_UNKNOWN_OBJECT_PROPERTY 4201 Bilinmeyen nesne özelliği.
ERR_OBJECT_DOES_NOT_EXIST 4202 Nesne var olmadı.
ERR_UNKNOWN_OBJECT_TYPE 4203 Bilinmeyen nesne tipi.
ERR_NO_OBJECT_NAME 4204 Nesne ismi yok.
ERR_OBJECT_COORDINATES_ERROR 4205 Nesne koordinatları hatası.
ERR_NO_SPECIFIED_SUBWINDOW 4206 Belirtilmiş alt pencere yok.
ERR_SOME_OBJECT_ERROR 4207 Nesne fonksiyonunda bazı hatalar.
 
 Gürsel Gürel
Dev Nokta
Re: MT4 ile Expert Programlamak 2009-03-22 22:12:03
     

C- Predefined variables – Tanımlanmış Değişkenler

Uygulanabilen her bir MQL4 programı için önceden tanımlanmış değişkenlerin bir sayısı, bir programın geçerli fiyat çizelgesindeki başlamasının duruma yansımasını destekler.

Kütüphaneler, kütüphane olarak adlandırılan modüllerin değişkenlerini kullanır.

Bu verilere güvenilir ve hızlı olarak erişmek için müşteri terminali ayrı ayrı her bir başlatılmış programın önceden tanımlanmış değişkenlerinin yerel kopyalarını temin eder.Bu veriler, iliştirilmiş bir uzmanın her bir başlangıcında ya da otomatik olarak özel göstergede ya da RefreshRates() fonksiyonu çağırımı kullanılmasında güncellenir.

C- a) Ask - Soru

Double Ask - Çift Soru
Geçerli sembol için bilinen son satıcı fiyatı (fiyatı sor). RefreshRates() fonksiyonu güncellemek için kullanılmış olmalıdır.
Ayrıca MarketInfo() ‘ ye bakınız.

Model :
if(iRSI(NULL,0,14,PRICE_CLOSE,0)<25)
{
OrderSend(Symbol(),OP_BUY,Lots,Ask,3,Bid-StopLoss*Point,Ask+TakeProfit*Point,
"My order #2",3,D'2005.10.10 12:30',Red);
return;
}

C- b) Bars – Barlar

int Bars – int Barları
Geçerli grafikteki barların sayısı.
Ayrıca iBars()’ a bakınız.

Model :
int counter=1;
for(int i=1; i<=Bars; i++)
{
Print(Close[i-1]);
}

C- c) Bid – Fiyat Teklifi

double Bid - double (çift) Fiyat Teklifi

Geçerli sembolün en son bilinen alıcısının fiyatı (fiyatı önerin, fiyatı söyleyiniz). RefreshRates() fonksiyonu güncellemek için kullanılmak zorundadır.
Ayrıca MarketInfo()’ ye bakınız.

Model :
if(iRSI(NULL,0,14,PRICE_CLOSE,0)>75)
{
OrderSend("EURUSD",OP_SELL,Lots,Bid,3,Ask+StopLoss*Point,Bid-TakeProfit*Point,
"My Order #2",3,D'2005.10.10 12:30',Red);
return(0);
}

C- d) Close - Kapama
double Close[] / double (çift) Kapama[ ]

Dizi düzeni, yakın fiyatlar için geçerli grafiğin her barı içerir.
Dizi düzen öğeleri, zıt emirde dizin oluştururlar.Örneğin; sondakinden birinceye.Düzende son olan geçerli bar, 0 olarak dizin oluşturur. En eski bar, grafikte ilk olan, Bars-1 olarak dizin oluşturur.
Ayrıca iClose()’ a bakınız.
Model :
int handle = FileOpen("file.csv", FILE_CSV|FILE_WRITE, ";");
if(handle>0)
{
// table column headers recording
FileWrite(handle, "Time;Open;High;Low;Close;Volume");
// data recording
for(int i=0; i FileWrite(handle, Time[i], Open[i], High[i], Low[i], Close[i], Volume[i]);
FileClose(handle);
}

C- e) Digits - Rakamlar
int Digits / int Rakamları

Ondalık hane noktasından sonra geçerli sembol fiyatları için rakamların sayısı.
Ayrıca MarketInfo()’ ye bakınız.
Model :
Print(DoubleToStr(Close[0], Digits));

C- f) High - Yüksek
double High[] / double (çift) Yüksek[ ]

Düzen dizisi, geçerli grafiğin her barının en yüksek fiyatlarını içerir.
Dizi düzen öğeleri, zıt emirde dizin oluştururlar. Örneğin; sondakinden birinceye.Düzende son olan geçerli bar, 0 olarak dizin oluşturur. En eski bar, grafikte ilk olan, Bars-1 olarak dizin oluşturur.
Ayrıca iHigh()’ a bakınız.
Model :
//---- maximums counting
i=Bars-KPeriod;
if(counted_bars>KPeriod) i=Bars-counted_bars-1;
while(i>=0)
{
double max=-1000000;
k = i + KPeriod-1;
while(k>=i)
{
price=High[k];
if(max k--;
}
HighesBuffer[i]=max;
i--;
}
//----


C- g) Low - Düşük
double Low[] / double (çift) Düşük[]
Düzen dizisi, geçerli grafiğin her barının en düşük fiyatlarını içerir.
Dizi düzen öğeleri, zıt emirde dizin oluştururlar. Örneğin; sondakinden birinceye.Düzende son olan geçerli bar, 0 olarak dizin oluşturur. En eski bar, grafikte ilk olan, Bars-1 olarak dizin oluşturur.
Ayrıca iLow()’ a bakınız. Model :
//---- minima counting
i=Bars-KPeriod;
if(counted_bars>KPeriod) i=Bars-counted_bars-1;
while(i>=0)
{
double min=1000000;
k = i + KPeriod-1;
while(k>=i)
{
price=Low[k];
if(min>price) min=price;
k--;
}
LowesBuffer[i]=min;
i--;
}
//----

C- h) Open - Açık
double Open[] / double (çif) Açık[]
Düzen dizisi, geçerli grafiğin her barının açık fiyatlarını içerir.
Dizi düzen öğeleri, zıt emirde dizin oluştururlar. Örneğin; sondakinden birinceye.Düzende son olan geçerli bar, 0 olarak dizin oluşturur. En eski bar, grafikte ilk olan, Bars-1 olarak dizin oluşturur.
Ayrıca iOpen()’ a bakınız. Model :
i = Bars - counted_bars - 1;
while(i>=0)
{
double high = High[i];
double low = Low[i];
double open = Open[i];
double close = Close[i];
AccumulationBuffer[i] = (close-low) - (high-close);
if(AccumulationBuffer[i] != 0)
{
double diff = high - low;
if(0==diff)
AccumulationBuffer[i] = 0;
else
{
AccumulationBuffer[i] /= diff;
AccumulationBuffer[i] *= Volume[i];
}
}
if(i i--;
}


C- ı) Point - Nokta
double Point / double (çift) Nokta
Nakit para alıntısındaki geçerli sembol nokta değeri.
Ayrıca MarketInfo()’ ye bakınız.
Model :
OrderSend(Symbol(),OP_BUY,Lots,Ask,3,0,Ask+TakeProfit*Point,Red);

C- i) Time - Zaman
datetime Time[] / tarihzaman Zaman[]
Düzen dizisi, geçerli grafiğin her barının açık zamanını içerir.Tarihzaman gibi veri, zamanı,saniyeler içinde, 1 January(Ocak), 1970’nin 00:00 a.m.’den beri geçen, temsil eder.

Dizi düzen öğeleri, zıt emirde dizin oluştururlar. Örneğin; sondakinden birinceye.Düzende son olan geçerli bar, 0 olarak dizin oluşturur. En eski bar, grafikte ilk olan, Bars-1 olarak dizin oluşturur.
Ayrıca iTime()’ a bakınız.
Model :
for(i=Bars-2; i>=0; i--)
{
if(High[i+1] > LastHigh) LastHigh = High[i+1];
if(Low[i+1] < LastLow) LastLow = Low[i+1];
//----
if(TimeDay(Time[i]) != TimeDay(Time[i+1]))
{
P = (LastHigh + LastLow + Close[i+1])/3;
R1 = P*2 - LastLow;
S1 = P*2 - LastHigh;
R2 = P + LastHigh - LastLow;
S2 = P - (LastHigh - LastLow);
R3 = P*2 + LastHigh - LastLow*2;
S3 = P*2 - (LastHigh*2 - LastLow);
LastLow = Open[i];
LastHigh = Open[i];
}
//----
PBuffer[i] = P;
S1Buffer[i] = S1;
R1Buffer[i] = R1;
S2Buffer[i] = S2;
R2Buffer[i] = R2;
S3Buffer[i] = S3;
R3Buffer[i] = R3;
}



C- j) Volume – Hacim
double Volume[] / double (çift) Hacim[]
Düzen dizisi, geçerli grafiğin her barının an hacimlerini içerir.
Dizi düzen öğeleri, zıt emirde dizin oluştururlar. Örneğin; sondakinden birinceye.Düzende son olan geçerli bar, 0 olarak dizin oluşturur. En eski bar, grafikte ilk olan, Bars-1 olarak dizin oluşturur.

Ayrıca iVolume()’ a bakınız.
Model :
if(i==0 && time0 {
d_volume += Volume[0];
if(Low[0] if(High[0]>d_high) d_high = High[0];
d_close = Close[0];
}
last_fpos = FileTell(ExtHandle);
last_volume = Volume[i];
FileWriteInteger(ExtHandle, i_time, LONG_VALUE);
FileWriteDouble(ExtHandle, d_open, DOUBLE_VALUE);
FileWriteDouble(ExtHandle, d_low, DOUBLE_VALUE);
FileWriteDouble(ExtHandle, d_high, DOUBLE_VALUE);
FileWriteDouble(ExtHandle, d_close, DOUBLE_VALUE);
FileWriteDouble(ExtHandle, d_volume, DOUBLE_VALUE);


D- Program Run – Program Başlatması

Bir MQL4 programının çalışması için, derlenmelidir (“Derleme” butonu ya da F5).Derleme hiç hata olmadan yapılmak zorundadır (uyarılara izin verilir; fakat bunlar analiz edilmelidirler).Burada, mukabil rehberde, terminal_direxperts, terminal_direxpertsindicators ya da terminal_direxpertsscripts, yürütülebilir bir dosya, aynı isime ve EX4 uzatmasına sahip, yaratılmalıdır.Bu,yürütme için başlatılabilen dosyadır.

Uzmanlar, özel göstergeler ve elyazıları, açılmış grafiklerden birine, müşteri terminalinin “Navigator” (Navigatör) penceresinden mukabil grafiğe fare ile sürüklenerek iliştirilirler (Drag'n'Drop (Sürükle ve İndir) tekniği). MQL4 programları sadece müşteri terminalleri açıkken çalışabilirler.

Bir uzmanın çalışmayı bitirebilmesi için grafik bağlam menüsündeki "Expert Advisors - Delete" (Uzman Danışmanlar – Sil)’ı kullanan grafik silinmelidir. “Uzman Danışmanlarını İmkanlaştır” alanının durumu uzmanın koşmasını etkiler.

Özel bir gösterge ya da çalışmayı durdurmak için grafikten silinmelidir.

Özel göstergeler ve uzman danışmanlar, grafikten açıkça silinene kadar faaliyet gösterirler. İliştirilmiş uzmanlar ve özel göstergeler hakkındaki bilgi, müşteri terminal başlangıçları arasında kayıt edilir.Elyazıları bir kere yürütülürler ve operasyonlarını tamamladıktan sonra ya da geçerli grafik kapatıldığında ya da statüsünü değiştirdiğinde ya da müşteri terminaline son verildiğinde otomatik olarak silinirler. Elyazıları, haklarındaki bilgiler kayıt edilmeden terminal yeniden başlatmasında başlatılmazlar.

D- a) Program Run – Program Başlatması

Aynı grafikte, bir uzman, bir elyazısı ve limitsiz miktardaki göstergeler aynı zamanda çalışabilirler.
Program grafiğe eklendikten hemen sonra init() fonksiyonu ile birlikte çalışmaya başlar.Grafiğe eklenmiş Uzman danışmanın ya da özel göstergenin init() fonksiyonu, müşteri terminali başlatıldıktan ve tarih verisi (bu sadece uzmanları ilgilendirir, fakat göstergeleri değil) ek olarak yüklendikten sonra, sembol ve/veya grafik periyodu değiştirildikten sonra, program MetaEditor’ de tekrar derlendikten sonra, girdiler uzman penceresinden ya da özel gösterge ayarından değiştirildikten sonra çalıştırılacaktır. Bir uzman ayrıca hesap değiştirildikten sonra başlatılacaktır.

Grafiğe eklenmiş her bir program çalışmasını deinit() fonksiyonu ile tamamlar. deinit() fonksiyonu, müşteri terminal kapanmasında, grafik kapatılmasında, sembol ve/veya grafik periyotlarının değiştirilmesinden hemen önce, programın başarılı olarak tekrar derlenmesinde, girdilerin değiştirilmesinde ya da hesabın değiştirilmesinde çalıştırılır.Kişi, deinit() fonksiyonunun yürütümü sırasında UninitializeReason() fonksiyonunu kullanan başlangıçtan mahrum olmanın sebebini görebilir. deinit() fonksiyo, 2.5 saniye içerisinde yürütülmek zorundadır. Eğer fonksiyon bu süre içerisinde yürütülmesini tamamlayamazsa, zoraki olarak tamamlatılacaktır.Elyazıları bu kural için bir istinadır, çalışmalarını, dışarıdan herhangi bir komut olmaksızın normalde bağımsız olarak bitirmelerine rağmen.Eğer bir elyazısı çok uzun çalışır ise (sonsuz ilmek, düşman örneğinden dolayı) dddışarıdan bir komut ile bitirilebilir (grafik bağlam menüsünden elyazısının silinmesinde, yeni elyazısının aynı grafiğe eklenmesinde,grafiğin kapatılmasında,sembolün ve / veya grafik periyodunun değiştirilmesinde).Bu durumda, deinit() fonksiyonu da 2.5 saniye ile sınırlandırılmıştır.

Yeni kotaların girişinde, eklenmiş uzmanların ve özel göstergelerin start() fonksiyonu yürütülecektir.Eğer start() fonksiyonu, yeni bir kota geldiği zaman önce gelen kotalarda yürütüldüğünde başlatılıyorsa yeni kota uzman tarafından atlanacaktır.Bütün yeni kotaların girişi, program yürütüldüğü sırada, start() fonksiyonunun geçerli yürütülmesi tamamlanana kadar program tarafından atlatılır.Bundan sonra, start() fonksiyonu sadece ardarda gelen yeni kota girişleri olduğu zaman başlatılacaktır.Özel göstergeler için start() fonksiyonu, geçerli grafik sembolü ya da zaman çerçevesi yeni kota girişleri üzerinde bağımsız olarak değiştirildikten sonra tekrar hesaplanmak üzere başlatılacaktır. start() fonksiyonu, uzman özellikler penceresi açıkken çalışmayacaktır.Sonraki, uzman yürütülmesi sırasında açılamayacaktır.

Programın grafikten ayrılması, sembolün ve / veya grafik periyodunun değişmesi, hesabın değişmesi, grafiğin kapatılması, müşteri terminalinin kapatılması kadar programın yürütülmesini kesecektir. Eğer start() fonksiyonu o anda, çalışmayı bitirme komutu verildiği zaman, yürütülüyorsa çalışması kalan süre 2.5 saniye ile sınırlandırılmıştır.Program, IsStopped()’ un yapılmış fonksiyonu ile kapatmayı dener ve işini doğru olarak bitirir olduğunu tanıyabilecektir.

Elyazılarının yürütülmesi giren kotalara bağlı değildir.Sembol ve / veya grafik periyodunun değişmesinde, elyazısı işini bitirecektir ve müşteri terminalinden boşaltılacaktır.
Elyazıları ve uzmanlar, kendi dizgileri üzerinde çalışırlar.Özel göstergeler, asıl arayüz dizgisinde çalışırlar.Eğer bir özel gösterge, iCustom() fonksiyonu ile çağırılır ise bu gösterge kendisini çağıran programın dizgisinde çalışır. Kütüphane (ithal edilmiş) fonksiyonları da çağırılmış program dizgisinde çalışır.


D- b) Imported functions call – İthal Edilen Fonksiyonların Çağrılması

Bir MQL4 programının yürütülmesi sırasında fonksiyonların ithal edilmesi için böyle-çağırılmış geç bağlama kullanılır. Bu şu demektir; ithal edilmiş fonksiyon çağırılana kadar mukabil modül (ex4 ya da dll) yüklenmeyecektir. MQL4 ve DLL kütüphaneleri, çağırılmış modül dizgisinde yürütülürler.

Modülün tamamen kaliteli bir isminin Drive:DirectoryFileName.Ext. gibi yüklenmesinin kullanılması önerilmez. MQL4 kütüphaneleri terminal_direxpertslibraries dosyasından yüklenirler. Eğer kütüphane bulunamazsa kütüphaneyi terminal_direxperts dosyasından yüklemek için bir teşebbüs yapılacaktır.

Sistem kütüphaneleri (DLL’ ler), operasyon sisteminin kuralları ile yüklenirler. Eğer kütüphane zaten yüklenmiş ise (başka bir uzman tarafından örneğin; ya da aynı zamanda başlatılmış başka bir müşteri terminalinden) zaten yüklenmiş olan kütüphane referans gösterilecektir.Aksi halde, arama aşağıdaki düzen içinde yapılacaktır:
1. terminal_direxpertslibraries rehberi
2. terminal_dir müşteri terminalinden başlatılmış rehber
3. Geçerli rehber
4. windows_dirSYSTEM32 (ya da Win98 için windows_dirSYSTEM ) ‘in sistem rehberi
5. windows_dir operasyon sisteminden indirilen rehber
6. PATH ( İZ) çevre sistem değişkeninde listelenen rehberler

Eğer bir DLL başka bir DLL’ yi kendi işinde kullanırsa eski olan yüklenmez eğer sonraki mevcut değil ise.

Sistem kütüphaneleri gibi olmayan, özel kütüphaneler (MQL4) her bir çağırma modülü için ayrı ayrı yüklenirler, bağımsız olarak olsa da çağrılmış kütüphane herhangi bir diğer modül tarafından yüklenir.Örneğin; caller.ex4 modülü fonksiyonları lib1.ex4 ve lib2.ex4 kütüphanelerinden çağırır. lib1.ex4 kütüphanesi, kendi sırasında, lib2.ex4 kütüphanesinden fonksiyonları çağırır.Bu durumda, lib1.ex4 kütüphanesinin bir kopyası daha ve lib2.ex4 kütüphanesinin iki kopyası yüklenecektir; bütün çağırıların aynı caller.ex4 modülünden geldiği gözönünde tutulmaz.

DLL’ den mql4 programına ithal edilen fonksiyonlar Windows API programları için kabul edilen birleştirici konvansiyonu temin etmek zorundadır.Bu tip bir konvansiyonu temin etmek için anahtar kelime __stdcall, Microsoft ® şirketinin derlemecileri için C ya da C++ dilinde yazılmış programların kaynak kodlarında kullanılan belirleyicidir. Yukarıdaki birleştirici konvansiyon aşağıdaki gibi karakterize edilir.
- çağır fonksiyonu (bizim durumumuzda, bu bir mql4 fonksiyonudur), parametreleri uygun bir duruma istiflemek üzere fonksiyon prototipi olarak adlandırılan (ithal edilmiş DLL) fonksiyonu görmek zorundadır.
- Arama fonksiyonu ( bu durumda, bu bir mql4 programıdır), zıt yönde hareket eden siparişte, örneğin, sağdan sola doğru, parametreleri yığın üzerine koyar; bu da şöyle bir sipariştir ki alınmış fonksiyon, ona doğru geçen parametreleri okur.
- Parametreler, şunların açıkça bir link ile geçmesi olmasaydı, kendi değerleri ile geçerler.
- Ona doğru geçen parametrelerin okunmasında ithal edilen fonksiyon istifi kendi kendine kızartacaktır.

İthal edilmiş fonksiyon prototipini tanımlamada parametreleri, bütün parametreler ithal edilen fonksiyonlara açıkça geçmek zorundaymış gibi, varsayılan değerler ile kullanmak faydasızdır.

Eğer bir fonksiyon için çağırma başarısız olursa (uzman yerleşimler DLL ithaline izin vermez ya da mukabil kütüphane herhangi bir sebep için yüklenemeyecektir) uzman, “uzman durduruldu” günlüğünün içerisine mukabil mesajı koyma işini durdurur. Burada, uzman, kendini tekrar başlatana kadar başlatılmayacaktır. Bir uzman, tekrar derlemenin bir sonucu olacak ya da uzman özelliklerinin tablosu açılacak ve OK düğmesine basılacak gibi tekrar başlatılabilir.

D- c) Runtime errors – İşlenen Hatalar

Müşteri terminalinin yürütülen alt sisteminde, bir mql4 programının yürütülmesinde bunun meydana gelmesi halinde, hata kodu depolanabilir.Burada yürütülebilir her bir MQL4 programı için belirli bir last_error değişken temin edilir. İnit fonksiyonu çalışmaya başlamadan önce last_error değişkeni sıfırlanır.Eğer hesaplama işlemi ya da yapılmış fonksiyonun çağırılması esnasında bir hata meydana gelirse last_error değişkeni mukabil hata kodunu alır.Bu değişken içerisinde depolanan değer GetLastError fonksiyonunu kullanabilecektir.Burada, last_error değişkeni sıfırlanacaktır.

Program yürütülmesinde acil olarak durdurulmasına sebep olan kritik hata sayıları vardır :

Constant Value Açıklama
ERR_WRONG_FUNCTION_POINTER 4001 İçsel bir fonksiyonun çağırılmasında yanlış bir foksiyon ibresi ortaya çıkar.
ERR_NO_MEMORY_FOR_FUNCTION_CALL_STACK 4003 İçsel bir fonksiyonun çağırılmasında fonksiyonun istifi çağırması için belleğin tekrardan tahsis edilmesi imkansızdır.
ERR_RECURSIVE_STACK_OVERFLOW 4004 Veri istifi, tekrarlı fonksiyon çağırmasında taşınır.
ERR_NO_MEMORY_FOR_PARAMETER_STRING 4006 İçsel bir fonksiyonun çağırılmasında dizinin bir fonksiyon parametresi gibi geçişi için belleğin tahsis edilmesi imkansızdır.
ERR_NO_MEMORY_FOR_TEMP_STRING 4007 Geçici tamponun dizi operasyonları için tahsis edilmesi imkansızdır.
ERR_NO_MEMORY_FOR_ARRAYSTRING 4010 Tayinde, bir düzen içindeki bir dizi için belleğin tekrar tahsis edilmesi imkansızdır.
ERR_TOO_LONG_STRING 4011 Tayinde, çok uzun sonuçlanan dizi servis tamponu içerisinde yer alır (servis tamponu için tekrar tahsis edilme olanaklı değildir).
ERR_REMAINDER_FROM_ZERO_DIVIDE 4012 Bölümün hatırlatıcısı alındığında 0 ile bölünür.
ERR_ZERO_DIVIDE 4013 0 ile bölünür.
ERR_UNKNOWN_COMMAND 4014 Bilinmeyen talimat.

Eğer program bir kritik hata ile ilişkili olarak çalışmasını durdurursa bu hatanın kodu bir sonraki okumanın başlangıcında ya da deinit fonksiyonun GetLastError() fonksiyonunu kullanmasında okunabilecektir. last_error değişkeni, başlangıçtan ya da deinit fonksiyonunun başlamasından önce sıfırlanmaz.

Uzman danışmanın acil durdurulmasına sebep olan kritik hatalar sayıları, ithal edilmiş fonksiyonlar aramasına başvururu ya da uzman ya da gösterge tekrar başlatılana kadar başlat fonksiyonunun özel gösterge yürütümü başlatılmayacaktır.

Constant Value Açıklama
ERR_CANNOT_LOAD_LIBRARY 4018 İthal edilmiş bir fonksiyonun çağırılmasında, dll hatasının yüklenmesi ya da ex4 kütüphanesinin meydana gelmesi
ERR_CANNOT_CALL_FUNCTION 4019 İthal edilmiş bir fonksiyonun çağırılmasında, dll ya da ex4 kütüphanesinin çağırılmış fonksiyon içermediği öğrenilmiştir.
ERR_DLL_CALLS_NOT_ALLOWED 4017 İthal edilmiş dll fonksiyonunun çağırılmasında, dll ithaline izin verilmediği öğrenilmiştir.
ERR_EXTERNAL_EXPERT_CALLS_NOT_ALLOWED 4020 Bir ex4 fonksiyonunun çağırılmasında, dışsal ex4 ithaline izin verilmediği öğrenilmiştir.

Diğer hatalar, program yürütülmesini engellememektedir.

Constant Value Açıklama
ERR_ARRAY_INDEX_OUT_OF_RANGE 4002 Düzen menzilinin dışında kalan bir düzen parça sayısına erişim teşebbüsü
ERR_NOT_INITIALIZED_STRING 4008 Başlatılmamış dizi : hiçbir değer bir dizinin bir ifadesinde bir operandın olabilmesi için görevlendirilmemiştir
ERR_NOT_INITIALIZED_ARRAYSTRING 4009 Düzen dizi içerisinde başlatılmamış dizi : hiçbir değer bir dizinin parçasının bir ifadesinde bir operandın olabilmesi için görevlendirilmemiştir
ERR_NOT_ENOUGH_MEMORY_FOR_RETURNED_STRING 4021 Fonksiyondan bir dizinin döndürülmesi için belleği tekrar tahsis etmek mümkün değildir

ERR_NO_MQLERROR (4000) kodu asla üretilmez.
Sadece yazılım ya da donanım başarısızlığının sonucunda hata sayıları mümkündür.Eğer aşağıda tanımlanan hatalardan herhangi biri defalarca meydana gelirse geliştirenler ile temasa geçilmelidir.

Constant Value Açıklama
ERR_WRONG_FUNCTION_POINTER 4001 İçsel bir fonksiyonun çağırılmasında, yanlış bir fonksiyon ibresi ortaya çıkar
ERR_UNKNOWN_COMMAND 4014 Bilinmeyen talimat
ERR_NOT_INITIALIZED_ARRAY 4016 Başlatılmamış düzen
ERR_INVALID_FUNCTION_PARAMETERS_COUNT 4050 Geçersiz parametrelerin sayımının yapılmış fonksiyona geçirilmesi
ERR_STRING_FUNCTION_INTERNAL_ERROR 4052 Dizi fonksiyonunun içsel hatası
ERR_TRADE_ERROR 4067 Ticaret fonksiyonunun içsel hatası
ERR_SOME_OBJECT_ERROR 4207 Nesne fonksiyonunun içsel hatası

last_error değişken değerini her zaman değiştiren bazı fonksiyonlar vardır :
Function Error codes
AccountFreeMarginCheck
ERR_STRING_PARAMETER_EXPECTED (4062), ERR_INTEGER_PARAMETER_EXPECTED (4063), ERR_INVALID_FUNCTION_PARAMETER_VALUE (4051), ERR_UNKNOWN_SYMBOL (4106), ERR_NOT_ENOUGH_MONEY (134)
OrderSend
ERR_CUSTOM_INDICATOR_ERROR (4055), ERR_STRING_PARAMETER_EXPECTED (4062), ERR_INTEGER_PARAMETER_EXPECTED (4063), ERR_INVALID_FUNCTION_PARAMETER_VALUE (4051), ERR_INVALID_PRICE_PARAM (4107), ERR_UNKNOWN_SYMBOL (4106), ERR_TRADE_NOT_ALLOWED (4109), ERR_LONGS_NOT_ALLOWED (4110), ERR_SHORTS_NOT_ALLOWED (4111), code returned by trade server

OrderClose
ERR_CUSTOM_INDICATOR_ERROR (4055), ERR_INTEGER_PARAMETER_EXPECTED (4063), ERR_INVALID_FUNCTION_PARAMETER_VALUE (4051), ERR_INVALID_PRICE_PARAM (4107), ERR_INVALID_TICKET (4108), ERR_UNKNOWN_SYMBOL (4106), ERR_TRADE_NOT_ALLOWED (4109), code returned by trade server

OrderCloseBy
ERR_CUSTOM_INDICATOR_ERROR (4055), ERR_INTEGER_PARAMETER_EXPECTED (4063), ERR_INVALID_FUNCTION_PARAMETER_VALUE (4051), ERR_INVALID_TICKET (4108), ERR_UNKNOWN_SYMBOL (4106), ERR_TRADE_NOT_ALLOWED (4109), code returned by trade server

OrderDelete
ERR_CUSTOM_INDICATOR_ERROR (4055), ERR_INVALID_FUNCTION_PARAMETER_VALUE (4051), ERR_INVALID_TICKET (4108), ERR_UNKNOWN_SYMBOL (4106), ERR_TRADE_NOT_ALLOWED (4109), code returned by trade server

OrderModify
ERR_CUSTOM_INDICATOR_ERROR (4055), ERR_INTEGER_PARAMETER_EXPECTED (4063), ERR_INVALID_FUNCTION_PARAMETER_VALUE (4051), ERR_INVALID_PRICE_PARAM (4107), ERR_INVALID_TICKET (4108), ERR_UNKNOWN_SYMBOL (4106), ERR_TRADE_NOT_ALLOWED (4109), code returned by trade server

GetLastError
ERR_NO_ERROR (0)


Eğer bir hata meydana gelirse bazı fonksiyonlar sadece last_error değişkeninin değerini değiştirirler.
Function Error codes
ArrayBsearch
ERR_ARRAY_AS_PARAMETER_EXPECTED (4065), ERR_SOME_ARRAY_ERROR (4053), ERR_INVALID_FUNCTION_PARAMETER_VALUE (4051)
ArrayCopy
ERR_ARRAY_AS_PARAMETER_EXPECTED (4065), ERR_SOME_ARRAY_ERROR (4053), ERR_INCOMPATIBLE_ARRAYS (4056), ERR_INVALID_FUNCTION_PARAMETER_VALUE (4051)
ArrayCopyRates
ERR_ARRAY_AS_PARAMETER_EXPECTED (4065), ERR_SOME_ARRAY_ERROR (4053), ERR_INCOMPATIBLE_ARRAYS (4056), ERR_STRING_PARAMETER_EXPECTED (4062),
ArrayCopySeries
ERR_ARRAY_AS_PARAMETER_EXPECTED (4065), ERR_SOME_ARRAY_ERROR (4053), ERR_INCORRECT_SERIES_ARRAY_USING (4054), ERR_INCOMPATIBLE_ARRAYS (4056), ERR_STRING_PARAMETER_EXPECTED (4062), ERR_HISTORY_WILL_UPDATED (4066), ERR_INVALID_FUNCTION_PARAMETER_VALUE (4051)
ArrayDimension
ERR_ARRAY_AS_PARAMETER_EXPECTED (4065), ERR_SOME_ARRAY_ERROR (4053)
ArrayGetAsSeries
ERR_ARRAY_AS_PARAMETER_EXPECTED (4065), ERR_SOME_ARRAY_ERROR (4053)
ArrayInitialize
ERR_ARRAY_AS_PARAMETER_EXPECTED (4065), ERR_SOME_ARRAY_ERROR (4053), ERR_INVALID_FUNCTION_PARAMETER_VALUE (4051)
ArrayIsSeries
ERR_ARRAY_AS_PARAMETER_EXPECTED (4065), ERR_SOME_ARRAY_ERROR (4053)
ArrayMaximum
ERR_ARRAY_AS_PARAMETER_EXPECTED (4065), ERR_SOME_ARRAY_ERROR (4053), ERR_INVALID_FUNCTION_PARAMETER_VALUE (4051)
ArrayMinimum
ERR_ARRAY_AS_PARAMETER_EXPECTED (4065), ERR_SOME_ARRAY_ERROR (4053), ERR_INVALID_FUNCTION_PARAMETER_VALUE (4051)
ArrayRange
ERR_ARRAY_AS_PARAMETER_EXPECTED (4065), ERR_SOME_ARRAY_ERROR (4053), ERR_INTEGER_PARAMETER_EXPECTED (4063), ERR_INVALID_FUNCTION_PARAMETER_VALUE (4051)
ArrayResize
ERR_ARRAY_AS_PARAMETER_EXPECTED (4065), ERR_SOME_ARRAY_ERROR (4053), ERR_INVALID_FUNCTION_PARAMETER_VALUE (4051)
ArraySetAsSeries
ERR_ARRAY_AS_PARAMETER_EXPECTED (4065), ERR_SOME_ARRAY_ERROR (4053)
ArraySize
ERR_ARRAY_AS_PARAMETER_EXPECTED (4065), ERR_SOME_ARRAY_ERROR (4053)
ArraySort
ERR_ARRAY_AS_PARAMETER_EXPECTED (4065), ERR_SOME_ARRAY_ERROR (4053), ERR_INCORRECT_SERIES_ARRAY_USING (4054), ERR_INVALID_FUNCTION_PARAMETER_VALUE (4051)
FileClose
ERR_INVALID_FUNCTION_PARAMETER_VALUE (4051)
FileDelete
ERR_WRONG_FILE_NAME (4101), ERR_SOME_FILE_ERROR (4100)
FileFlush
ERR_INVALID_FUNCTION_PARAMETER_VALUE (4051)
FileIsEnding
ERR_INVALID_FUNCTION_PARAMETER_VALUE (4051)
FileIsLineEnding
ERR_INVALID_FUNCTION_PARAMETER_VALUE (4051)
FileOpen
ERR_TOO_MANY_OPENED_FILES (4102), ERR_WRONG_FILE_NAME (4101), ERR_INVALID_FUNCTION_PARAMETER_VALUE (4051), ERR_SOME_FILE_ERROR (4100), ERR_CANNOT_OPEN_FILE (4103)
FileOpenHistory
ERR_TOO_MANY_OPENED_FILES (4102), ERR_WRONG_FILE_NAME (4101), ERR_INVALID_FUNCTION_PARAMETER_VALUE (4051), ERR_SOME_FILE_ERROR (4100), ERR_CANNOT_OPEN_FILE (4103)
FileReadArray
ERR_INVALID_FUNCTION_PARAMETER_VALUE (4051), ERR_INCOMPATIBLE_ACCESS_TO_FILE (4104), ERR_SOME_ARRAY_ERROR (4053), ERR_SOME_FILE_ERROR (4100), ERR_END_OF_FILE (4099)
FileReadDouble
ERR_INVALID_FUNCTION_PARAMETER_VALUE (4051), ERR_INCOMPATIBLE_ACCESS_TO_FILE (4104), ERR_END_OF_FILE (4099)
FileReadInteger
ERR_INVALID_FUNCTION_PARAMETER_VALUE (4051), ERR_INCOMPATIBLE_ACCESS_TO_FILE (4104), ERR_END_OF_FILE (4099)
FileReadNumber
ERR_INVALID_FUNCTION_PARAMETER_VALUE (4051), ERR_INCOMPATIBLE_ACCESS_TO_FILE (4104), ERR_SOME_FILE_ERROR (4100), ERR_END_OF_FILE (4099)
FileReadString
ERR_INVALID_FUNCTION_PARAMETER_VALUE (4051), ERR_INCOMPATIBLE_ACCESS_TO_FILE (4104), ERR_SOME_FILE_ERROR (4100), ERR_TOO_LONG_STRING (4011), ERR_END_OF_FILE (4099)
FileSeek
ERR_INVALID_FUNCTION_PARAMETER_VALUE (4051)
FileSize
ERR_INVALID_FUNCTION_PARAMETER_VALUE (4051)
FileTell
ERR_INVALID_FUNCTION_PARAMETER_VALUE (4051)
FileWrite
ERR_INVALID_FUNCTION_PARAMETER_VALUE (4051), ERR_SOME_FILE_ERROR (4100)
FileWriteDouble
ERR_INVALID_FUNCTION_PARAMETER_VALUE (4051), ERR_INCOMPATIBLE_ACCESS_TO_FILE (4104), ERR_SOME_FILE_ERROR (4100)
FileWriteInteger
ERR_INVALID_FUNCTION_PARAMETER_VALUE (4051), ERR_INCOMPATIBLE_ACCESS_TO_FILE (4104), ERR_SOME_FILE_ERROR (4100)
FileWriteString
ERR_INVALID_FUNCTION_PARAMETER_VALUE (4051), ERR_INCOMPATIBLE_ACCESS_TO_FILE (4104), ERR_SOME_FILE_ERROR (4100), ERR_STRING_PARAMETER_EXPECTED (4062)
FileWriteArray
ERR_INVALID_FUNCTION_PARAMETER_VALUE (4051), ERR_INCOMPATIBLE_ACCESS_TO_FILE (4104), ERR_SOME_FILE_ERROR (4100),
GlobalVariableCheck
ERR_STRING_PARAMETER_EXPECTED (4062)
GlobalVariableDel
ERR_STRING_PARAMETER_EXPECTED (4062), ERR_GLOBAL_VARIABLES_PROCESSING_ERROR (4057)
GlobalVariableGet
ERR_STRING_PARAMETER_EXPECTED (4062), ERR_GLOBAL_VARIABLE_NOT_FOUND (4058)
GlobalVariablesDeleteAll
ERR_STRING_PARAMETER_EXPECTED (4062), ERR_GLOBAL_VARIABLES_PROCESSING_ERROR (4057)
GlobalVariableSet
ERR_STRING_PARAMETER_EXPECTED (4062), ERR_GLOBAL_VARIABLES_PROCESSING_ERROR (4057), ERR_GLOBAL_VARIABLE_NOT_FOUND (4058)
GlobalVariableSetOnCondition
ERR_STRING_PARAMETER_EXPECTED (4062), ERR_GLOBAL_VARIABLE_NOT_FOUND (4058)
iCustom
ERR_STRING_PARAMETER_EXPECTED (4062), ERR_INVALID_FUNCTION_PARAMETER_VALUE (4051)
technical indicators, series access functions
ERR_HISTORY_WILL_UPDATED (4066)
technical indicators OnArray
ERR_ARRAY_AS_PARAMETER_EXPECTED (4065), ERR_SOME_ARRAY_ERROR (4053)
IndicatorBuffers
ERR_INVALID_FUNCTION_PARAMETER_VALUE (4051)
IndicatorDigits
ERR_INVALID_FUNCTION_PARAMETER_VALUE (4051)
IndicatorShortName
ERR_STRING_PARAMETER_EXPECTED (4062), ERR_INVALID_FUNCTION_PARAMETER_VALUE (4051)
MarketInfo
ERR_STRING_PARAMETER_EXPECTED (4062), ERR_FUNCTION_NOT_ALLOWED_IN_TESTING_MODE (4059), ERR_UNKNOWN_SYMBOL (4106), ERR_INVALID_FUNCTION_PARAMETER_VALUE (4051)
MathArccos
ERR_INVALID_FUNCTION_PARAMETER_VALUE (4051)
MathArcsin
ERR_INVALID_FUNCTION_PARAMETER_VALUE (4051)
MathMod
ERR_ZERO_DIVIDE (4013)
MathSqrt
ERR_INVALID_FUNCTION_PARAMETER_VALUE (4051)
MessageBox
ERR_FUNCTION_NOT_ALLOWED_IN_TESTING_MODE (4059), ERR_CUSTOM_INDICATOR_ERROR (4055), ERR_STRING_PARAMETER_EXPECTED (4062)
ObjectCreate
ERR_STRING_PARAMETER_EXPECTED (4062), ERR_NO_OBJECT_NAME (4204), ERR_UNKNOWN_OBJECT_TYPE (4203), ERR_INVALID_FUNCTION_PARAMETER_VALUE (4051), ERR_OBJECT_ALREADY_EXISTS (4200), ERR_NO_SPECIFIED_SUBWINDOW (4206)
ObjectDelete
ERR_STRING_PARAMETER_EXPECTED (4062), ERR_NO_OBJECT_NAME (4204), ERR_OBJECT_DOES_NOT_EXIST (4202)
ObjectDescription
ERR_STRING_PARAMETER_EXPECTED (4062), ERR_NO_OBJECT_NAME (4204), ERR_OBJECT_DOES_NOT_EXIST (4202)
ObjectFind
ERR_STRING_PARAMETER_EXPECTED (4062), ERR_NO_OBJECT_NAME (4204)
ObjectGet
ERR_STRING_PARAMETER_EXPECTED (4062), ERR_NO_OBJECT_NAME (4204), ERR_OBJECT_DOES_NOT_EXIST (4202), ERR_UNKNOWN_OBJECT_PROPERTY (4201)
ObjectGetFiboDescription
ERR_STRING_PARAMETER_EXPECTED (4062), ERR_NO_OBJECT_NAME (4204), ERR_INVALID_FUNCTION_PARAMETER_VALUE (4051), ERR_OBJECT_DOES_NOT_EXIST (4202), ERR_UNKNOWN_OBJECT_TYPE (4203), ERR_UNKNOWN_OBJECT_PROPERTY (4201)
ObjectGetShiftByValue
ERR_STRING_PARAMETER_EXPECTED (4062), ERR_NO_OBJECT_NAME (4204), ERR_OBJECT_DOES_NOT_EXIST (4202), ERR_OBJECT_COORDINATES_ERROR (4205)
ObjectGetValueByShift
ERR_STRING_PARAMETER_EXPECTED (4062), ERR_NO_OBJECT_NAME (4204), ERR_OBJECT_DOES_NOT_EXIST (4202), ERR_OBJECT_COORDINATES_ERROR (4205)
ObjectMove
ERR_STRING_PARAMETER_EXPECTED (4062), ERR_NO_OBJECT_NAME (4204), ERR_INVALID_FUNCTION_PARAMETER_VALUE (4051), ERR_OBJECT_DOES_NOT_EXIST (4202)
ObjectName
ERR_INVALID_FUNCTION_PARAMETER_VALUE (4051), ERR_ARRAY_INDEX_OUT_OF_RANGE (4002)
ObjectSet
ERR_STRING_PARAMETER_EXPECTED (4062), ERR_NO_OBJECT_NAME (4204), ERR_OBJECT_DOES_NOT_EXIST (4202), ERR_UNKNOWN_OBJECT_PROPERTY (4201)
ObjectSetText
ERR_STRING_PARAMETER_EXPECTED (4062), ERR_NO_OBJECT_NAME (4204), ERR_OBJECT_DOES_NOT_EXIST (4202)
ObjectSetFiboDescription
ERR_STRING_PARAMETER_EXPECTED (4062), ERR_NO_OBJECT_NAME (4204), ERR_INVALID_FUNCTION_PARAMETER_VALUE (4051), ERR_STRING_PARAMETER_EXPECTED (4062), ERR_OBJECT_DOES_NOT_EXIST (4202), ERR_UNKNOWN_OBJECT_TYPE (4203), ERR_UNKNOWN_OBJECT_PROPERTY (4201)
ObjectType
ERR_STRING_PARAMETER_EXPECTED (4062), ERR_NO_OBJECT_NAME (4204), ERR_OBJECT_DOES_NOT_EXIST (4202)
OrderClosePrice
ERR_NO_ORDER_SELECTED (4105)
OrderCloseTime
ERR_NO_ORDER_SELECTED (4105)
OrderComment
ERR_NO_ORDER_SELECTED (4105)
OrderCommission
ERR_NO_ORDER_SELECTED (4105)
OrderExpiration
ERR_NO_ORDER_SELECTED (4105)
OrderLots
ERR_NO_ORDER_SELECTED (4105)
OrderMagicNumber
ERR_NO_ORDER_SELECTED (4105)
OrderOpenPrice
ERR_NO_ORDER_SELECTED (4105)
OrderOpenTime
ERR_NO_ORDER_SELECTED (4105)
OrderPrint
ERR_NO_ORDER_SELECTED (4105)
OrderProfit
ERR_NO_ORDER_SELECTED (4105)
OrderStopLoss
ERR_NO_ORDER_SELECTED (4105)
OrderSwap
ERR_NO_ORDER_SELECTED (4105)
OrderSymbol
ERR_NO_ORDER_SELECTED (4105)
OrderTakeProfit
ERR_NO_ORDER_SELECTED (4105)
OrderTicket
ERR_NO_ORDER_SELECTED (4105)
OrderType
ERR_NO_ORDER_SELECTED (4105)
PlaySound
ERR_WRONG_FILE_NAME (4101)
SendFTP
ERR_FUNCTION_NOT_ALLOWED_IN_TESTING_MODE (4059), ERR_CUSTOM_INDICATOR_ERROR (4055), ERR_STRING_PARAMETER_EXPECTED (4062)
SendMail
ERR_FUNCTION_NOT_ALLOWED_IN_TESTING_MODE (4059), ERR_STRING_PARAMETER_EXPECTED (4062), ERR_FUNCTION_NOT_CONFIRMED, ERR_SEND_MAIL_ERROR (4061)
SetIndexArrow
ERR_INVALID_FUNCTION_PARAMETER_VALUE (4051)
SetIndexBuffer
ERR_INVALID_FUNCTION_PARAMETER_VALUE (4051), ERR_INCORRECT_SERIES_ARRAY_USING (4054), ERR_INCOMPATIBLE_ARRAYS (4056)
SetIndexDrawBegin
ERR_INVALID_FUNCTION_PARAMETER_VALUE (4051)
SetIndexEmptyValue
ERR_INVALID_FUNCTION_PARAMETER_VALUE (4051)
SetIndexLabel
ERR_INVALID_FUNCTION_PARAMETER_VALUE (4051), ERR_STRING_PARAMETER_EXPECTED (4062)
SetIndexShift
ERR_INVALID_FUNCTION_PARAMETER_VALUE (4051)
SetIndexStyle
ERR_INVALID_FUNCTION_PARAMETER_VALUE (4051)
SetLevelValue
ERR_INVALID_FUNCTION_PARAMETER_VALUE (4051)
Sleep
ERR_CUSTOM_INDICATOR_ERROR (4055)
StringFind
ERR_STRING_PARAMETER_EXPECTED (4062)
StringGetChar
ERR_STRING_PARAMETER_EXPECTED (4062), ERR_NOT_INITIALIZED_STRING (4008), ERR_ARRAY_INDEX_OUT_OF_RANGE (4002)
StringLen
ERR_STRING_PARAMETER_EXPECTED (4062)
StringSetChar
ERR_STRING_PARAMETER_EXPECTED (4062), ERR_INVALID_FUNCTION_PARAMETER_VALUE (4051), ERR_NOT_INITIALIZED_STRING (4008), ERR_TOO_LONG_STRING (4011), ERR_ARRAY_INDEX_OUT_OF_RANGE (4002)
StringSubstr
ERR_STRING_PARAMETER_EXPECTED (4062), ERR_TOO_LONG_STRING (4011)
StringTrimLeft
ERR_STRING_PARAMETER_EXPECTED (4062)
StringTrimRight
ERR_STRING_PARAMETER_EXPECTED (4062)
WindowIsVisible
ERR_FUNCTION_NOT_ALLOWED_IN_TESTING_MODE (4059)
WindowFind
ERR_FUNCTION_NOT_ALLOWED_IN_TESTING_MODE (4059), ERR_STRING_PARAMETER_EXPECTED (4062), ERR_NOT_INITIALIZED_STRING (4008)
WindowHandle
ERR_FUNCTION_NOT_ALLOWED_IN_TESTING_MODE (4059), ERR_STRING_PARAMETER_EXPECTED (4062), ERR_NOT_INITIALIZED_STRING (4008)
WindowScreenShot
ERR_WRONG_FILE_NAME (4101), ERR_INVALID_FUNCTION_PARAMETER_VALUE (4051)

Diğer fonksiyonlar asla last_error değişken değerini değiştirmezler.
AccountBalance, AccountCompany, AccountCredit, AccountCurrency, AccountEquity, AccountFreeMargin, AccountLeverage, AccountMargin, AccountName, AccountNumber, AccountProfit, AccountServer, Alert, CharToStr, Comment, Day, DayOfWeek, DayOfYear, DoubleToStr, GetTickCount, HideTestIndicators, Hour, IndicatorCounted, IsConnected, IsDemo, IsDllsAllowed, IsExpertEnabled, IsLibrariesAllowed, IsOptimization, IsStopped, IsTesting, IsTradeAllowed, IsTradeContextBusy, IsVisualMode, MathAbs, MathArctan, MathCeil, MathCos, MathExp, MathFloor, MathLog, MathMax, MathMin, MathPow, MathRand, MathRound, MathSin, MathSrand, MathTan, Minute, Month, NormalizeDouble, ObjectsDeleteAll, ObjectsRedraw, ObjectsTotal, OrderSelect, OrdersHistoryTotal, Period, Print, RefreshRates, Seconds, SetLevelStyle, StringConcatenate, StrToTime, StrToDouble, Symbol, TerminalCompany, TerminalName, TerminalPath, TimeCurrent, TimeDay, TimeDayOfWeek, TimeDayOfYear, TimeHour, TimeLocal, TimeMinute, TimeMonth, TimeSeconds, TimeToStr, TimeYear, UninitializeReason, WindowBarsPerChart, WindowFirstVisibleBar, WindowPriceOnDropped, WindowTimeOnDropped, WindowsTotal, WindowOnDropped, WindowXOnDropped, WindowYOnDropped, Year
 
<< Geri [ 1 ] İleri >> Bu forumun şu an sponsoru bulunmuyor.
Sponsor olmak için destek@devadim.com adresine bir e-posta gönderebilirsiniz.
Herhangi bir yazı hakkında uyarı göndermeniz durumunda yöneticiye isminiz verilmeden, DevAdim.com yönetimine isminizle birlikte uyarı mesajı gider.