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

 
Snaf: 最初のスクリプトの間違いは自分で見つけましたが、2つ目の スクリプトは頭が足りません。

ビルド630

この例は、MQL5コンパイラの新しいビルドを使用して書かれています。このような配慮が足りなかったことをお詫び申し上げます。でも、もうすぐ出ますので、少しお待ちいただければ、すべてコンパイルされます。
 
MetaDriver: そうそう、文字列の処理でも失敗しました。 私の関数は、他の関数(OpenCLプログラム生成)が返すチャンクから長い文字列 を組み立てるものでした。デバッガでは、ビルドがクラッシュして「Acces Violation」と表示されるなど、まるで時計のようです...。;)

サービスデスクに書き込もうと思っていたら、いきなりうまくいった。:) もう再現できないのですが(正直に言ってみたのですが)、なぜサービスデスクに送る必要があるのでしょうか?

はい、CLProgramCreate()には明らかな問題があります。最初の実行不具合はスクリプトのどこにあったのか、具体的に追跡してみたところ、この関数にありました。この関数は値を返しません。

文字列の形のCL-programが正しく再現されているようです。しかし、CLのプログラムそのものは作成されない。

 
クロスでのテストでは、他のレートも正確にモデル化し、利益と必要な証拠金を正しく変換します。

ビジュアライゼーションを実行してみると、マーケットウォッチの背景文字の数に基づく計算量がすぐに理解できる。
 
私のラップトップとPCをマージする方法を教えてください、戦略をテストするとき、コンピュータはルータを介して動作している、ケーブル経由で1、Wi-Fi経由で他の、デスクトップコンピュータのファイルmt5に作成しようと、私はラップトップに投げ、セクションリモートに追加しましたが、エージェントの名前は、ラップトップにと同じです。
 

ポストからhttps://www.mql5.com/ru/forum/1111/page736#comment_185306

に問題が局限されました。

-CFastFile::ReadInteger クラスの関数について

630/64では、構造体の代入と配列から配列への読み込みのどちらかが失敗することが判明しましたが、最も悪いのは符号付き(short/int/char)から符号なし(ushort/uint/uchar)への変換のようです。

どこかに余分なビットやオフセットがあるのです。その結果、プログラマーは意図したのとは全く異なる数値を読み取ってしまうのです。機能での整理や再確認がしやすくなります。

しかし、4台のコンピュータで同じコードで安定して動作しています(コードが大きいので、プロットを引き伸ばすことができません)。

 
lazarev-d-m:
私のラップトップとPCをマージする方法を教えてください、戦略をテストするとき、コンピュータはルータを介して動作している、ケーブル経由で1、Wi-Fi経由で他の、デスクトップコンピュータ上のファイルmt5を作成しようとすると、ラップトップにそれを投げ、セクションリモートに追加しましたが、エージェントの名前は、ラップトップの場合と同じであること
これではダメなのでしょうか?クライアント端末 / ストラテジーテスター / エージェント
 
Yedelkin:
こうはいかないんですか?クライアント端末 / ストラテジーテスター / エージェント
私は何か間違ったことをしたに違いない、今私は再びmt5ファイルを作成し、今ノートPCはPCプロセッサを見るが、接続テストでは何も進まない、何が問題なのか、私はPC上でそれらを使用しない場合は、PCテスターにノートブックプロセッサを追加する必要がありますか?
 

開発者の皆さん、このバグにやられましたね! 噂通り「泣ける」です。

CFastFile ( ::ReadInteger)からの関数

        uint ReadArray(uchar &dst[], uint dst_start=0, int cnt=WHOLE_ARRAY) { int r=ArrayCopy(dst, m_data, dst_start, m_pos, cnt); if (r>0) m_pos+=r; return(r); }
        ushort ReadShort() { __2 b={0}; __short d={0}; ReadArray(b.v, 0, 2); d=b; return(d.v); }
        uint ReadInteger(int sz=INT_VALUE)
        {
                if (sz==SHORT_VALUE) { ushort s=ReadShort(); return(s); }
                return(ReadInt());
        }


SHORT_VALUEを読み込むと無意味な値を返します。


配列から読み出すための様々なオプションについて頭を悩ませながら調べ始めました。

ushort s=ReadShort()の代わりに関数ReadShortの本体そのものを入れると、全ての数値が正常に読み込まれることが判明した。

でも、本当に泣ける変種を見つけた んです。

        uint ReadInteger(int sz=INT_VALUE)
        {
                if (sz==SHORT_VALUE) { ushort s=ReadShort(); if (s==426) Print(s); return(s); }
                return(ReadInt());
        }

つまり、Print関数は 魔法のように間違った数値sを正しい数値に変換し、正しい値を返します。


開発者の皆さん、正気に戻ってください。ゴミを作るのか!!!!

自社の製品に対する姿勢に起因する市場での 損失をどのように補填するのか?

結局のところ、MT5は、サードパーティのプログラマーによって提供される巨大な消費者リソースに 過ぎないのです。

そして、あなた方の怠慢な行動が、彼らの能力とプログラムの質に疑問を投げかけているのです。

 
sergeev:

開発者の皆さん、このバグにやられましたね! 噂通り「泣ける」です。

CFastFile ( ::ReadInteger)からの関数

待てよ、でもこれはCFastFile クラスのコードだろう?プラットフォーム開発者と何の関係があるのか?

//+------------------------------------------------------------------+
//|                                                         FastFile |
//|                                            Copyright © 2006-2012 |
//+------------------------------------------------------------------+
#property copyright "Copyright © 2006-2012"
#property version "1.00"
#property library
 
Renat:

待てよ、でもこれはCFastFile クラスのコードだろう?プラットフォーム開発者はどうするんだ?



はい、Renatさん、これは私のコードです。

以前のビルドでは動作していました。しかし、現在の630/64では動かなくなった。

そして、それは630/32でも正常に動作し続けています。


私が発見したバグは、かなり奇妙で、率直に言って恐ろしいものです。