"MQL5'de Alım Satım İşlemleri — Bu Kolaydır" makalesi için tartışma - sayfa 4

 
Konstantin Efremov:

UPD: Rashid yukarıda bir kütüphane dosyası gönderdi, sorunumu çözdü. Standart kütüphanede bir hata olması üzücü. Şimdi kütüphaneyi değiştirmeden doğrudan EA'da bazı değişiklikler yapmanın mümkün olup olmadığını görmek için karşılaştırmayı inceleyeceğim, böylece her şey çalışır

Bu düzenlemeler zaten standart kütüphanede var. Yazıyı okuyacak olanlara ancak şimdi cevap vermeye karar verdim.

 

Güzel, gerçekten güzel bir tane..

 
<Deleted>
.
 
Andy Obama:
 

Herkese iyi günler!

MQL5 programlama dilini incelemeye devam ediyorum. Benim için yararlı olan bilgileri bulmak için neredeyse tüm siteyi araştırdım. Sitede bulunan bilgilerin çoğu, zaten temel bir programlama anlayışına sahip kişilere yöneliktir.

Ve burada! Uzman Danışmanımı anlamama ve geliştirmeme yardımcı olan başka bir HARİKA makale buldum! Yazarın bu yazı dizisini yazmaya devam etmemesi ve kendini sadece 2012 ile sınırlaması üzücü. Ama yine de, bu adama BÜYÜK saygı duyuyorum ve ona tüm yeni başlayanlar adına aynı BÜYÜK TEŞEKKÜRÜ söylüyorum!

Saygılarımla, Vladimir.

Документация по MQL5 - справочник по языку алгоритмического/автоматического трейдинга для MetaTrader 5
Документация по MQL5 - справочник по языку алгоритмического/автоматического трейдинга для MetaTrader 5
  • www.mql5.com
MetaQuotes Language 5 (MQL5) - язык программирования технических индикаторов, торговых роботов и вспомогательных приложений для автоматизации торговли на финансовых рынках. MQL5 является современным языком высокого уровня и разработан MetaQuotes Software Corp. для собственной торгово-информационной платформы. Синтаксис языка максимально близок...
 
Bu konuyla ilgili olmayan yorumlar "Konu Dışı Mesajlar" bölümüne taşınmıştır.
 
pdev:

Merhaba, Bu çok yararlı gönderi için teşekkürler ve lütfen bunu çözmeme yardım edin. MT5'te yeniyim ve EA'lar oluşturmayı öğreniyorum, bu yüzden Ctrade.Buy'ı çalıştırmak için örnek kodu kopyaladım ancak geriye dönük test başarısız oldu. İşte daha fazla bilgi:


1) Hesap: NZD olarak temel para birimi olan canlı bir hesap

2) Geriye dönük test için MetaEditor ayarları:


3) Kod: https://www.mql5.com/tr/articles/481 adresinden kopyalanmıştır:


//+------------------------------------------------------------------+

//|                                                         demo.mq5 |

//|                        Copyright 2017, MetaQuotes Software Corp. |

//|                                             https://www.mql5.com |

//+------------------------------------------------------------------+

#property copyright "Copyright 2017, MetaQuotes Software Corp."

#property link      "https://www.mql5.com"

#property version   "1.00"

#include<Trade\Trade.mqh>


//--- object for performing trade operations

CTrade  trade;

//+------------------------------------------------------------------+

//| Expert initialization function                                   |

//+------------------------------------------------------------------+

int OnInit()

  {

   //--- set MagicNumber for your orders identification

   int MagicNumber=123456;

   trade.SetExpertMagicNumber(MagicNumber);

   //--- set available slippage in points when buying/selling

   int deviation=10;

   trade.SetDeviationInPoints(deviation);

   //--- order execution mode

   trade.SetTypeFilling(ORDER_FILLING_RETURN);

   //--- logging mode: it would be better not to declare this method at all, the class will set the best mode on its own

   trade.LogLevel(1);

   //--- what function is to be used for trading: true - OrderSendAsync(), false - OrderSend()

   trade.SetAsyncMode(true);

   //---

   return(0);

  }

//+------------------------------------------------------------------+

//| Expert deinitialization function                                 |

//+------------------------------------------------------------------+

void OnDeinit(const int reason)

  {

//---

   

  }

//+------------------------------------------------------------------+

//| Expert tick function                                             |

//+------------------------------------------------------------------+

void OnTick()

  {

   BuySample1();

  }


//--- Buy sample  

//+------------------------------------------------------------------+

//|  Buying a specified volume at the current symbol                 |

//+------------------------------------------------------------------+

void BuySample1()

  {

//--- 1. example of buying at the current symbol

   if(!trade.Buy(0.1))

     {

      //--- failure message

      Print("Buy() method failed. Return code=",trade.ResultRetcode(),

            ". Code description: ",trade.ResultRetcodeDescription());

     }

   else

     {

      Print("Buy() method executed successfully. Return code=",trade.ResultRetcode(),

            " (",trade.ResultRetcodeDescription(),")");

     }

//---

  }

4) Hata günlüğü (Lütfen yalnızca EUR/USD üzerinde test ettiğimi unutmayın):

GJ 0 19:36:44.410 127.0.0.1 oturum açma (yapı 1730)

HH 0 19:36:44.420 Ağ 38520 bayt hesap bilgisi yüklendi

JO 0 19:36:44.420 Ağ 1482 bayt test cihazı parametresi yüklendi

QE 0 19:36:44.420 Ağ 188 bayt giriş parametresi yüklendi

FR 0 19:36:44.421 Ağ 443 baytlık sembol listesi yüklendi

IF 0 19:36:44.421 Test uzmanı dosyası eklendi: Experts\demo.ex5. 46684 bayt yüklendi

QH 0 19:36:44.433 Test cihazı ilk depozito 10000.00 NZD, kaldıraç 1:100

JN 0 19:36:44.437 Test cihazı başarıyla başlatıldı

ES 0 19:36:44.437 Ağ 46 Kb toplam başlatma verisi alındı

PP 0 19:36:44.437 Test Cihazı Intel Core i7-4510U @ 2.00GHz, 8103 MB

RJ 0 19:36:44.799 Semboller EURUSD: senkronize edilecek sembol

HR 0 19:36:44.800 Semboller EURUSD: sembol senkronize edildi, 3624 bayt sembol bilgisi alındı

NJ 0 19:36:44.800 Geçmiş EURUSD: geçmiş senkronizasyonu başladı

GO 0 19:36:44.856 Geçmiş EURUSD: 0:00:00.000'da senkronize etmek için 27 bayt geçmiş verisi yükleyin

RQ 0 19:36:44.856 Geçmiş EURUSD: geçmiş 2012.01.01 ile 2017.11.15 arasında senkronize edildi

EF 0 19:36:44.993 Geçmiş EURUSD,Günlük: geçmiş önbelleği 1010 çubuk için ayrıldı ve 2014.01.01 00:00 ile 2014.12.31 00:00 arasında 312 çubuk içeriyor

ND 0 19:36:44.993 Geçmiş EURUSD,Günlük: geçmiş 2014.01.01 00:00'dan başlıyor

OL 0 19:36:44.996 Test Cihazı EURUSD,Günlük (HalifaxPlus-Live): her tik üretiliyor

GN 0 19:36:44.996 Tester EURUSD,Daily: Experts\demo.ex5'in 2015.01.01 00:00'dan 2017.11.15 00:00'a kadar testi başladı

CK 0 19:36:56.288 Semboller NZDUSD: senkronize edilecek sembol

IS 0 19:36:56.288 Semboller NZDUSD: sembol senkronize edildi, 3624 bayt sembol bilgisi alındı

JL 0 19:36:56.288 Geçmiş NZDUSD: geçmiş senkronizasyonu başladı

HJ 0 19:36:56.575 Geçmiş NZDUSD: 0:00:00.078'de senkronize etmek için 14 Kb geçmiş verisi yükleyin

LS 0 19:36:56.575 Geçmiş NZDUSD: geçmiş 2013.01.01 ile 2017.11.15 arasında senkronize edildi

CO 0 19:36:56.579 EURNZD sembolleri: senkronize edilecek sembol

OJ 0 19:36:56.580 Semboller EURNZD: sembol senkronize edildi, 3624 bayt sembol bilgisi alındı

DL 0 19:36:56.580 Geçmiş EURNZD: geçmiş senkronizasyonu başlatıldı

MK 0 19:36:56.656 Geçmiş EURNZD: 0:00:00.000'da senkronize etmek için 27 bayt geçmiş verisi yükle

OD 0 19:36:56.656 Geçmiş EURNZD: geçmiş 2013.01.01 ile 2017.11.15 arasında senkronize edildi

IN 0 19:36:56.665 İşlem 2015.01.02 03:00:00 piyasa alış 0.10 EURUSD (1.20538 / 1.20549 / 1.20538)

PE 0 19:36:56.665 İşlemler 2015.01.02 03:00:00 anlaşma #2 1.20549'da 0.10 EURUSD satın al tamamlandı(sipariş #2'ye göre)

FH 0 19:36:56.666 İşlem 2015.01.02 03:00:00 anlaşma gerçekleştirildi [#2 1.20549'dan 0.10 EURUSD satın al]

OG 0 19:36:56.666 İşlem 2015.01.02 03:00:00 1.20549'da 0.10 alış emri gerçekleştirildi [#2 1.20549'da 0.10 EURUSD alış]

FO 0 19:36:56.670 demo (EURUSD,D1) 2015.01.02 03:00:00 Buy() yöntemi başarıyla çalıştırıldı. Dönüş kodu=10009 (1.20549'da yapıldı)

NM 2 19:37:15.823 Geçmiş NZDUSD 2016.09.21 23:01:00: bozuk geçmiş tespit edildi (s:-73370, o:73433, h:+48, l:-123, c:-117 -- tv:63, rv:11250111)

JF 2 19:37:15.823 Geçmiş NZDUSD 2016.09.21, kötü konteyner bulundu, yeniden senkronize edilmeli

LQ 2 19:37:16.106 Tanımsız işlevde test cihazı geçmiş hatası 9

OH 2 19:37:16.106 Test cihazı '20 NZDUSD' hatası ile test aralığının %0'ında durdu


Lütfen bana sorunun ne olduğunu ve bunu nasıl çözebileceğimi söyleyin?

[Silindi]  
pdev:

Merhaba, Bu çok yararlı gönderi için teşekkürler ve lütfen bunu çözmeme yardım edin. MT5'te yeniyim ve EA'lar oluşturmayı öğreniyorum, bu yüzden Ctrade.Buy'ı çalıştırmak için örnek kodu kopyaladım ancak geriye dönük test başarısız oldu. İşte daha fazla bilgi:


1) Hesap: NZD olarak temel para birimi olan canlı bir hesap

2) Geriye dönük test için MetaEditor ayarları:


3) Kod: https://www.mql5.com/tr/articles/481 adresinden kopyalanmıştır:


//+------------------------------------------------------------------+

//|                                                         demo.mq5 |

//|                        Copyright 2017, MetaQuotes Software Corp. |

//|                                             https://www.mql5.com |

//+------------------------------------------------------------------+

#property copyright "Copyright 2017, MetaQuotes Software Corp."

#property link      "https://www.mql5.com"

#property version   "1.00"

#include<Trade\Trade.mqh>


//--- object for performing trade operations

CTrade  trade;

//+------------------------------------------------------------------+

//| Expert initialization function                                   |

//+------------------------------------------------------------------+

int OnInit()

  {

   //--- set MagicNumber for your orders identification

   int MagicNumber=123456;

   trade.SetExpertMagicNumber(MagicNumber);

   //--- set available slippage in points when buying/selling

   int deviation=10;

   trade.SetDeviationInPoints(deviation);

   //--- order execution mode

   trade.SetTypeFilling(ORDER_FILLING_RETURN);

   //--- logging mode: it would be better not to declare this method at all, the class will set the best mode on its own

   trade.LogLevel(1);

   //--- what function is to be used for trading: true - OrderSendAsync(), false - OrderSend()

   trade.SetAsyncMode(true);

   //---

   return(0);

  }

//+------------------------------------------------------------------+

//| Expert deinitialization function                                 |

//+------------------------------------------------------------------+

void OnDeinit(const int reason)

  {

//---

   

  }

//+------------------------------------------------------------------+

//| Expert tick function                                             |

//+------------------------------------------------------------------+

void OnTick()

  {

   BuySample1();

  }


//--- Buy sample  

//+------------------------------------------------------------------+

//|  Buying a specified volume at the current symbol                 |

//+------------------------------------------------------------------+

void BuySample1()

  {

//--- 1. example of buying at the current symbol

   if(!trade.Buy(0.1))

     {

      //--- failure message

      Print("Buy() method failed. Return code=",trade.ResultRetcode(),

            ". Code description: ",trade.ResultRetcodeDescription());

     }

   else

     {

      Print("Buy() method executed successfully. Return code=",trade.ResultRetcode(),

            " (",trade.ResultRetcodeDescription(),")");

     }

//---

  }

4) Hata günlüğü (Lütfen yalnızca EUR/USD üzerinde test ettiğimi unutmayın):

GJ 0 19:36:44.410 127.0.0.1 oturum açma (yapı 1730)

HH 0 19:36:44.420 Ağ 38520 bayt hesap bilgisi yüklendi

JO 0 19:36:44.420 Ağ 1482 bayt test cihazı parametresi yüklendi

QE 0 19:36:44.420 Ağ 188 bayt giriş parametresi yüklendi

FR 0 19:36:44.421 Ağ 443 baytlık sembol listesi yüklendi

IF 0 19:36:44.421 Test uzmanı dosyası eklendi: Experts\demo.ex5. 46684 bayt yüklendi

QH 0 19:36:44.433 Test cihazı ilk depozito 10000.00 NZD, kaldıraç 1:100

JN 0 19:36:44.437 Test cihazı başarıyla başlatıldı

ES 0 19:36:44.437 Ağ 46 Kb toplam başlatma verisi alındı

PP 0 19:36:44.437 Test Cihazı Intel Core i7-4510U @ 2.00GHz, 8103 MB

RJ 0 19:36:44.799 Semboller EURUSD: senkronize edilecek sembol

HR 0 19:36:44.800 Semboller EURUSD: sembol senkronize edildi, 3624 bayt sembol bilgisi alındı

NJ 0 19:36:44.800 Geçmiş EURUSD: geçmiş senkronizasyonu başladı

GO 0 19:36:44.856 Geçmiş EURUSD: 0:00:00.000'da senkronize etmek için 27 bayt geçmiş verisi yükleyin

RQ 0 19:36:44.856 Geçmiş EURUSD: geçmiş 2012.01.01 ile 2017.11.15 arasında senkronize edildi

EF 0 19:36:44.993 Geçmiş EURUSD,Günlük: geçmiş önbelleği 1010 çubuk için ayrıldı ve 2014.01.01 00:00 ile 2014.12.31 00:00 arasında 312 çubuk içeriyor

ND 0 19:36:44.993 Geçmiş EURUSD,Günlük: geçmiş 2014.01.01 00:00'dan başlıyor

OL 0 19:36:44.996 Test Cihazı EURUSD,Günlük (HalifaxPlus-Live): her tik üretiliyor

GN 0 19:36:44.996 Tester EURUSD,Daily: Experts\demo.ex5'in 2015.01.01 00:00'dan 2017.11.15 00:00'a kadar testi başladı

CK 0 19:36:56.288 Semboller NZDUSD: senkronize edilecek sembol

IS 0 19:36:56.288 Semboller NZDUSD: sembol senkronize edildi, 3624 bayt sembol bilgisi alındı

JL 0 19:36:56.288 Geçmiş NZDUSD: geçmiş senkronizasyonu başladı

HJ 0 19:36:56.575 Geçmiş NZDUSD: 0:00:00.078'de senkronize etmek için 14 Kb geçmiş verisi yükleyin

LS 0 19:36:56.575 Geçmiş NZDUSD: geçmiş 2013.01.01 ile 2017.11.15 arasında senkronize edildi

CO 0 19:36:56.579 EURNZD sembolleri: senkronize edilecek sembol

OJ 0 19:36:56.580 Semboller EURNZD: sembol senkronize edildi, 3624 bayt sembol bilgisi alındı

DL 0 19:36:56.580 Geçmiş EURNZD: geçmiş senkronizasyonu başlatıldı

MK 0 19:36:56.656 Geçmiş EURNZD: 0:00:00.000'da senkronize etmek için 27 bayt geçmiş verisi yükle

OD 0 19:36:56.656 Geçmiş EURNZD: geçmiş 2013.01.01 ile 2017.11.15 arasında senkronize edildi

IN 0 19:36:56.665 İşlem 2015.01.02 03:00:00 piyasa alış 0.10 EURUSD (1.20538 / 1.20549 / 1.20538)

PE 0 19:36:56.665 İşlemler 2015.01.02 03:00:00 anlaşma #2 1.20549'da 0.10 EURUSD satın al tamamlandı(sipariş #2'ye göre)

FH 0 19:36:56.666 İşlem 2015.01.02 03:00:00 anlaşma gerçekleştirildi [#2 1.20549'dan 0.10 EURUSD satın al]

OG 0 19:36:56.666 İşlem 2015.01.02 03:00:00 1.20549'da 0.10 alış emri gerçekleştirildi [#2 1.20549'da 0.10 EURUSD alış]

FO 0 19:36:56.670 demo (EURUSD,D1) 2015.01.02 03:00:00 Buy() yöntemi başarıyla çalıştırıldı. Dönüş kodu=10009 (1.20549'da yapıldı)

NM 2 19:37:15.823 Geçmiş NZDUSD 2016.09.21 23:01:00: bozuk geçmiş tespit edildi (s:-73370, o:73433, h:+48, l:-123, c:-117 -- tv:63, rv:11250111)

JF 2 19:37:15.823 Geçmiş NZDUSD 2016.09.21, kötü konteyner bulundu, yeniden senkronize edilmeli

LQ 2 19:37:16.106 Tanımsız işlevde test cihazı geçmiş hatası 9

OH 2 19:37:16.106 Test cihazı '20 NZDUSD' hatası ile test aralığının %0'ında durdu


Lütfen bana sorunun ne olduğunu ve bunu nasıl çözebileceğimi söyleyin?

 

Her yerde limit ve stop emirleri açarken makalede

double price=1000*point;

Acaba makalenin kendilerine yardımcı olduğunu yazanlar makaledeki kodu eklediler mi?