ターミナルを起動した後、OrderSend ルーチンの2回目の呼び出しで[Too many trade requests]エラーが発生する原因を教えてください。
月曜日から木曜日までのログに目を通しました。最初の指値注文は正常に送信され、次の注文はすべて[Too many trade requests]エラーで戻ってくるというのは、どこでも同じことが起こっています。そして、合格を目指し始めるのです。唯一の犯罪行為は、OnInit()内でCopyTickRangeを頻繁に呼び出すことです。
Nikolay Kositsin: 皆さん、こんにちは!BMPファイルからデータを取得する際、ResourceReadImage()関数が正しく動作しないようです。キャンバスに背景として絵を描くスクリプトを作りました。ハードディスクにあるファイルから画像を取り出してキャンバスに塗りつぶすだけなら問題ありませんが、ex5ファイル自体にあるBMPリソースからResourceReadImage()関数で画素を取り出すと、元画像を小さく大きく切り取ったような画像になってしまいます。その理由は何でしょうか。
コピーポイントサイクルが間違っているので、次のように置き換えてください。
//--- заливаем фон из массива на канвуfor(int y1=0; y1<height && !IsStopped(); y1++)
for(int x1=0; x1<width; x1++)
{
canvas.PixelSet(x1,y1,bmp_data[y1*width+x1]);
}
ターミナルを起動した後、OrderSend ルーチンの2回目の呼び出しで[Too many trade requests]エラーが発生する原因を教えてください。
月曜日から木曜日までのログに目を通しました。最初の指値注文は正常に送信され、次の注文はすべて[Too many trade requests]エラーで戻ってくるというのは、どこでも同じことが起こっています。そして、合格を目指し始めるのです。唯一の犯罪行為は、OnInit()内でCopyTickRangeを頻繁に呼び出すことです。
BCS Broker MetaTrader 5 Terminal x64 build 2170 を開始しました。
イリヤス
dll からは、文字列 const wchar_t* へのポインタが、これらのパラメータを持つ偶数文字列をコピーします。
wcsncpy( out, data, wcslen(data) * 2 );
このパラメータでは、当然ながら漏れます。
しかし、その文字列は、余分な文字が1つも入っていない偶数文字列であることがわかった。
そして、プログラムを終了させた後、Expert Advisorのログにメッセージが表示されます。
そして、そんなテストがある。
以下のように表示されます。
char 文字 ' ' は、1 バイトではなく 2 バイトを返します。おそらく、ユニコードだからでしょう。
また、文字列はwchar_tと比較すると、2バイトではなく、12バイトずつ返されます。
考えられる方法として、アッパータイプのアライメントは、どこかで弦のサイズを歪めているのかもしれませんね?
イリヤス
dll からは、文字列 const wchar_t* へのポインタが、これらのパラメータを持つ偶数文字列をコピーします。
このパラメータでは、当然ながら漏れます。
しかし、文字列は均等になり、余分な文字は1つも出てこない。
そして、プログラムを終了させた後、Expert Advisorのログにメッセージが表示されます。
そして、そんなテストがある。
以下のように表示されます。
char 文字 ' ' は、1 バイトではなく 2 バイトを返します。おそらく、ユニコードだからでしょう。
また、文字列はwchar_tと比較すると、2バイトではなく、12バイトずつ返されます。
考えられる方法として、アッパータイプのアライメントは、どこかで弦のサイズを歪めているのかもしれませんね?
イリヤス
Dll からは、const wchar_t* 文字列ポインタは、以下のパラメータを持つプレーンな文字列をコピーします。
このパラメータでは、当然ながら漏れます。
しかし、その文字列は、余分な文字が欠落していない、偶数の文字列であることが判明した。
そして、プログラムを終了させた後、Expert Advisorのログにメッセージが表示されます。
そして、そのようなテスト
以下のように表示されます。
char 文字 ' ' は、1 バイトではなく 2 バイトを返します。おそらく、ユニコードだからでしょう。
また、文字列はwchar_tと比較すると、2バイトではなく、12バイトずつ返されます。
考えられる方法として、アッパータイプのアライメントは、どこかで弦のサイズを歪めているのかもしれませんね?
1. MQLではUnicodeのみ、そのため文字サイズは2バイトです。
2. 文字列は構造体(バッファサイズ4バイト、ポインタサイズ8バイト)です。
コピー先の文字列は
これがうまくいかない場合、エラーは他の場所にあるはずです。
皆さん、こんにちは!BMPファイルからデータを取得する際、ResourceReadImage()関数が正しく動作しないようです。キャンバスに背景として絵を描くスクリプトを作りました。ハードディスクにあるファイルから画像を取り出してキャンバスに塗りつぶすだけなら問題ありませんが、ex5ファイル自体にあるBMPリソースからResourceReadImage()関数で画素を取り出すと、元画像を小さく大きく切り取ったような画像になってしまいます。その理由は何でしょうか。
コピーポイントサイクルが間違っているので、次のように置き換えてください。
そして、この質問 -FrameInputs() 関数に来るのと同じ入力変数のリストを、最適化せずに1パスだけで 取得するにはどうしたらよいでしょうか?
そうそう、ごく最近そのような質問があったのですが、いつの間にか失念していて、今自分もそのような課題(セットファイルを自動的に作りたい)を抱えています。
どの方向に掘ればいいのか?また、その議論を覚えている人がいれば、それはどこにあるのでしょうか(見つからないのですが)?
もちろん、それぞれのExpert Advisorに、このようなリストを作成する関数を書くこともできますが、普遍的なライブラリの関数があった方が良いでしょう。もちろん、このようなリストを作成する関数を各EAに1つずつ書いてもいいのですが、ユニバーサルライブラリの関数の方がいいでしょう。
こちらを ご覧ください。
こちらも ご覧ください。
そうだ、それだ!」。
ありがとうございました。
1. MQLではUnicodeのみ、そのため文字サイズは2バイトです。
2. 文字列は構造体(バッファサイズ4バイト、ポインタサイズ8バイト)です。
コピー先の文字列は
これがうまくいかない場合、エラーは他の場所で探す必要があります。
また、コピーする文字列のサイズが、確保したバッファのサイズより大きい場合や小さい場合はどうなるのでしょうか?