MQL4 Dərsləri 13 : İlk Ticarət Robotumuz 3 -ci Hissə
Bu gün ki dərsimiz əvvəl yazdığımız expertin davamını şəkilindədir. Burada MQL4 proqramlaşdırma dilinə aid yeni funksiyalarla tanış olacağıq.
OnTick() funksiyası daxilinində Sizdə aşağıdakı şəkildə gördüyünüz kimi kodları yazmağa çalışın.
Yazdığımız kodların izahı :
1) iMA - Moving Average indiqatorunu hesablayır və onun dəyirini bizə verir.
double iMA(
string symbol, // symbol
int timeframe, // timeframe
int ma_period, // MA averaging period
int ma_shift, // MA shift
int ma_method, // averaging method
int applied_price, // applied price
int shift // shift
);
Parametrlər :
symbol
Hesablanacaq valyuta cütlüyünün simvol adı Misal üçün "EURUSD" . NULL dəyərinin yazılması proqramın hal-hazırda çalışmış olduğu ( qarafikdə hal-hazırda baxdığınız valyuta cütlüyü ) açıq olduğu simvol adını göstərir.
timeframe
Zaman İntervalı. Burada proqramın hansı zaman intervalında çalışmasını istədiyiniz vaxtı yaza bilərsiniz Misal üçün 1,5,15,30 və s. Cari zaman intervalını ( qarafikdə hal-hazırda baxdığınız valyuta cütlüyünün zaman intervalı ) göstərmək üçün isə 0 yaza bilərsiniz.
ma_period
İndiqatorun hesablanması üçün period. Bizim misalda 5 ( MA_Period_1 ) və 21 ( MA_Period_2 ) kimi göstərilmişdir. Bunu Özünüz dəyişə bilərsiniz.
ma_shift
İndiqator xəttin sürüşdürülməsi . Adətən 0 yazılır. Strategiyanıza uyğun dəyişə bilərsiniz.
ma_method
Moving Average metodu . Simple, Exponential və s.
applied_price
Tədbiq ediləcək qiymət. Qiymətin açılış , bağlanış və s. kimi göstəriciləridir.
shift
Burada İndiqatorun neçə period bundan əvvəli hesablamsını göstərilir. Biz kodlarımızda 1 və 2 yazmışıq. Bunun mənası odur ki, Cari şamdan ( 0 yazılarsa cari şamdır ) əvvəlki iki şamın qiymətini hesablamaq istəmişik.
2 ) OrdersTotal() - Bu açılmış əməliyyatların sayını bizə verir. Kodumuzda biz OrdersTotal() == 0 yazaraq platformada heç bir əməliyyat açılmış olmadığı təqdirdə şərtini vermişik. Yəni platformada açıq əməliyyat varsa yenidən hər hansı bir əməliyyat açmağ istəmirik.
3) OrderSend() - Əməliyyatlarımızı açmağ üçün bu funksiyadan istifadə edirik.
int OrderSend(
string symbol, // symbol
int cmd, // operation
double volume, // volume
double price, // price
int slippage, // slippage
double stoploss, // stop loss
double takeprofit, // take profit
string comment=NULL, // comment
int magic=0, // magic number
datetime expiration=0, // pending order expiration
color arrow_color=clrNONE // color
);
string symbol, // symbol
int cmd, // operation
double volume, // volume
double price, // price
int slippage, // slippage
double stoploss, // stop loss
double takeprofit, // take profit
string comment=NULL, // comment
int magic=0, // magic number
datetime expiration=0, // pending order expiration
color arrow_color=clrNONE // color
);
Parametrlər
symbol
Ticarət üçün simvol adı.
cmd
Əməliyyat tipi. Buy, Sell və s.
volume
Lot Həcimi
price
Əmir qiyməti . Bid, Ask
slippage
Alış və ya Satış əmirləri üçün maxsimum qiymət slippage - i.
stoploss
StopLoss səviyyəsi
takeprofit
TakeProfit səviyyəsi
comment
Açılmış əmir üçün sərh mətini . NULL dəyəri əmirə heç bir şərh yazılmasın mənasıdadır.
magic
Əmir üçün Magic Number ( Sehirli Nömrə ). İstifadəçi tərifindən dəyişdirilə bilər.
expiration
Gözlənilən əmirlər üçün bitmə vaxtı
arrow_color
Qrafikdə açılacaq əmirlər üçün ox rəngi. Burada clrNONE yazılması qrafikdə əmir üçün heç bir rəng göstərilməməsi mənasıdadır.
4) GetLastError() - Hər hansı bir səbəbdən yazılmış əmirlər icra edilmədikdə bizə səhvlərin kodları barədə məlumat verir. Bu kod vastəsilə biz onun nədən qaynağlandığını axtarıb tapa bilərik . Yəni Editorda F1 klavişini sıxdığdan sonra axtarış bölməsinə gedib həmin kodun nə anlama gəldiyini axtara bilərik.
Burada yazılmış bütün kodlar növbəti dərsimizdə blogda yerləşdiriləcəkdir.
Uğurlar...
Yorumlar
Yorum Gönder