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

 
Sergei Vladimirov:

"先生、痛いところがあるんです!"© )

そのような表現の例を挙げてください。再現性のあるもの。そうすれば、何か言えるようになるはずです。

ulong PackMagic(int bs, int type, int frac, int ll)//bs=0 - sell, bs=1 - buy (в смысле ll), type - это тип FPST
     {
        int d1;
        ulong i, frac1=frac, ll1=ll, type1=type;
        
        i=1; d1=10;
        while (ll>=d1) {d1=d1*10; i=i+1;}
              
        if (type==0 || type==2) return (frac1+ll1*Pow10frac_length+i*Pow10(frac_length+i)+
         type1*Pow10(frac_length+i+1)+bs*Pow10(frac_length+i+2)+Id1_class*Pow10(frac_length+i+3));
        else return(ll1+i*Pow10(i)+type1*Pow10(i+1)+bs*Pow10(i+2)+Id1_class*Pow10(i+3));
     }    
    
     ulong Pow10(ulong power) // power>0
     {
        ulong r=10;
        if (power==0) return 1;
        for (ulong i=2; i<=power; i++) r=r*10;
        return r;
     }

外部変数 int frac_length=2; int Pow10frac_length=100; int Id1_class=1; です。

 
Sergey Kudryavtsev:
PackMagic関数に問題があります。外部変数 int frac_length=2; int Pow10frac_length=100;.
エラーの例を示していませんね。この関数はどの引数値で間違った値を返すのでしょうか(どれでしょうか)、また正しい結果はどうなるのでしょうか?
 
Sergei Vladimirov:
エラーの例を挙げていないですね。この関数はどのような引数の値で間違った値を返し(どの引数?

例えば、こんな感じです。

Id1_class=1, bs=0, type=0, frac=99, ll=1, frac_length=2, Pow10frac_length=100, return 11299を返した。

1001199となるはずです。エキスパートでは、クラスでの機能、オープンでのデモ口座。

エラー時に必ず11299が返ってくるというわけではありません。

 
再現性がない。これらのパラメータを使用すると、この関数は一貫して1001199を返します。関数自体にもエラーはない。だから、何も言うことはないのです。Expert Advisor の問題は、この関数ではなく、他の場所にある可能性が高いです。 関数に渡されたパラメータの値が、期待したものと異なっているのです。従って、予想とは異なる結果となりました。
 

再生しています。スクリプトにあなたのコードを書き、デバッグモードで実行すると正しい値(1001199)を出しましたが、リリースをコンパイルしてMT5でツリーから実行すると、安定して11199を出しました。問題を特定することができましたので、以下に再現コードを示します。

int frac_length = 2;

void OnStart()
{
        
        ulong i = 1;

        ulong a1 = Pow10(frac_length + i);
        ulong a2 = Pow10(frac_length + i + 1);
        ulong a3 = Pow10(frac_length + i + 2);
        ulong a4 = Pow10(frac_length + i + 3);
        
        Print(IntegerToString(a1), " ", IntegerToString(a2), " ", IntegerToString(a3), " ", IntegerToString(a4));

}  

ulong Pow10(const ulong power)
{
        ulong r = 10;
        
        if (power == 0)
                return 1;
                
        for (ulong i = 2; i <= power; i++)
                r = r*10;
                
        return r;
}

デバッグモードでは正常に動作します。しかし、MT5でナビゲータからリリースを開始すると、無意味なもの(「1000 10000 100000 1000000」ではなく「1000 10000 100 100」)を生成するか、プロセッサのコアの1つがフルロードになるとMT5がハングアップするのです。

修理の方法は2つあります。このどちらかの方法。

        ulong a1 = Pow10(frac_length + i);
        ulong a2 = Pow10(frac_length + i + (ulong)1);
        ulong a3 = Pow10(frac_length + i + (ulong)2);
        ulong a4 = Pow10(frac_length + i + (ulong)3);

Start()関数内でグローバル変数frac_lengthを移動させるか。

これはまさにコンパイラのバグであり、サービスデスクに連絡して ください。

 
MT4が1.8ギガバイト(RAM)の重さになり始めた。UPUを全部食べてしまい、第2端子のスイッチがうまく入らない。MTのRAMを「クリーニング」する方法を教えてください。
 

マーケット製品の公開されたばかりの自社レビューにカーソルを合わせると、いくつかの提案やアクションが表示されます。編集」を選択してレビューを変更した場合、「更新」をクリックした後に「権限がありません」というエラーがポップアップ表示されます。

SRへのアプリケーションは作成できません -エラーが発生しました

 
fxsaber:
マーケット製品の公開されたばかりの自社レビューにカーソルを合わせると、いくつかの提案やアクションが表示されます。編集」を選択してレビューを変更すると、「更新」をクリックした後に「権限がありません」というエラーがポップアップ表示されます。

お使いのブラウザの名前とバージョンを指定してください。
chrome 56.0.2924.87では、レビューページを手動で更新した場合としない場合の両方で、正常に飛行します。

 
fxsaber:

SRへのアプリケーションは作成できません -エラーが発生しました

なるほど、www.mql5.com、Cookieをクリアする必要があるのですね。
どうやら、アンチCSRFのトークン・チェックの原則にアップデートがあったようです。

chromeの場合、このようにできます。
www.mql5.com でF12を押す => ダッシュボードでアプリケーション => クッキー => クッキーをクリック => すべて消去...
 
Sergey Dzyublik:

お使いのブラウザの名前とバージョンを指定してください。
Chrome 56.0.2924.87では、レビューページを手動で更新した場合としない場合の両方で、正常に飛行しています。

ポータブルクロームバージョン45.0.2454.85 + フリゲート。