MetaEditor ビルド1463 - ページ 14

 
Renat Fatkhullin:

まだどこにもない。

ArrayPrint- 類似しています。
 
問題は、.
void OrderSend( int ) {}  // no problem
void Print( MqlTick& ) {} // 'Print' - override system function

例えば、外部クラス「::」はオーバーロードを許可しませんが、内部クラスは許可します。

そのため、規制の松葉づえを打つ必要がある

class PRINTCLASS
{
public:  
  template <typename T>
  static void MyPrint( const T &Value )
  {
    T Array[1];
    
    Array[0] = Value;
    
    ::ArrayPrint(Array);
  }
  
  template <typename T>
  static void MyPrint( const T Value )
  {
    ::Print(Value);
  }
};

#define Print(A) PRINTCLASS::MyPrint(A)

void OnStart()
{
  MqlTick Tick;
  
  SymbolInfoTick(_Symbol, Tick);

  Print(Tick);
  
  int i = 5;
  
  Print(i);
}
ZSArrayPrintは、サイト上でハイライトされていません。
 
1467ビルドが公開されました。どのような変化があるのでしょうか。
 
 

テスターで私のインジケーターに問題があることを発見。build 1463以降、インジケーターのテスト 時に、起動後すぐにハングアップしてしまいます。ハングアップするのはテスターであって、インジケーターではありません。なぜなら、新旧どちらのコンパイラでコンパイルしても問題は残るが、旧テスターではすべて正常にテストされるからだ。

ハングアップにつながるコード内の場所が見つかりませんでした。Commentを違う行で作ってみましたが、いつも違うところでハングアップしてしまいます。一般的には、ある種の内部エラーテスター。

 
Alexey Navoykov:

テスターで私のインジケーターに問題があることを発見。build 1463以降、インジケーターのテスト 時に、起動後すぐにハングアップしてしまいます。ハングアップするのはテスターであって、インジケーターではありません。なぜなら、新旧どちらのコンパイラでコンパイルしても問題は残るが、旧テスターではすべて正常にテストされるからだ。

ハングアップにつながるコード内の場所が見つかりませんでした。Commentを違う行で作ってみましたが、いつも違うところでハングアップしてしまいます。つまり、テスターの内部バグのようなものですね。

それでまだハングアップしているのか、それともテスターでテストの最大速度を設定しただけなのか?

追記:今まで遭遇したことがないので、コードを見直すのは非常に望ましいことです。

 
Alexey Navoykov:

ハングアップの原因となっているコードの場所が見つかりませんでした。

画面全体を動画で恒久的に記録するように設定します。バグが発生したら、録画を停止し、映像に不要なものを切り落としてください。
 
Vladimir Karputov:

では、フリーズするのか、それともテスターで最大テスト速度に設定しているのか。

追記:今まで遭遇したことがないので、コードを見直すのは非常に望ましいことです。

どんな速度でもフリーズしてしまう。StrategyTestVisualizationウィンドウが反応しない。残念ながら、商用製品なので、すべてのコードをお見せすることはできません。

また、テストモードや 時間枠にも依存しない。

 
Alexey Navoykov:

どんな速度でもフリーズしてしまう。StrategyTestVisualizationウィンドウがリクエストに応答しない。残念ながら、商用製品なのでコード全体をお見せすることはできません。

コードを表示するには、ServiceDeskを使用するしかありません。ただし、インジケータに無限Whileループの疑いがありますが...。
 
fxsaber:
2016.11.10 11:07:42.764 Test (EURUSD,M1)                         [time]   [bid]   [ask]  [last] [volume]    [time_msc] [flags]
2016.11.10 11:07:42.764 Test (EURUSD,M1)        [0] 2016.11.10 11:10:11 1.09207 1.09217 1.09207   500000 1478776211595       2

唯一足りないのは、ArrayToStringだけです。そうすると、出力が修正される可能性があります。例えば、time_mscや flagsなどです。

MqlTickを 次のように変更してください。
struct MqlTick
  {
   datetime     time;          // Время последнего обновления цен
   double       bid;           // Текущая цена Bid
   double       ask;           // Текущая цена Ask
   double       last;          // Текущая цена последней сделки (Last)
   ulong        volume;        // Объем для текущей цены Last
   datetime_msc time_msc;      // Время последнего обновления цен в миллисекундах
   uint         flags          // Флаги тиков
  };
すなわち、新しいタイプdatetime_mscを導入する。