Hatalar, hatalar, sorular - sayfa 708

 

Merhaba! OpenCL! Hata ayıklama modunda kod harika çalışıyor... ancak test cihazında CLContextCreate... Service Desk çağrılırken 5100 hatası veriyor.

Terminal CPU: GenuineIntel Intel(R) Core(TM) i3-2310M CPU @ 2.10GHz with OpenCL 1.1 (4 units, 2095 MHz, 5990 Mb, version 2.0)

Terminal GPU: Advanced Micro Devices, Inc. OpenCL 1.1 ile Türkler (6 birim, 725 MHz, 1024 Mb, sürüm CAL 1.4.1703 (VM))

619 Windows 7 SP1 64-x'i oluşturun

...

Başka bir vidyukha ile bir domuz üzerinde tekrarladım - yardımcı olmadı ...

Dosyalar:
 
MigVRN :

Hata ayıklama modunda kod harika çalışıyor... ancak test cihazında CLContextCreate... Service Desk çağrılırken 5100 hatası veriyor.

Bu bir hata değil. OpenCL test cihazında çalışmadığını düşünüyorum - destek devre dışı. Geçici olarak devre dışı veya kalıcı olarak, soru açıktır.
 
MigVRN :

Merhaba! OpenCL! Hata ayıklama modunda kod harika çalışıyor... ancak test cihazında CLContextCreate... Service Desk çağrılırken 5100 hatası veriyor.

...

Başka bir vidyukha ile bir domuz üzerinde tekrarladım - yardımcı olmadı ...

Test cihazında OpenCL'nin etkinleştirildiğini duyurduklarını hatırlamıyorum, belki bir şeyi kaçırdım.

Terminalde işlevsellik hata ayıklanırken, test cihazına hazır olur olmaz destek bağlanacaktır.

Sonuçta uzaktan testi desteklemek gerekiyor.

 
MetaDriver :
Bu bir hata değil. OpenCL test cihazının çalışmadığını düşünüyorum - destek devre dışı. Geçici olarak devre dışı veya kalıcı olarak, soru açıktır.
Ukrayna :

Test cihazında OpenCL'nin etkinleştirildiğini duyurduklarını hatırlamıyorum, belki bir şeyi kaçırdım.

Terminalde işlevsellik hata ayıklanırken, test cihazına hazır olur olmaz destek bağlanacaktır.

Sonuçta uzaktan testi desteklemek gerekiyor.

Teşekkür ederim! :( Sabırsızlıkla bekleyeceğim... Gerçekten şimdiden denemek istiyorum.
 

Danışman yazmaya karar verdim. Sıfırdan bir şeyler yazmaya başladığımda, her aşamada hata olup olmadığını ve çalışabilirlik kodunu her zaman kontrol ederim. Şu an için sadece Expert Advisor'ın hazırlanmasının "yeni bar" etkinliği üzerinde çalışmak gibi bir şeyi çözmesi hoşuma gitmedi. Uzun ve sıkıcı bir zamanın nedenini aradım - yalnızca kodda yalnızca satırlar kaldığında en alta ulaştım

//+------------------------------------------- --------------------+
//| Uzman onay işlevi |
//+------------------------------------------- --------------------+
geçersiz OnTick()
{
Alert("Yeni onay",TimeCurrent());
}
//+------------------------------------------- --------------------+

Sonuç olarak, testçinin raporuna göre, %100 simülasyon kalitesi elde ettim, simüle edilen kene sayısı 38242987 idi ve test cihazının günlüğünde (bütün günler için) vahşi boşluklar vardı, sadece 13259 tik saydım...
Nedeni ne olabilir?

Dosyalar:
20120408.log  2074 kb
 

Renat, Slava, eğer (kolayca) #include'a benzer şekilde çalışan, ancak aynı örneğin yeniden derlenmesine izin veren özel bir önişlemci yönergesi yaparsanız, parametreleştirmeye yaklaşabilirsiniz. Misal:

 #define ArrayType double
#include "ISTemplate.mqh"
#define ArrayType float
#include "ISTemplate.mqh"
#define ArrayType int
#include "ISTemplate.mqh"
#define ArrayType uint
#include "ISTemplate.mqh"
#define ArrayType long
#include "ISTemplate.mqh"
#define ArrayType ulong
#include "ISTemplate.mqh"
#define ArrayType short
#include "ISTemplate.mqh"
#define ArrayType ushort
#include "ISTemplate.mqh"
#define ArrayType char
#include "ISTemplate.mqh"
#define ArrayType uchar
#include "ISTemplate.mqh"
#define ArrayType string
#include "ISTemplate.mqh"

Şimdi derleniyor ama çalışmıyor (daha doğrusu sadece ilk #include için çalışıyor). Özel bir yönerge (#reinclude, #Include veya #template) sorunu çözebilir. Bu arada, standart tipler için fonksiyon aşırı yüklemeleri yazarken de size çok zaman kazandıracak. Ve standart kitaplık kompakt ve güzel hale gelebilir. Ve orada zaten "normal" parametreli sınıflardan çok uzak değil - sadece dile yeni bir sözdizimi ekleyin ve gizli #reinclude'u otomatikleştirin.

// bu içermenin burada kendi ön işlemcim tarafından genişletildiği çalışma örneği .

Dosyalar:
ISort.mqh  2 kb
 

Ayrıca sınıf parametreleştirmenin bir çeşidi.

#define _MyContainer(name,type,size) class name { public : type array[size]; virtual type At( int i){ return array[i];}}
#define  ASize 8
//+------------------------------------------------------------------+
//| Script program start function                                    |
//+------------------------------------------------------------------+
void OnStart()
  {
   _MyContainer(MyClass, int ,ASize);
   MyClass MyVar;
   Print( sizeof (MyVar)); 
   for ( int i= 0 ;i<ASize;i++)
     {
      MyVar.array[i]=i*i;
     }
   for ( int i= 0 ;i<ASize;i++)
     {
      Print(MyVar.At(i));
     }
  }

İşler. Miras tutturmak bile mümkündür. ;)

Ancak bu seçeneği aşağı yukarı tolere edilebilir bir şekilde kullanmak için, makrolarda en azından bir satır sonu yapmanız gerekir.

// Evet ve böyle bir özellik (alışkanlık dışı mı?) Oldukça vahşi görünüyor. :))

Dosyalar:
DefTest.mq5  2 kb
 
MetaDriver :

Renat, Slava, eğer (kolayca) #include'a benzer şekilde çalışan, ancak aynı örneğin yeniden derlenmesine izin veren özel bir önişlemci yönergesi yaparsanız, parametreleştirmeye yaklaşabilirsiniz. Misal:

Fikir açık, ancak şablonları hemen uygulamak daha iyidir.

Bu konuya biraz sonra döneceğiz.

 
Renat :

Fikir açık, ancak şablonları hemen uygulamak daha iyidir.

Bu konuya biraz sonra döneceğiz.

Yaşasın!!! Teşekkür ederim.
 

İşte test cihazında patlayan bir rekor.Tabloya bir uzman eklemeye çalıştığınızda hata veriyor.

 int OnInit ()
  {
   hPerCros= iCustom ( _Symbol , 0 , "\\Каналы\PercentageCrossoverChannel" ,Percent,Shift) ;
   if ( hPerCros < 0 )
       Print ( "Ошибка создания индикатора=  " , GetLastError ());
   return ( 0 );
  }