インジケータが破損する - ページ 3

 
AnkaSoftware:

JIC、この問題は32ビットプラットフォームでは発生しないことに注意してください。以前の投稿でいくつかのコードを提供しました。

あなたは、2つ(またはそれ以上)の別々のマシンを持っていて、必ずしも全く同じデータを受信しているとは限りません。例えば、64ビットシステムは多忙なVPSノード上にあり、物理ノードが極端なプロセッサ使用量や帯域幅で動作しているため、時折トラフィックや接続が失われる可能性があります。(他にも多くの説明が可能ですが、これはほんの一例です)。

M1バーのギャップがあるときに紫の線の描画が停止する理由がわかるまで、私は他のすべてを偶然の一致として扱うことにします。

最後に冒頭の話に戻りますが、64bitWindowsであなたのおっしゃるような問題が発生するわけがありません。多くの人がこのフォーラムで、MT4がプラットフォームx、y、zで正しく動作しないという報告を上げていますが、結局、問題は彼らのコードにあったということが判明しています。あなたは、文字通り何百万人もの人々に使用されている成熟したソフトウェアにおいて、数年ぶりに真正のMQL4バグを発見したか、あるいはあなたのコードに問題があったかのどちらかです。これまでのところ、例えば16時間後や3-4時間後に問題が発生するという報告から、この問題はデータの時々の変動が原因であり、それに適切に対処できていない可能性が高いのです。
 

AnkaSoftware:

a) インジケーターの破損は、Windows 64ビットプラットフォームでのみ発生します。

d) コード使用は次の通りです。

宣言文

<コード

#プロパティ indicator_chart_window



  1. Vista/Win7では、"Don't install in \Program Files*" にインストールします。
  2. void DrawMoveEx(double& serie[], int start, int end, double startlevel, double endlevel) {
    double a = (endlevel - startlevel) / (start - end);
    double y;
    int bar;
    for(int x = 0; x <= start - end; x++) {
    y = a * x;
    bar = start - x;
    serie[bar] = startlevel + y;
    }
    }
    何をしようとしているのかよくわからない。多くの値(start..end)を計算してるのに、1つしか保存してない(serie[bar])俺ならこう書くね。
    void DrawMoveEx(double& serie[], int start, int end, double startlevel, double endlevel) {
       double a = (endlevel - startlevel) / (start - end);
       for(int x = start; x <= end; x++) serie[x] = a * x + startlevel;
    }

 
この問題を再現するサンプルインジケータを同封します。64bit版Windowsで、M1チャートにインジケータを貼り付け、4時間以上動かしてみてください。
ファイル:
 
AnkaSoftware:
この問題を再現するサンプルインジケータを同封します。64bitのWindowsプラットフォームで、M1チャートにインジケータを貼り付けて、4時間以上動かしてみてください。
64bitのクリーンなマシンをこれに割り当てて、4時間以上待つ忍耐力はないので、すみません。

しかし、このインジケータが本当に問題を再現するのであれば、それは興味深いことだと思わざるを得ません。内部的な問題がどこに隠れているのか、すぐにはわからないのです。(前回と同様に、問題の発生とMT4とブローカーとの間の最近の接続の不具合との間の相関関係などは確実に除外されているものと仮定して)。CNSを信頼しているとのことですが、MT4のジャーナルに接続の問題についての記述がないことを実際に確認されていないので、バー履歴のバックフィルを引き起こしている可能性があります)。

MT4の問題ということであれば、インジケータの配列を参照渡しすることが最も可能性が高いと思われます。MQL4の配列は常に静的であるなど奇妙な性質を持っており、特殊なインジケータ・バッファの配列を参照渡しする際に、Win64でのみ問題を引き起こす奇妙な問題が潜在している可能性はあると思います。しかし、なぜオペレーティングシステムがこのような文脈で違いを生むのか、完全な謎のままです。

私なら、DrawMoveEx()を変更して、インジケータ配列への参照を受け取らないようにして、代わりに、DrawMoveEx_Down1(), DrawMoveEx_Up1() など、単にバッファをグローバル変数として扱う別の関数があるようにするでしょう。もしこれで違いが分かるなら、おめでとうございます、あなたはほぼ間違いなくMT4のバグを発見したことになります。おそらく今日2 つ目のバグでしょう。
 
AnkaSoftware:
この問題を再現するサンプルインジケータを同封します。64bitのWindowsプラットフォームで、M1チャートにインジケータを貼り付け、4時間以上動作させます。
Windows 7 Ultimate 64bitでは、5時間以上動作しており、問題ありません。
 
RaptorUK:
Windows 7 Ultimate 64 bitで5時間以上稼働していますが、問題はありません。

JIC a) ご指摘の通り,参照渡しを削除 したコードを修正しましたが,問題は解決しません.修正したコードを同封します。

b) あなたが言及している行方不明のバーは、おそらく無取引状態のため、ブローカーがバーを送らなかったのでしょう。IMHOは、接続が失われた場合、接続が復元されると、行方不明のバーが利用可能になります。私のサンプルコードを見ていただければ、バーが連続していることに依存することはありません。

Raptorさん、テストありがとうございます。多分、JOOM INしないとエラーは見えないと思います。Windows Server 2008 R2 Enterpriseでこの問題を再現することができました。O/Sの問題かもしれません。特定のプラットフォームに対するMT4推奨パッチのリストを入手する方法はありますか?

.

ファイル:
 
AnkaSoftware:

MT4推奨パッチの一覧はどこから入手できますか?

そのようなものは存在しません。Windowsの全バージョンで動作するMT4は1つであり、複数のバージョンが必要である理由は特にありません。OS固有のバージョンやパッチは存在しません。
 
AnkaSoftware:
この問題を再現するサンプルインジケータを同封します。64ビットのWindowsプラットフォームで、M1チャートにインジケータを貼り付け、4時間以上動作させました。
私の知る限りではまだ問題なく動作しています ... どうすればエラーを再現できますか?
 
RaptorUK:
私の知る限りではまだ問題なく動作しています ... ... どうすればこのエラーを再現できますか?
何もする必要はありません。チャートにズームインして、エラーが発生したかどうかを確認する以外には。
 
AnkaSoftware:
何もする必要はありません。チャートにズームインして、エラーが発生したかどうかを確認する以外には。

チャートバーから切り離されたような線を探すのであれば(最初の投稿のように)問題はないのですが。

理由: