Yeni başlayanlardan sorular MQL5 MT5 MetaTrader 5 - sayfa 1498

 
Merhaba, lütfen tavsiye verin.

Verileri bir dosyaya kaydetme.
void OrderExport(MqlTradeRequest &request)
  {
   static long trans = 0;
   static long keepTrans = 0;
   string file = "OrderExchange" + (request.magic > 0 ? IntegerToString(request.magic) : "") + ".csv";
   int handle = FileOpen(file, FILE_CSV | FILE_READ | FILE_SHARE_READ | FILE_WRITE | FILE_SHARE_WRITE | (Common ? FILE_COMMON : 0), ';');
   if(handle != INVALID_HANDLE)
     {
      FileSeek(handle, 0, SEEK_END);
      long tr = TimeGMT();
      trans = (tr > trans) ? tr : (trans + 1);
      FileWrite(handle,
                trans,
                request.action,
                request.magic,

Dosyadan veri alma

void OrderImport(MqlTradeRequest &aReq[], int magic, string symbol)
  {
   ArrayFree(aReq);
   long tr;
   static long trans = 0;
   if(trans == 0)
      trans = TimeGMT() - 3;
   string file = "OrderExchange" + (magic > 0 ? IntegerToString(magic) : "") + ".csv";
   int handle = FileOpen(file, FILE_TXT | FILE_READ | FILE_SHARE_READ | FILE_ANSI | (Common ? FILE_COMMON : 0));
   if(handle != INVALID_HANDLE)
     {
      FileSeek(handle, 0, SEEK_SET);
      while(!FileIsEnding(handle))
        {
         string s = FileReadString(handle);
         string aS[];
         int cnt = StringSplit(s, ';', aS);
         if(cnt <= 0)
            continue;
         //---   ПРОБЛЕМНОЕ МЕСТО ОТ
          tr = StringToInteger(aS[0]);
         //---    ПРОБЛЕМНОЕ МЕСТО ДО
         if(tr <= trans)
            continue;

GetLastError() Hata şu şekilde verilir: -Bozukdize türü parametresi

Print() ile aS[0] dizisinin çıktısını alırsanız, yazı tipi diğerlerinden farklı olur.


Eğer sadece tr parametresini yazdırırsanız, o zaman = 0

 
Mikhail Toptunov dize türü parametresi

Print() ile aS[0] dizisinin çıktısını alırsam, yazı tipi diğerlerinden farklı olur.


Eğer sadece tr parametresini yazdırırsanız, o zaman = 0

Dosyanın kendisine bakmayı denediniz mi?

ikili değerler yazıyorsunuz ve bir metin dizesi okuyorsunuz....

 
Maxim Kuznetsov #:

Dosyanın kendisine bakmayı denediniz mi?

ikili değerler yazıyor ve bir metin dizesi okuyorsunuz...

Bu şekilde içe aktardım

void OrderImport(MqlTradeRequest &aReq[], int magic, string symbol)
  {
   ArrayFree(aReq);
   long tr;
   static long trans = 0;
   if(trans == 0)
      trans = TimeGMT() - 1;
   string file = "OrderExchange" + (magic > 0 ? IntegerToString(magic) : "") + ".csv";
   int handle = FileOpen(file, FILE_READ | FILE_SHARE_READ | (Common ? FILE_COMMON : 0));

ihracat için bunun gibi

void OrderExport(MqlTradeRequest &request)
  {
   static long trans = 0;
   static long keepTrans = 0;
   string file = "OrderExchange" + (request.magic > 0 ? IntegerToString(request.magic) : "") + ".csv";
   int handle = FileOpen(file, FILE_READ | FILE_SHARE_READ | FILE_WRITE | FILE_SHARE_WRITE | (Common ? FILE_COMMON : 0), ';');

daha iyi hale geldi, ancak ilk parametre dizesinin (aS[0]) ilk içe aktarımı her zaman bir hatadır.


sonraki

tr - çevrilmiş dizeyi int olarak yansıtır(aS[0])

Dosya görüntülenir, her şey yerli yerindedir.


Ancak ilk satırdaki ilk parametre aS[0]'ı içe aktarmak onu int'e çevirmez.
 
Aleksandr Slavskii #:

Eğer bir diziyi başlatmazsanız, dizi genellikle saçma sapan şeyler içerir.

Teşekkürler, bununla daha önce karşılaştığımı bile hatırladım (0 kafamı karıştırdı). Dokümantasyonda belirtilmemiş olması üzücü, bu tür şeyleri kafamda tutmam gerekiyor.

 
Mikhail Toptunov #:

ithal

ihracat için bunun gibi

daha iyidir, ancak ilk parametre dizesinin (aS[0]) ilk içe aktarımı her zaman bir hatadır.


sonraki

tr - çevrilmiş dizeyi int olarak yansıtır(aS[0])

Dosya görüntülenir, her şey yerli yerindedir.


Ancak ilk satırdaki aS[0] ilk parametresini içe aktarmak onu int'e çevirmiyor.

Bu nasıl olabilir? - ilk aS[0] her zaman bozuktur (hata 5040)


 
Nazik insanlar, lütfen bana bir ipucu verin. Optimizasyonu çalıştırmak için bir görevim var, ancak optimizasyon için harici verileri kullanmam gerekiyor. Şunu yaptım: Verilerle bir dosya oluşturdum ve her geçişte dosyayı açıyorum, diziye yazıyorum ve kapatıyorum. Bu işlemi nasıl optimize edebilir ve hızlandırabilirim?
 
Mikhail Toptunov #:

Bu nasıl olabilir? - ilk aS[0] her zaman bozuktur (hata 5040)


Dışa ve İçe aktarmada UTF-8 kodlamasını ayarlayın (ya da en azından BOM olmadan aynı tek baytlık kodlamayı).

(dosyaya ikili biçimde bakın - ilk iki bayt muhtemelen BOM'dur, yani Unicode'dur) - FileSeek(0,SEEK_SET) ve ardından okuduğunuzda, bunları bir dizeye okursunuz ve dönüştürme başarısız olur.

 
Maxim Kuznetsov #:
BOM

İşe yaramış gibi görünüyor. Doğru bir kez hala yansıtmıyor, ancak daha sonra dosyayı sildiğinizde en azından hata durdu.


FILE_CSV | FILE_READ | FILE_SHARE_READ | FILE_ANSI | (Common ? FILE_COMMON : 0),CP_UTF8

Çok teşekkür ederim!

 

Günaydın ve iyi günler!

MQL5 Referans Kılavuzunda ResultRetcodeExternal açıklamasının eksikliğiyle karşılaştım. Arama motorunda şu yanıtı alıyorum: İsteğiniz için hiçbir şey bulunamadı. Dolambaçlı bir şekilde, bunun "Harici bir ticaret sistemi tarafından döndürülen hata kodu" gibi göründüğünü buldum. Bu hataların yazımı ve türleri, broker'a ve ticaret işlemlerinin çıktısının alındığı harici ticaret sistemine bağlıdır".

Soru: Doğru tanımı buldum mu bulmadım mı?

Ve aynı zamanda dokümantasyon geliştiricilerine ikinci soru: eğer öyleyse, neden kullanıcılara bu tanımın ne olduğunu herhangi bir yerde aramalarını sağlamak yerine hemen tam bilgi vermiyorsunuz?

Saygılarımla, Vladimir.

 
MrBrooklin #:
ResultRetcodeExternal

Böyle bir şey bulamazsınız. MQL5'te mevcut değildir.

Retcode_external alanının bulunduğu ve bu alanın bir açıklamasının olduğu MqlTradeResult vardır.

Документация по MQL5: Константы, перечисления и структуры / Структуры данных / Структура результата торгового запроса
Документация по MQL5: Константы, перечисления и структуры / Структуры данных / Структура результата торгового запроса
  • www.mql5.com
Структура результата торгового запроса - Структуры данных - Константы, перечисления и структуры - Справочник MQL5 - Справочник по языку алгоритмического/автоматического трейдинга для MetaTrader 5