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

 
fxsaber:
1つのMQLプログラムから何かをファイル(RAM-drive)に常に追加しなければならない場合、どのようなフラグや落とし穴があるかもしれませんし、他(と別の端末)から同じそれを読み取るために、このすべての追加されたデータをお読みください。

データの安全性は確保されるべきですが、少なくとも2つの問題があると思います。

- 同時アクセス時の同期が保証されない。つまり、既に読み込んだデータを再読み込みすると同時に、新しいデータの書き込みを阻止することが可能 - 衝突が発生する。

- 待ったなし

いつものようにセマフォを使うか、独自の書き込みマネージャを作成します。

ZSは:それはメモリに埋め込まれたSQLiteに 置くための機会があるようだ 、少なくともそこにデータベースの状態を制御することができます。

 
このトピックに関係のないコメントは、「M4のデモ取引口座がウェブターミナルで開かないことがある のですが、なぜか教えてください」に移動しました。1年前に登録したが、半年ほど使っていない。".
 
Alexey Kozitsyn:

ファイブでは、インジケータは同じように動作しますが、フリーズすることなく、すべて正常です。

いいえ、ファイブではインジケータはツールフローにあります。

 
バグ MT5 (build 2340)ポインターオブジェクトからデフォルトのoperator=にアクセスできない。

class A{
public:
   char data;
   
   // uncomment to fix the bug
   //void operator=(A &a){this.data = a.data;}
};


// bypassing the bug
template<typename P1, typename P2>
void unref_assignment_operator(P1* &p1, P2* &p2){
   struct Functor{
      static void call(P1 &p1, P2 &p2){
         p1 = p2;
      }
   };
   Functor::call(p1, p2);
}

   
void OnStart(){      
   A a1;
   A a2;
   
   a2.data = 0x1;
   a1 = a2;
   printf("%d", (a1.data));               // Ok, 0x1
   
   
   A* a_ptr_1 = &a1;
   A* a_ptr_2 = &a2;
   
   a2.data = 0x2;
   a1.operator=(a2);                      //'operator=' - undeclared identifier 
   printf("%d", (a1.data));               
   
   
   a2.data = 0x3;
   unref_assignment_operator(a_ptr_1, a_ptr_2); 
   printf("%d", (a1.data));               // Ok, 0x3
}
 

静的構造関数をデバッグしようとすると、MTターミナルがクラッシュする不具合を修正して ください。
上の例でも
p1 = p2;」という行でブレークポイントを捕捉 すると、端末がクラッシュします。

 
Andrey Khatimlianskii:

いいえ、ファイブではインジケータはツールフローにあります。

すみません、混乱しています。Quaternaryでの動作(つまりQuaternaryのように-ツールフローで)と思っていたところです。

また、MT4インジケーターの共通インターフェーススレッドについては、どこに書かれているのでしょうか?

追加されました。

インジケーター

すべてのインジケータは、グラフィック・インターフェイス・スレッドのリソースを共有しています。

あるインジケータで無限ループが発生すると、端末の動作が停止する


ありがとうございます、見つけました。

そうすると、デバッガはもともとMT4では考えられていなかったということになります。少なくとも指標となるものを呼ぶことは禁止されていたはずです。

 

どこにバグを報告すればいいのかよくわからないのですが...。ここで報告するようにします。MT5での問題の本質は、"+"または"-"ボタンでチャートのスケーリングを使用した場合、チャートが通常の位置(画面の右端からインデント)に戻らなくなることです。いつも手動で返却しています。

MT4では、そのような問題はありません。いくつかのブローカーで確認したところ...。

を押した後、"+"を押します。


とても不快だ...。直せるか?

 
Alexey Kozitsyn:

すると、デバッガはもともとMT4で設計されたものではないことがわかりました。少なくとも、指標のために呼び出すことは禁止されていたはずだ。

しかし、最初からあったわけではありません。だから、よく考えなかったのでしょう。

 
Roman Agafonkin:

どこにバグを報告すればいいのかよくわからないのですが...。ここで報告するようにします。MT5での問題の本質は、"+"または"-"ボタンでチャートのスケーリングを使用した場合、チャートが通常の位置(画面の右端からインデント)に戻らなくなることです。いつも手動で返却しています。

MT4では、そのような問題はありません。いくつかのブローカーで確認したところ...。


とても不快だ...。直せるか?

スケーリングを使用する場合、インデントは次に入力されるティックで通常の状態に戻されます。

 
SEM:

スケーリングが使用されている場合、インデントは次に入力されるティックで通常状態に戻ります。

そこがダメなんです...mt4では大丈夫なんですが...。mt5で - 残念ながら不具合が...。
よし、動画を撮影してこのスレッドに追加しよう。