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)); elsereturn(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) return1; for (ulong i=2; i<=power; i++) r=r*10; return r; }
外部変数 int frac_length=2; int Pow10frac_length=100; int Id1_class=1; です。
"先生、痛いところがあるんです!"© )
そのような表現の例を挙げてください。再現性のあるもの。そうすれば、何か言えるようになるはずです。
{
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; です。
エラーの例を挙げていないですね。この関数はどのような引数の値で間違った値を返し(どの引数?
例えば、こんな感じです。
Id1_class=1, bs=0, type=0, frac=99, ll=1, frac_length=2, Pow10frac_length=100, return 11299を返した。
1001199となるはずです。エキスパートでは、クラスでの機能、オープンでのデモ口座。
エラー時に必ず11299が返ってくるというわけではありません。
再生しています。スクリプトにあなたのコードを書き、デバッグモードで実行すると正しい値(1001199)を出しましたが、リリースをコンパイルしてMT5でツリーから実行すると、安定して11199を出しました。問題を特定することができましたので、以下に再現コードを示します。
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 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を移動させるか。
これはまさにコンパイラのバグであり、サービスデスクに連絡して ください。
マーケット製品の公開されたばかりの自社レビューにカーソルを合わせると、いくつかの提案やアクションが表示されます。編集」を選択してレビューを変更した場合、「更新」をクリックした後に「権限がありません」というエラーがポップアップ表示されます。
SRへのアプリケーションは作成できません -エラーが発生しました。
マーケット製品の公開されたばかりの自社レビューにカーソルを合わせると、いくつかの提案やアクションが表示されます。編集」を選択してレビューを変更すると、「更新」をクリックした後に「権限がありません」というエラーがポップアップ表示されます。
お使いのブラウザの名前とバージョンを指定してください。
chrome 56.0.2924.87では、レビューページを手動で更新した場合としない場合の両方で、正常に飛行します。
SRへのアプリケーションは作成できません -エラーが発生しました。
どうやら、アンチCSRFのトークン・チェックの原則にアップデートがあったようです。
chromeの場合、このようにできます。
www.mql5.com でF12を押す => ダッシュボードでアプリケーション => クッキー => クッキーをクリック => すべて消去...
お使いのブラウザの名前とバージョンを指定してください。
Chrome 56.0.2924.87では、レビューページを手動で更新した場合としない場合の両方で、正常に飛行しています。