エラー、バグ、質問 - ページ 708

 

こんにちは、OpenCLです。デバッグモードでは、コードはうまく動作するのですが・・・。しかし、テスターでは、CLContextCreateを 呼び出すとエラー5100が発生します....サービスデスク?

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)

ターミナルGPU:Advanced Micro Devices, Inc.OpenCL 1.1搭載タークス(6基、725MHz、1024Mb、バージョンCAL 1.4.1703 (VM)

ビルド 619 Windows 7 SP1 64-x

...

PCで別のゲームソフトで繰り返したが、効果がなかった...。

ファイル:
 
MigVRN:

デバッグモードでは、コードはうまく動作するのですが・・・。しかし、テスターでは、CLContextCreateを 呼び出すとエラー5100が発生する...。サービスデスク?

バグではなく、テスターではOpenCLが動作しない、つまりサポートが無効になっているのだと思います。一時的な障害か、永久的な障害か、それは未解決の問題です。
 
MigVRN:

こんにちは、OpenCLです。デバッグモードでは、コードはうまく動作するのですが・・・。しかし、テスターでは、CLContextCreateを 呼び出すとエラー5100が発生します....サービスデスク?

...

デスクトップで別のゲームソフトを起動させてもダメでした。

テスターでOpenCLが有効になっていることを発表した覚えはないのですが、もしかしたら見落としがあったのかもしれません。

ターミナルで機能がデバッグされている限り、準備が整い次第、テスターでサポートが接続されます。

リモートテストにも対応しなければならないでしょう。

 
MetaDriver:
バグではないと思いますが、テスターではOpenCLが動作しない、つまりサポートが無効になっているのだと思います。一時的な障害か、永久的な障害か、それは未解決の問題です。
ウラン です。

テスターでOpenCLが有効になったと発表された記憶はないのですが、何か見落としているのでしょうか。

ターミナルで機能をデバッグしている間は、準備が整い次第、テスターでのサポートがオンになります。

リモートテストにも対応しなければならない。

ありがとうございます! :( 楽しみに待ってます...。もう、本当にやってみたいです。
 

EAを書く ことにしました。ゼロから何かを書き始めるときは、必ず各ステップでエラーがないか、コードが効率的かどうかをチェックします。Expert Advisorが "new bar "のようなイベントで動作するのは好きではありませんでした。私はその理由を見つけるために長い間、一生懸命探しました。

//+------------------------------------------------------------------------------+
//| エキスパートティック機能|
//+------------------------------------------------------------------------+
void OnTick()
{
Alert("New tick",TimeCurrent());
}
//+------------------------------------------------------------------------+.

その結果、シミュレーションの品質は100%で、38242987 ティックがシミュレーションされましたが、テスターのログ(丸一日)には、13259 ティックしかカウントされておらず、乱暴な抜けがあります...。
その理由は何でしょうか?

ファイル:
20120408.log  2074 kb
 

Renat, Slava, パラメトリゼーションに近づけるには、プリプロセッサで#includeに似た働きをする特別なディレクティブを(簡単に)作成し、同じinsluderを繰り返しコンパイルできるようにします。 例を挙げます。

#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"

現在は、コンパイルはできるが動作しない(というより、最初の#includeに対してのみ動作する)。 特別なディレクティブ(#reinclude、#Include、#template)で解決できる。 ところで、標準型のための関数のオーバーロードを書くときにも、多くの時間を節約することができるだろう。そして、標準ライブラリは、コンパクトで見栄えのするものになるかもしれません。 そして、「普通の」パラメトリッククラスに近づくかもしれません - 言語に新しい構文を追加して、隠された#reincludeを自動化するだけです。

// このインクルージョンが私自身のプリプロセッサによってここに 展開される、作業例です。

ファイル:
ISort.mqh  2 kb
 

これもクラス・パラメタリゼーションの一種である。

#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));
     }
  }

うまくいくよ。 継承もできる。;)

しかし、このオプションを多少なりとも確実に使えるようにするためには、少なくともマクロの行を移動させる必要があります。

// そして、このギミック(慣れないうちは?)は、かなり変な感じになります。:))

ファイル:
DefTest.mq5  2 kb
 
MetaDriver:

Renat, Slava, あなたは、(簡単に)プリプロセッサで#includeに似た働きをする特別なディレクティブを作ることで、パラメータ化に近づけることができます。 例を挙げます。

アイデアは明確ですが、テンプレートはすぐにでも導入したほうがよいでしょう。

これについては、また後ほど。

 
Renat:

アイデアは明確ですが、テンプレートはすぐにでも実行したほうがよいでしょう。

これについては、また後ほど。

やったー!!ありがとうございます。
 

テスターのこの項目は見事に合格です。EAをグラフに添付しようとすると、エラーが発生します。

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