Hatalar, hatalar, sorular - sayfa 1628

 
HistoryOrderGetInteger(OrderTicket, ORDER_TIME_DONE_MSC ) - test cihazında sıfır döndürür!
 

Uzman tarafından dosya açılırken hata oluştu. Ve eğer örneğin

1. "İlgili olmayan bazı kodları" kaldırın (aşağıya bakın)

2. veya ::Sleep(1000) öğesini kaldırın

o zaman hata oluşmaz

 //Test.mq5
#import "Test001.ex5"
         string f( string file );
#import
string __Period() { return StringSubstr ( EnumToString (( ENUM_TIMEFRAMES ) Period ()), 7 ); }
void OnInit ()
{
         Print ( Symbol (), "," , __Period(), ", результат=" , f( "test.txt" ));
}

sıralama:

1. Yeni bir profil oluşturun (örneğin "Test")

2. Test.ex5 uzmanını her iki çizelgeye ekleyerek iki yeni çizelge açın (şekle bakın)

4. Mevcut başka bir profili seçin

5. "Test" profilini seçin

sonuç:

Test001.mq5 şöyle görünürken:

 //Test001.mq5
#property library
//---
//здесь некий код не имеющий отношения к делу
//---
string f( string file ) export
{
        :: ResetLastError ();
         int hFile = :: FileOpen ( file, FILE_READ | FILE_SHARE_READ | FILE_TXT | FILE_ANSI | FILE_COMMON );
         if ( hFile == INVALID_HANDLE )
                 return :: StringFormat ( "Error(%d): Не был открыт файл: %s" , :: GetLastError (), file );
        :: Sleep ( 1000 );
        :: FileClose ( hFile );
         return "OK" ;
}
Dosyalar:
Test001.ex5  16 kb
 

Test.txt dosyasının kendisi mesaja eklenmemiş, ancak şuna benziyor

Ek bilgi: FILE_COMMON anlamında açılan dosyanın konumu - hatayı etkilemez

 
Andrey Barinov :

Bu bir kod optimizasyonudur.

Metaeditor.ini alanına [Uzmanlar] OPTIMIZE=0 yazarsanız, derleme hızı 4-ke'deki ile aynı olacaktır. Derlenmesi 20 saniye süren bazı projelerim var ve bazıları sonsuz bir optimizasyon döngüsüne dahil :)

Vay, teşekkürler dostum! Daha önce neredeydin! ) Ve burada acı çekiyoruz ... İşin garibi, geliştiricilerin bu seçenek hakkında sessiz kalması.
 
Alexey Navoykov :
Vay, teşekkürler dostum! Daha önce neredeydin! ) Ve burada acı çekiyoruz ... İşin garibi, geliştiricilerin bu seçenek hakkında sessiz kalması.

Sessiz değillerdi. Forum, bu seçeneğin az önce açıklandığı 18 sayfalık bir konuya sahiptir .

Bu arada, hata ayıklama için derleme yaparken optimizasyon etkinleştirilmez.

 
Andrey Barinov :

Bu bir kod optimizasyonudur.

Metaeditor.ini alanına [Uzmanlar] OPTIMIZE=0 yazarsanız, derleme hızı 4-ke'deki ile aynı olacaktır. Derlenmesi 20 saniye süren bazı projelerim var ve bazıları sonsuz bir optimizasyon döngüsüne dahil :)

Aynen öyle! Aynı zamanda, kendim bir kez değeri 1 olarak ayarladım ve bunu unuttum. ))

Alexey Navoykov :
... Ve burada acı çekiyoruz ... En garip şey, geliştiricilerin bu seçenek hakkında sessiz kalmasıydı.

Konu ayrıntılı olarak tartışıldı ve tartışıldı: Yeni MQL5 derleyicisini x64 platformları için test etmek - hesaplamaları 2'den 10'a hızlandırmak! >>>

Bu sadece unuttum. )

İlk başta bile bu optimizasyon benim için işe yaramadı. Yani, bazı durumlarda derleme bir hata ile sona erdi . Ama sonra nedenini bulmayı başardım . Sonra düzeltildi ve terminallerden birinde parametreyi 1'e ayarladım ve unuttum. Ve dün oturuyordum ve bir MT5 editöründe derlemenin neden başka bir MT5 editöründen çok daha hızlı olduğunu düşünüyordum.

//---

Şimdi, 0 olarak ayarlanırsa derleme ~25 kat daha hızlıdır.

 0 error(s), 0 warning(s), compile time: 668 msec                 1        1
 
Anatoli Kazharski :

MetaTrader 5'teki projelerimden en karmaşık olanı elbette derlemesi de uzun sürüyor. Hatta 11 saniyeye kadar çıkıyor. Tamamen aynı sürümler, ancak MetaTrader 4'te 25 kata kadar daha hızlı.

MT5'te derleyici daha gelişmiştir, kodu MT5'ten 10 kata kadar daha hızlı çalışacak şekilde optimize eder. Bunu daha önce yazdık ve açıkladık.

MQL5 derleyicisi, uyumluluk için kodun iki kopyasını oluşturmaya zorlanır - eski 32 bit sürüm (tam optimizasyon olmadan) ve 64 bit için en optimize sürüm için. MQL5'in tam gücü yalnızca 64 bitte ortaya çıkar.

 
Renat Fatkhullin :

MT5'te derleyici daha gelişmiştir, kodu MT5'ten 10 kata kadar daha hızlı çalışacak şekilde optimize eder.

Ek olarak, derleyici uyumluluk için kodun iki kopyasını oluşturmaya zorlanır - eski 32 bit sürüm (tam optimizasyon olmadan) ve 64 bit için en optimize sürüm için. MQL5'in tam gücü yalnızca 64 bitte ortaya çıkar.

Teşekkür ederim. Bütün bunların tartışıldığı dalda şimdiden hafızamı tazeledim.

Geliştirme sırasında, değeri 0 olarak ayarlayacağım, çünkü çok sık derlemeniz ve 10 saniye beklemeniz sıkıcıdır. Ve son derlemeden önceki bitmiş ürün için 1 koyacağım.

 
Renat Fatkhullin :

MT5'te derleyici daha gelişmiştir, kodu MT5'ten 10 kata kadar daha hızlı çalışacak şekilde optimize eder. Bunu daha önce yazdık ve açıkladık.

MQL5 derleyicisi, uyumluluk için kodun iki kopyasını oluşturmaya zorlanır - eski 32 bit sürüm (tam optimizasyon olmadan) ve 64 bit için en optimize sürüm için. MQL5'in tam gücü yalnızca 64 bitte ortaya çıkar.

OPTIMIZE parametresini MetaEditor çalışırken değiştirirseniz, ayarları kabul etmek için yeniden yüklemeniz gerekiyor mu, değil mi?
 
coderex :
OPTIMIZE parametresini MetaEditor çalışırken değiştirirseniz, ayarları kabul etmek için yeniden yüklemeniz gerekiyor mu, değil mi?
Kendiniz denemek daha hızlıdır. Sadece burada test edildi. Düzenleyiciyi yeniden başlatmak gerekli değildir.