Hatalar, hatalar, sorular - sayfa 2237

 
fxsaber :

Bazı karakterlerde zaman aşımı var, bazılarında yok. OrderSend tarafından hala kabul edilebilecek maksimum onay yaşı nasıl bulunur ([Fiyat yok] yok)?

Cehennem biliyor.

 
Stanislav Korotky :
Burada bu kombinasyondaki FILE_SHARE_WRITE bayrağı işe yarıyor gibi görünüyor, ancak başka bir soru ortaya çıkıyor: Böyle bir kaydın anlamı nedir? Mantıksal olarak, yazarken bölmeyi etkinleştirirseniz, bunu yazma bayrağına eklemeniz gerekir:

Ben de öyle denedim hata veriyor.

MetaTrader'ı açtım, eski örneğimi buldum, FILE_SHARE_WRITE ekledim (gerçi orada gerekmese de) - sonuç değişmedi... belki başka bir nedenle bende çalışmadı
 

Ticaret, otomatik ticaret sistemleri ve ticaret stratejilerinin test edilmesi hakkında forum

MetaTrader 5 İşlem Platformu Artık Vadeli İşlemler Alım Satım için AMP Vadeli İşlem Müşterilerinde Kullanılabilir

fxsaber , 2018.07.23 22:34

Alış/Soruşturma TickSize'ın katı olsa bile bir Piyasa Emri vermenin imkansız olduğu bir örnek

Burada Son fiyat, TickSize'ın katı değildir. Piyasa emirleriyle hiçbir ilgisi yok, ancak OrderCheck hala hata veriyor - piyasa emri vermenize izin vermiyor.

 
fxsaber :

Bazı karakterlerde zaman aşımı var, bazılarında yok. OrderSend tarafından hala kabul edilebilecek maksimum onay yaşı nasıl bulunur ([Fiyat yok] yok)?

16 saniye önce alınan son onayın OrderSend için uygun olmadığı görülür. Sonuçta muhtemelen bir bug.

 
A100 :
MetaTrader'ı açtım, eski örneğimi buldum, FILE_SHARE_WRITE ekledim (gerçi orada gerekmese de) - sonuç değişmedi... belki başka bir nedenle bende çalışmadı

bir seçenek olarak, dosyayı bellekte (MemMap) konumlandırın ve semafor aracılığıyla orada çalışın, işin sonunda ayrıca verileri semafor aracılığıyla dosyaya sıfırlayın

bu şekilde büyük bir hız kazancı sağlayacaktır

 
Konstantin :

bir seçenek olarak, dosyayı bellekte (MemMap) konumlandırın ve semafor aracılığıyla orada çalışın, işin sonunda ayrıca verileri semafor aracılığıyla dosyaya sıfırlayın

bu şekilde büyük bir hız kazancı sağlayacaktır

Gerçek şu ki, küçük bir konfigürasyon dosyam vardı ve her uzmanın çalışmaya başlamadan önce sadece bir kez okuması gerekiyordu - en basit işlem - yukarıdaki bağlantılardaki örneğe bakın ... ve siz - semaforlar diyorsunuz)
 
A100 :
Gerçek şu ki, küçük bir konfigürasyon dosyam vardı ve her uzmanın çalışmaya başlamadan önce sadece bir kez okuması gerekiyordu - en basit işlem - yukarıdaki bağlantılardaki örneğe bakın ... ve siz - semaforlar diyorsunuz)

Demek istediğim, bu sorunla ilgili birkaç sayfa yazı var ve sakalla ilgili sorun göz önüne alındığında, geliştiriciler görünüşe göre bunu düzeltemiyor veya düzeltmek istemiyorlar. muhtemelen başka öncelikler vardır ve eğer öyleyse, o zaman seçeneklerle gelmelisin, onlardan birini önerdim, beğenmediysen, winapi kullan, sorun ne)) ama aynı şeyi onsuz yazmaktan daha iyi bu arada, herhangi bir şey yaparak, aynı semaforu kullanabilirsiniz ve fiziksel bir dosyadan okuyarak, bir okuma hatası oluşturarak aynı semafor sinyali meşgul ve beklemeniz gerekiyor !!!

 
Stanislav Korotky :

Burada, önce = true yazarak başlatılan bu basit komut dosyasında ve ardından = false yazan başka bir grafikte bir hata alıyorum.


 #property script_show_inputs

input bool writing = false ;

int OnStart ()
{
   int handle = FileOpen ( "xyz.foo" , FILE_READ | FILE_BIN | FILE_SHARE_READ |(writing? FILE_WRITE : 0 ));
   if (handle == INVALID_HANDLE )
  {
     Print ( "FileOpen failed: " , GetLastError ());
     return INIT_FAILED ;
  }
  
   if (writing) FileWriteInteger (handle, 0 );
  
   Print ( "handle=" , handle);
  
   while (! IsStopped ())
  {
     Sleep ( 1000 );
  }

   Print ( "Closing" );
   FileClose (handle);

   return 0 ;
}

Okuma için açıcı FILE_SHARE_WRITE bayrağından yoksundur (yazmaya izin verir), çünkü bir yazar var.

Bu bir sistem sınırlamasıdır (WinAPI).

Kodunuzun altında çalışacağı doğru bayraklar şunlardır:

 int handle = FileOpen ( "xyz.foo" , FILE_READ | FILE_BIN | FILE_SHARE_READ |(writing? FILE_WRITE : FILE_SHARE_WRITE ));
 
Ilyas :

Kodunuzun altında çalışacağı doğru bayraklar şunlardır:

Lütfen FileLoad'u düzeltin

Ticaret, otomatik ticaret sistemleri ve ticaret stratejilerinin test edilmesi hakkında forum

Hatalar, hatalar, sorular

fxsaber , 2018.07.10 19:26

Dosya yüklemede hata. İki yerel Aracı, FILE_COMMON bayrağıyla FileLoad aracılığıyla verileri okumaya çalışırsa, Aracılardan biri bozulur.

Uygun bayrakları FileOpen'da ayarlayabilirsiniz, ancak FileLoad'da ayarlayamazsınız. Bu nedenle, başka bir FileLoad okursa lütfen dosyaya FileLoad aracılığıyla erişime izin verin.

 
TheXpert :

niye ya? )

Çünkü bayrak listesinde sıfır yok

tanımlayıcı

Anlam

Tanım

FILE_READ

1

Dosya okumak için açılır. Bayrak, dosyaları açarken kullanılır ( FileOpen() ). Bir dosyayı açarken, FILE_WRITE bayrağı ve/veya FILE_READ bayrağı belirtilmelidir.

FILE_WRITE

2

Dosya yazmak için açılır. Bayrak, dosyaları açarken kullanılır ( FileOpen() ). Bir dosyayı açarken, FILE_WRITE bayrağı ve/veya FILE_READ bayrağı belirtilmelidir.

FILE_BIN

4

İkili okuma-yazma modu (dizeden dizeye dönüşüm yok). Dosyaları açarken kullanılan bayrak ( FileOpen() )

FILE_CSV

sekiz

csv dosyası (kaydedilen tüm öğeler, uygun türde, unicode veya ansi'de dizelere dönüştürülür ve bir sınırlayıcı ile ayrılır). Dosyaları açarken kullanılan bayrak ( FileOpen() )

FILE_TXT

on altı

Basit bir metin dosyası (aynı csv, ancak sınırlayıcı dikkate alınmaz). Dosyaları açarken kullanılan bayrak ( FileOpen() )

FILE_ANSI

32

ANSI türü dizeler (tek baytlık karakterler). Dosyaları açarken kullanılan bayrak ( FileOpen() )

FILE_UNICODE

64

UNICODE türündeki dizeler (çift baytlık karakterler). Dosyaları açarken kullanılan bayrak ( FileOpen() )

FILE_SHARE_READ

128

Birkaç programdan okumak için paylaşılan erişim. Bayrak, dosyaları açarken kullanılır ( FileOpen() ), ancak bir dosyayı açarken FILE_WRITE ve/veya FILE_READ bayrağını belirtme ihtiyacının yerini almaz

FILE_SHARE_WRITE

256

Birden çok program tarafından paylaşılan yazma erişimi. Bayrak, dosyaları açarken kullanılır ( FileOpen() ), ancak bir dosyayı açarken FILE_WRITE ve/veya FILE_READ bayrağını belirtme ihtiyacının yerini almaz

FILE_REWRITE

512

FileCopy() ve FileMove() işlevleriyle bir dosyanın üzerine yazma yeteneği. Dosya var olmalı veya yazılmak üzere açılmalıdır. Aksi takdirde dosya açılmayacaktır.

FILE_COMMON

4096

Tüm istemci terminalleri \Terminal\Common\Files'ın ortak klasöründeki dosya konumu. Bayrak, dosyaları açarken ( FileOpen() ), dosyaları kopyalarken ( FileCopy() , FileMove() ) ve dosyaların varlığını kontrol ederken ( FileIsExist() ) kullanılır.


Ve geliştiriciler tüm sövelerini düzeltirse, çoğu bundan hoşlanmayacaktır. Kodun yarısından çok fazlası çalışmayı durduracak.

Документация по MQL5: Константы, перечисления и структуры / Константы ввода/вывода / Флаги открытия файлов
Документация по MQL5: Константы, перечисления и структуры / Константы ввода/вывода / Флаги открытия файлов
  • www.mql5.com
Файл открывается для чтения. Флаг используется при открытии файлов (FileOpen()). При открытии файла обязательно должен быть указан флаг FILE_WRITE и/или флаг FILE_READ Файл открывается для записи. Флаг используется при открытии файлов (FileOpen()). При открытии файла обязательно должен быть указан флаг FILE_WRITE и/или флаг FILE_READ Файл...