Hatalar, hatalar, sorular - sayfa 320

 
stringo :
Kod temelde farklı

Vay... Şok oldum...

Karşılaştırma için basit bir x32 ve x64 kodu parçası gönderebilir misiniz? Eh, tabiri caizse merakınızı gidermek için...

 
KffAlex :


Sayın! Bu sorunla 3. kez uğraşıyorum. Windows7 x64 altında harici bir kitaplık oluşturmak bazı mucizelere yol açar:


Gecikme için özür dilerim. sana özelden cevap verdim

Lütfen kaynakları ekleyin. Mümkünse, her şeyi servis masasına başvurarak ayarlayın . Bu, bu tür gecikmelerin olasılığını en aza indirecektir.

Общайтесь с разработчиками через Сервисдеск!
Общайтесь с разработчиками через Сервисдеск!
  • www.mql5.com
Ваше сообщение сразу станет доступно нашим отделам тестирования, технической поддержки и разработчикам торговой платформы.
 
AlexSTAL :

Vay... Şok oldum...

Karşılaştırma için basit bir x32 ve x64 kodu parçası gönderebilir misiniz? Eh, tabiri caizse merakınızı gidermek için...

Kodu önceden veremem - elimde karakteristik bir kod yok.

aşağıdaki farklılıklar.

  • 64 - 32 bit kaydeder. Buna göre, 64-bit aritmetik bir komuta sığar (iki 64-bit tamsayının 32-bit bölünmesinde 40 assembler komutunda yapılır)
  • Daha fazla 64 bit kayıt var. Buna göre registerlara adresleme farklıdır.
  • Çağrı kuralları farklıdır. Örneğin 64 bitte işlevin ilk 4 parametresi kayıtlara geçirilir.
 
MT5'te optimizasyon süresi eklemek gerekli olacaktır. MT4'te öyleydi ve burada doğru düzeltme olacak)
 
Renat :

Testi durdurduktan sonra, yerel aracılar yeni görevleri bekleyen yükseltilmiş önbelleklerle 5 dakika daha bellekte kalır. Onları 5 dakika içinde kimse yüklemezse, tüm kaynakların serbest bırakılmasıyla otomatik olarak kaldırılırlar.

Bu bekleme mekanizması, hazır/yükseltilmiş altyapı sayesinde ajanların tekrarlanan görevlere yanıt verme hızlarını artırmayı mümkün kıldı.

not: yerel ajanlardan bahsediyoruz. hizmet olarak çalışan uzak aracılar kaldırılmaz, ancak belirli bir boşta kalma süresinden sonra kaynakları da serbest bırakırlar.

404 yapıyı kullanıyorum. Uzak temsilcilerle ilgili sorunlardan bahsediyorum. 10 saatlik boşta kalma süresinden sonra bile bellek serbest bırakılmaz.

Birkaç sorun daha:

1. hemen hemen her zaman bir stratejiyi test ederken, her işlemcideki ilk geçiş hızlı bir şekilde biter ve sıfır sonuç verir.

Ve durup tekrar başlarsanız, bu sıfırlar yeniden hesaplanmaz. Çok sayıda işlemci üzerinde çalışıyorum ve 40-50 sonucun sıfır olması ve bu verileri yeniden hesaplamanın bir yolu olmaması gerçeği müdahale ediyor.

2. Bazen işlemcilerden biri arızalı duruma geçer ve aynı zamanda saniyede birkaç kez sıfır sonuç döndürmeye başlar. Ancak durursanız, bu veriler yeniden hesaplanır (tablodaki turuncu alan).

3. Uzak aracıları 16 işlemcide çalıştırırken, İnternet 1 mega yüklemesi geçmişin bu kadar hızlı yüklenmesine izin vermiyor ve açıkçası zaman aşımı nedeniyle tüm işlemciler başarısız oluyor. Bir işlemciyi açarsanız, genellikle çalışır. 16 işlemcili bir sistemde geçmişi ilk işlemciye indirmek ve ardından ondan diğerlerine kopyalamak mümkün müdür? Peki, ya da sadece geçmişi yüklerken zaman aşımını artırın.

 
a483483 :

404 yapıyı kullanıyorum. Uzak temsilcilerle ilgili sorunlardan bahsediyorum. 10 saatlik boşta kalma süresinden sonra bile bellek serbest bırakılmaz.

Birkaç sorun daha:

1. hemen hemen her zaman bir stratejiyi test ederken, her işlemcideki ilk geçiş hızlı bir şekilde biter ve sıfır sonuç verir.

Ve durup tekrar başlarsanız, bu sıfırlar yeniden hesaplanmaz. Çok sayıda işlemci üzerinde çalışıyorum ve 40-50 sonucun sıfır olması ve bu verileri yeniden hesaplamanın bir yolu olmaması gerçeği müdahale ediyor.

2. Bazen işlemcilerden biri arızalı duruma geçer ve aynı zamanda saniyede birkaç kez sıfır sonuç döndürmeye başlar. Ancak durursanız, bu veriler yeniden hesaplanır (tablodaki turuncu alan).

3. Uzak aracıları 16 işlemcide çalıştırırken, İnternet 1 mega yüklemesi geçmişin bu kadar hızlı yüklenmesine izin vermiyor ve açıkçası zaman aşımı nedeniyle tüm işlemciler başarısız oluyor. Bir işlemciyi açarsanız, genellikle çalışır. 16 işlemcili bir sistemde geçmişi ilk işlemciye indirmek ve ardından ondan diğerlerine kopyalamak mümkün müdür? Peki, ya da sadece geçmişi yüklerken zaman aşımını artırın.


Ajan günlüklerine, ayarlara, sembole, sunucuya ihtiyacımız var.

EX5 uzmanı olabilirsiniz, ancak daha iyisi elbette kaynaktır.

Tercihen bir servis masasında.

 
KffAlex :
İşlevler programın gövdesine aktarılırsa bu sorun yoktur, ancak Windows XP'de böyle bir sorun yoktur !!!
Görünüşe göre bitlik (64/32), Windows XP'de 32 bit altında çalışıyorsunuz, bu nedenle hata yeniden üretilmiyor.
Lütfen sorunlu EX5 dosyalarının eklendiği bir hizmet masası bileti oluşturun. ( hizmet masanızın bağlantısı )
 

iki sayıyı karşılaştırmanın nasıl gelmeyeceğini söyle, şimdiden 2 gün oldu

(bugünün tarihi) > (dünün tarihi)

           datetime bark[ 1 ];
           CopyTime (Symbol1, NULL ,0, 1 ,bark);
           if (bark[ 0 ]<=order)

sipariş - (dünün tarihi)

Yoksa bu mümkün değil mi?

 

Bunu yazdı:

       for ( uint k= 0 ; k<66; k++)
         {
           datetime order=( datetime ) HistoryDealGetInteger (ticket, DEAL_TIME );
           datetime bark[ 1 ];
           CopyTime (Symbol1, NULL ,k, 1 ,bark);
           if (bark[ 0 ]<=order)
            {

test cihazının kapattığı bir şey ve bu kadar

 
alexluek :

Bunu yazdı:

test cihazının kapattığı bir şey ve bu kadar

Gelecekteki zaman geçmişten daha uzun, kod parçanız gösterge değil, if bloğunda ne yaptığınız ve ondan ne istediğiniz belli değil...

Burada, bence, zamanları karşılaştırma hakkında ayrıntılı bilgi var :)

 //+------------------------------------------------------------------+
//|                                                         test.mq5 |
//|                                                           mrProF |
//|                                                          http:// |
//+------------------------------------------------------------------+
#property copyright "mrProF"
#property link       "http://"
#property version   "1.00"
//+------------------------------------------------------------------+
//| Script program start function                                    |
//+------------------------------------------------------------------+
void OnStart ()
  {
//---
   datetime past= D'2010.12.1' ; //Прошлое
   datetime future= D'2010.12.02' ; //Будущее

   if (past<future)
     {
       Print (past, " раньше чем: " ,future);
     }

   datetime buffTime[ 1 ]; //Буфер для времени последнего бара
   CopyTime ( _Symbol , _Period , 0 , 1 ,buffTime); //Копируем время последнего бара

   if (buffTime[ 0 ]>past)
     {
       Print (past, " раньше чем: " ,buffTime[ 0 ]);
     }

  }
//+------------------------------------------------------------------+