Hatalar, hatalar, sorular - sayfa 311

 

Yalnızca x64 sistemlerinde mümkün olan yeni derleme hatası (özellikle Windows 7, core i7 işlemcisi altında). Önceki yapıda böyle değildi. Bu hata aşağıdaki gibidir.

Expert Advisor'ın kaynak kodu çok fazla değiştirilmediyse (örneğin, sadece bazı değişkenlerin değeri değiştirilirse) ve ardından yeniden derlenirse, test sonucu aynı kalır.

Hatta şu kadar ileri gitti:

void OnTick() işlevinde ilk satır dönüşünü ekliyorum; :) Derliyorum, çalıştırıyorum ve sonuç aynı!!!! Her ne kadar genel olarak çizgi olmalıdır.

Bu durumdan çıkış yolu ya *.ex5 dosyasını silip yeniden derlemek ya da derleyicinin küfretmesi için saçma sapan bir dizi yazmak ve sonra derlemekti.

Yarın bunun x32 bit işletim sisteminde olup olmadığını kontrol edeceğim.

Ayrıca x64'te grafikler çok uzun bir süre açık olan yeni pencerelerde ve bunların da çok uzun bir süre silindiğini fark ettim!

Ayrıca, terminal 5 saniye boyunca "yanıt vermiyor" yazısıyla donuyor.

 
bobsley :

Yalnızca x64 sistemlerinde mümkün olan yeni derleme hatası (özellikle Windows 7, core i7 işlemcisi altında). Önceki yapıda böyle değildi. Bu hata aşağıdaki gibidir.

Expert Advisor'ın kaynak kodu çok fazla değiştirilmediyse (örneğin, sadece bazı değişkenlerin değeri değiştirilirse) ve ardından yeniden derlenirse, test sonucu aynı kalır.

Hatta şu kadar ileri gitti:

void OnTick() işlevinde ilk satır dönüşünü ekliyorum; :) Derliyorum, çalıştırıyorum ve sonuç aynı!!!! Her ne kadar genel olarak çizgi olmalıdır.

Bu durumdan çıkış yolu ya *.ex5 dosyasını silip yeniden derlemek ya da derleyicinin küfretmesi için saçma sapan bir dizi yazmak ve sonra derlemekti.

Yarın bunun x32 bit işletim sisteminde olup olmadığını kontrol edeceğim.

Ayrıca x64'te grafikler çok uzun bir süre açık olan yeni pencerelerde ve bunların da çok uzun bir süre silindiğini fark ettim!

Ayrıca, terminal 5 saniye boyunca "yanıt vermiyor" yazısıyla donuyor.

bu klasörü kontrol edin (Username\AppData\Roaming\MetaQuotes\Terminal\72CEBD0F7A5518983A10360D0E46A5B6\MQL5) EA'nız orada derlenmiş olabilir
 
bobsley :

Yalnızca x64 sistemlerinde mümkün olan yeni derleme hatası (özellikle Windows 7, core i7 işlemcisi altında). Önceki yapıda böyle değildi. Bu hata aşağıdaki gibidir.

Expert Advisor'ın kaynak kodu çok fazla değiştirilmediyse (örneğin, sadece bazı değişkenlerin değeri değiştirilirse) ve ardından yeniden derlenirse, test sonucu aynı kalır.

Hatta şu kadar ileri gitti:

void OnTick() işlevinde ilk satır dönüşünü ekliyorum; :) Derliyorum, çalıştırıyorum ve sonuç aynı!!!! Her ne kadar genel olarak çizgi olmalıdır.

Bu durumdan çıkış yolu ya *.ex5 dosyasını silip yeniden derlemek ya da derleyicinin küfretmesi için saçma sapan bir dizi yazmak ve sonra derlemekti.

Yarın bunun x32 bit işletim sisteminde olup olmadığını kontrol edeceğim.

...

Bu hatayı özellikle yakalamadım, ancak bit 32'de benzer bir davranış kaydettim. Noktalı virgül eklememeniz gibi bitmemiş bir ifadeyi derlerseniz ortadan kaldırılan hatadır.
 
Im_hungry :
Elbette bir geçmişi vardır, ancak tüm solucanların yayılma geçmişi yoktur!

1. Her şey hakkında konuşmayacağız, sadece bununla ilgili, geliştiricilerin sunucusu - access.metatrader5.com:443 (şu anda birinin MT5'te daha iyi bir geçmişi olduğunu görmedim).

Senaryomu, hafifçe söylemek gerekirse, "tamamlanmadı", ama yine de beceriksizce alıyoruz. TF "1 hafta" ile başlatıyoruz ve çubuk sayısı 930.

Aşağıdaki sonucu alıyoruz

 2011.02 . 22 11 : 38 : 50      -   1 : 1993.05 . 09 00 : 00 open = 1.2368 , high = 1.2368 , low = 1.2084 , close = 1.219 , volume = 252 , spread = 50
2011.02 . 22 11 : 38 : 50      -   0 : 1993.05 . 02 00 : 00 open = 1.2334 , high = 1.2466 , low = 1.2267 , close = 1.2332 , volume = 0 , spread = 0
2011.02 . 22 11 : 38 : 50      -   Скопировано баров: 930

Görünüşe göre 1993.05.02'den beri haftalık barlarda spreadler var ve barların tarihi daha da derin. Her ne kadar Euro 1999'dan beri resmi olarak var ise veriler bu kadar derine nereden geliyor (Allah ondan razı olsun, bu ayrı bir soru).

2. Şimdi günlük grafiklerdeki spread ile ilgili bilgilerin derinliğini netleştirmeye çalışalım.

Haftada 5 işlem günü olduğu gerçeğini temel alalım ve günlük çubuklarda spread veri geçmişinin başlangıcını bulmaya çalışalım (size yaklaşık 4630 çubuk sayısını hemen söyleyeceğim).

 2011.02 . 22 11 : 56 : 06      -   2 : 1993.05 . 13 00 : 00 open = 1.2148 , high = 1.2158 , low = 1.2084 , close = 1.2099 , volume = 100 , spread = 50
2011.02 . 22 11 : 56 : 06      -   1 : 1993.05 . 12 00 : 00 open = 1.2138 , high = 1.2171 , low = 1.2105 , close = 1.2152 , volume = 0 , spread = 0
2011.02 . 22 11 : 56 : 06      -   0 : 1993.05 . 11 00 : 00 open = 1.2167 , high = 1.2202 , low = 1.2121 , close = 1.2141 , volume = 0 , spread = 0
2011.02 . 22 11 : 56 : 06      -   Скопировано баров: 4630

Böylece günlük barlarda yayılma tarihinin 1993.05.13 tarihinden itibaren başladığı açıktır.

not

Analoji ile daha fazla anladığını düşünüyorum (en az TF'de bulunan en eski tarih, anladığım kadarıyla aradığımız yeri uyandırıyor) ...

Sadece spreadleri belirteceğim:

H12 1993.05.13'ten beri mevcuttur (ancak oradaki barlar, anladığım kadarıyla günlük) - kabaca 7790 bar derinliğinde

H6, 1993.05.13'ten itibaren mevcuttur (günlük ölçüler) - kabaca 14100 bar derinliğinde

 
sergey1294 :
bu klasörü kontrol edin (Username\AppData\Roaming\MetaQuotes\Terminal\72CEBD0F7A5518983A10360D0E46A5B6\MQL5) EA'nız orada derlenmiş olabilir

Kontrol ettim, elbette, orada her şey boş. Ve neden ben, uzmanlarım ..\Experts\Examples\

orada ve derlemeleri görünür.

Bugün işyerinde x32 işletim sistemini kontrol ettim. Normları güncellemeden önce terminali ve hemen aynı aksaklığı güncelledim!

 
 double op, sp;
     
     if ( ObjectGetDouble ( 0,"Open", OBJPROP_PRICE,0,op) &&  ObjectGetDouble ( 0,"Stop", OBJPROP_PRICE,0,sp ) ){
     
        if ( is40x_b0[0] > 0 && Tick.bid > op && Tick.bid < sp ){ <--------------- Дает предупреждение possible use of uninitialized variable 'sp'
         Sell(); 
        }
        
        if ( is40x_b1[0] > 0 && Tick.ask < op && Tick.ask > sp ){
         Buy(); 
        }

     }
 
Academic :


olmalı
 double op=0, sp=0;
 
sergey1294 :
olmalı
Niye ya ?
 
Academic :
Niye ya ?

aslında, burada yanlış bir şey yok.

Değişkenler sıfıra başlatılır.

buradan kontrol edebilirsiniz.

int i;

printf ("i=%d",i);

 
bobsley :

aslında, burada yanlış bir şey yok.

Değişkenler sıfıra başlatılır.

buradan kontrol edebilirsiniz.

int i;

printf("i=%d",i);

ObjectGetDouble işlevine bir başvuru iletildiğinden ve if ifadesinde her iki çağrı tarafından döndürülenlerin doğruluğu kontrol edildiğinden bu uyarı verilmemelidir ve bu nedenle yalnızca her iki işlev de doğru döndürülürse, bu değişkenlerle çalışma gerçekleştirilir, bu da bu değişkenlerin her ikisinin de doğru anlama ayarlanamayacağı anlamına gelir.

Документация по MQL5: Графические объекты / ObjectGetDouble
Документация по MQL5: Графические объекты / ObjectGetDouble
  • www.mql5.com
Графические объекты / ObjectGetDouble - Документация по MQL5