"Yeni Başlayanlar için MQL5’te Uzman Danışman Yazmak İçin Adım Adım Açıklamalı Kılavuz" makalesi için tartışma - sayfa 21

 

Herkese merhaba,

MQL5'te (ve bu konuda FOREX'te) yepyeni ama uzun süredir programcıyım. My_First_EA.mq5 dosyasını açtım ve derledim ancak Hata Ayıklama işlevlerini alamıyorum. Örnek kod dosyalarından herhangi birini açarsam Hata Ayıklama seçeneğini alıyorum. Ayrıca 'OrderSend' dönüş değerinin kontrol edilmesi gerektiğine dair bir uyarı aldım. Hata Ayıklama işlevini almak için ne yapmam gerekiyor?

Louis

 
louisd:

Herkese merhaba,

MQL5'te (ve bu konuda FOREX'te) yepyeni ama uzun süredir programcıyım. My_First_EA.mq5 dosyasını açtım ve derledim ancak Hata Ayıklama işlevlerini alamıyorum. Örnek kod dosyalarından herhangi birini açarsam Hata Ayıklama seçeneğini alıyorum. Ayrıca 'OrderSend' dönüş değerinin kontrol edilmesi gerektiğine dair bir uyarı aldım. Hata Ayıklama işlevini almak için ne yapmam gerekiyor?

Louis

Herkese merhaba,

Kendi sorunumu kendim çözdüm. Uzman Danışman Sihirbazı ile yeni bir Proje oluşturdum ve ardından My_First_EA.mq5 dosyasını kopyaladım ve hata ayıklama işlevi elde ettim.

Louis

 
louisd:

Herkese merhaba,

Kendi sorunumu kendim çözdüm. Uzman Danışman Sihirbazı ile yeni bir Proje oluşturdum ve ardından My_First_EA.mq5 dosyasını kopyaladım ve hata ayıklama işlevi elde ettim.

Louis

Ancak 'OrderSend kontrol edilmeli' uyarısını düzelttiniz mi?
 
Boobwood:

4756 hatası alıyorum, 2. sayfada çözümü gördüm ve orjinal kodu kontrol ettim, 218. satırda ZeroMemory(mrequest); vardı. ama hala 4756 hatası alıyorum.


Ayrıca önerilen iki düzeltmeyi de yaptıktan sonra hala bu hatayı alıyorum:

ZeroMemory(mrequest);

ve ayrıca

if(Buy_opened || Sell_opened)

Lütfen birisi 4756 hatası konusunda yardımcı olabilir mi? Sadece bir Satın Alma Emri veremiyor gibi görünüyor.

 
Tchuso:

Merhaba, bir hata alıyorum:

'OrderSend'in dönüş değeri 213. ve 259. satırlarda kontrol edilmelidir.


Çözdünüz mü?

Günaydın Tchuso,

Aynı şey benim de başıma geldi. Her iki işlemde de o satırları bununla değiştirerek düzelttim.

if(!OrderSend(mrequest,mresult))
PrintFormat("OrderSend error %d",GetLastError());

Yardıma ihtiyacınız olursa söyleyin, ben de yeniyim.

Saygılarımla!

 

Örnek kodu oldukça beğendim, ben de bu konuda yeniyim, kodu yorumlarda göründüğü gibi düzelttim ve artık hata vermiyor.

Sorun şu ki, robot işlem açmıyor, işlem bile açmıyor.

Bu sorunu çözebilen var mı?


Strateji test cihazının "Unico" seçeneğini kullanıyorum: bu benim hatam mı?


Zaman ayırdığınız ve desteğiniz için teşekkürler
 


Robotun siparişleri açmaya çalıştığını ancak her zaman bir hata verdiğini fark ettim:


Çıkış:

2020.05.06 20:35:16.141 Core 1 2020.04.20 20:25:00 başarısız piyasa satışı 0.10 EURUSD sl: 1.08965 tp: 1.07665 [Geçersiz istek].


Kodda birkaç şeyi değiştirdim ama çalışmıyor, sahip olduğum kodu ekliyorum:


Orijinal: mrequest.type_filling = "Dokümantasyonda yer alan 3 şekilde koydum".

 mrequest.action = TRADE_ACTION_DEAL;                                  // anında emir gerçekleştirme
         mrequest.price = NormalizeDouble(latest_price.ask,_Digits);           // en son satış fiyatı
         mrequest.sl = NormalizeDouble(latest_price.ask - STP*_Point,_Digits); // Zararı Durdur
         mrequest.tp = NormalizeDouble(latest_price.ask + TKP*_Point,_Digits); // Kâr Al
         mrequest.symbol = _Symbol;                                            // para birimi çifti
         mrequest.volume = Lot;                                                 // işlem yapılacak lot sayısı
         mrequest.magic = EA_Magic;                                             // Sihirli Numarayı Sipariş Edin
         mrequest.type = ORDER_TYPE_BUY;                                        // Sipariş Al
         mrequest.type_filling = ORDER_FILLING_RETURN;                             // Sipariş gerçekleştirme türü
         mrequest.deviation=100;                      
        



Tambien he probado este codigo:

 //--- istek ve sonucun bildirilmesi ve başlatılması
               MqlTradeRequest request={0};
               MqlTradeResult  result={0};
            //--- uygulama parametreleri
               request.action   =TRADE_ACTION_DEAL;                     // ticari faaliyet türü
               request.symbol   =Symbol();                              // sembol
               request.volume   =0.1;                                   // 0,1 lotluk hacim
               request.type     =ORDER_TYPE_BUY;                        // sipariş türü
               request.price    =SymbolInfoDouble(Symbol(),SYMBOL_ASK); // açılış fiyatı
               request.deviation=5;                                     // izin verilen fiyat sapması
               request.magic    =EA_Magic;                          // Siparişin sihirli numarası

               //--- başvuruyu gönderme
               if(!OrderSend(request,result))
               PrintFormat("OrderSend error %d",GetLastError());     // istek gönderilemediyse, hata kodunu girin
               //--- operasyon hakkında bilgi
               PrintFormat("retcode=%u  deal=%I64u  order=%I64u",result.retcode,result.deal,result.order);
 
Libni Colina:


Robotun siparişleri açmaya çalıştığını ancak her zaman hata verdiğini fark ettim:


Çıkın:

2020.05.06 20:35:16.141 Core 1 2020.04.20 20:25:00 failed market sell 0.10 EURUSD sl: 1.08965 tp: 1.07665 [Invalid request].


Kodda birkaç şeyi değiştirdim ama çalışmıyor, elimdeki kodu ekliyorum:


Orijinal: mrequest.type_filling = "Dokümantasyonda yer alan 3 şekilde koydum".


Bunu kodun en üstüne ekleyin:

#include <Trade\Trade.mqh>

Ve sonra bir işlemi açmak için sadece şunu yazın:

double volumen= 0.01; // Veya istediğiniz herhangi bir ses seviyesi

CTrade m_trade;

m_trade.Buy(volumen); // Satın Al

m_trade.Sell(volumen); // Satıyor
 
Merhaba, Eğitim için teşekkür ederim, çok yardımcı oldu. Ancak bir yanlış anlama var, New_Time değişkenleri CopyTimes işlevi ile bildirilmiş ve başlatılmış, ancak Old_Time bildirilmiş ancak ilk başta başlatılmamış ve daha sonra yeni bir çubuk olup olmadığını doğrulamak için New_Time değişkeniyle karşılaştırılmıştır. Old_Time değişkeninin boş olması gerekiyordu. İyi anlatabildim mi bilmiyorum ama okuduğunuz için teşekkürler.
 

Merhaba,


Benzer şekilde, test çalıştırırken 4756 hata kodu alıyorum ve " Satış emri talebi tamamlanamadı" diyor.

Lütfen bunu nasıl çözeceğinizi bildirin.


Teşekkürler