エラー、バグ、質問 - ページ 1871 1...186418651866186718681869187018711872187318741875187618771878...3185 新しいコメント Konstantin 2017.04.21 14:58 #18701 Slava: とはならないはずです。 1.ユニオンはいつから導入される予定ですか?2.typedefも入力されるのでしょうか? 3.基本型へのポインターは導入される予定なのか? Slava 2017.04.21 15:02 #18702 Konstantin: 1.ユニオンはいつから導入される予定ですか?2.unionでtypedefも導入されるのでしょうか? 3.基本型へのポインタの導入は予定されていますか?1.もうすぐです。コンパイラの準備はすべて整ったので、今テストしているところです。テスト終了後、公開する予定です。2.いつになるかは未定です。3.いいえ、予定していません。 Marat Sultanov 2017.04.21 17:48 #18703 受信配列のサイズがコピーするサイズ より大きい場合でも、何らかの理由でCopyTime(またはそれに類するもの)は受信配列のサイズを変更 します。皆さん、正常ですか?昔からこうだったのでしょうか?それともバグ?例えば、こんな感じです。static datetime TimeBuf[]; if (ArraySize(TimeBuf) == 0) ArrayResize(TimeBuf, 10); CopyTime(_Symbol, _Period, 0, 1, TimeBuf);CopyTime 関数は、TimeBuf 配列を 1 にリサイズします。これは原理的に間違っています。それは、データが配列の先頭にコピーされ、その結果、最適化のポイントがルートで失われてしまうということです。 Slava 2017.04.21 17:57 #18704 Marat Sultanov:受信配列のサイズがコピーするサイズ より大きい場合でも、何らかの理由でCopyTime(またはそれに類するもの)は受信配列のサイズを変更 します。皆さん、正常ですか?昔からこうだったのでしょうか?それともバグ?例えば、こんな感じです。CopyTime 関数は、TimeBuf 配列を 1 にリサイズします。これは原理的に間違っています。それは、データが配列の先頭でコピーされるため、最適化のポイントがルートで失われてしまうことです。あなたの配列はダイナミックですね。つまり、サイズが可変であること。寸法を角括弧で指定していないため。staticは、Expert Advisorがロードされるときにこの配列のオブジェクトが構築され、アンロードされるときに破棄されることを意味します。 Marat Sultanov 2017.04.21 18:20 #18705 Slava:あなたの配列はダイナミックですね。つまり、サイズが可変であること。その寸法を角括弧で指定していないためstaticは、この配列のオブジェクトがEAのロード時に構築され、アンロード時に破棄されることを意味します。申し訳ありませんが、的外れなことを言っています。グローバルスコープで配列を宣言させるdatetime _TimeBuf[]; void OnTick() {}それから。1) 初回は、何本目のバーがあるかを配列にコピー(CopyTime)します。datetime _TimeBuf[]; int _BarsCountReserveSize; void OnTick() { int BarsCount = Bars(_Symbol, _Period); if (ArraySize(_TimeBuf) == 0) { if (_BarsCountReserveSize <= BarsCount) _BarsCountReserveSize = (int)ceil(BarsCount*1.3); ArrayResize(_TimeBuf, BarsCount, _BarsCountReserveSize); CopyTime(_Symbol, _Period, 0, BarsCount, _TimeBuf); } }2) 最適設計によると、新しいバーが 現れたら、すべてのバーをコピーしたくないですよね?そこで、最後の2つの変更された小節だけをコピーすることにしました。datetime _TimeBuf[]; int _BarsCountReserveSize; void OnTick() { int BarsCount = Bars(_Symbol, _Period); if (ArraySize(_TimeBuf) == 0) { _BarsCountReserveSize = (int)ceil(BarsCount*1.3); ArrayResize(_TimeBuf, BarsCount, _BarsCountReserveSize); CopyTime(_Symbol, _Period, 0, BarsCount, _TimeBuf); } else { int RequiredCount = BarsCount - ArraySize(_TimeBuf) + 1; ArrayResize(_TimeBuf, RequiredCount, _BarsCountReserveSize); CopyTime(_Symbol, _Period, 0, RequiredCount, _TimeBuf); } }3) 結局、私たちの最適化はうまくいきません。なぜなら、CopyTimeは 配列のサイズを変更し、サイズ =RequiredCountと し、さらに予備サイズも失うからです(CopyTimeは それを意識していません)。 Marat Sultanov 2017.04.21 18:28 #18706 CopyTimeが 配列の終端から始端に直接コピーした場合は、このような事態は起こりません。をその場で確認することができます。_TimeBuf[0] = D'2017.01.01'; _TimeBuf[1] = D'2017.01.02'; _TimeBuf[2] = D'2017.01.03';それをconst int ArrSize = ArraySize(_TimeBuf); _TimeBuf[ArrSize-3] = D'2017.01.01'; _TimeBuf[ArrSize-2] = D'2017.01.02'; _TimeBuf[ArrSize-1] = D'2017.01.03'; Slava 2017.04.21 18:33 #18707 コピー関数は常に動的配列の サイズを変更してきました。大きいサイズにも、小さいサイズにも。しかし、クエリーの結果として与えられるレコードの数とは、常に明確な対応関係があった。あなたの場合、元のクエリを動的にリサイズ可能な配列に変更しました。一度に1つの要素を要求する他のすべてのリクエストは、あらかじめ定義されたサイズの配列(datetime _TimeBuf1[1])で行うため、再分配は行われない。受信した要素を大きな動的配列に自己再配置する。 Marat Sultanov 2017.04.21 18:39 #18708 だから、いつもそうで、当たり前なんです。なるほど。ご返信ありがとうございました拡大することは意識していましたが、要求されたデータのサイズに縮小することは意識していませんでした。これでわかる!ありがとうございます。 Aleksey Vyazmikin 2017.04.22 13:18 #18709 MT4ビルド1065USDJPY TF M15のテストを結果ログから削除してください。406 2014.11.28 20:30 sell 18 5.50 118.641 0.000 117.015 0.00 521 2014.12.09 17:15 t/p 18 5.50 118.386 0.000 118.386-148.95 損失はどのようにして発生するのでしょうか? fxsaber 2017.04.23 07:23 #18710 -Aleks-:損失はどのようにして発生するのでしょうか? スワップする。 1...186418651866186718681869187018711872187318741875187618771878...3185 新しいコメント 取引の機会を逃しています。 無料取引アプリ 8千を超えるシグナルをコピー 金融ニュースで金融マーケットを探索 新規登録 ログイン スペースを含まないラテン文字 このメールにパスワードが送信されます エラーが発生しました Googleでログイン WebサイトポリシーおよびMQL5.COM利用規約に同意します。 新規登録 MQL5.com WebサイトへのログインにCookieの使用を許可します。 ログインするには、ブラウザで必要な設定を有効にしてください。 ログイン/パスワードをお忘れですか? Googleでログイン
とはならないはずです。
1.ユニオンはいつから導入される予定ですか?
2.typedefも入力されるのでしょうか?
3.基本型へのポインターは導入される予定なのか?1.ユニオンはいつから導入される予定ですか?
2.unionでtypedefも導入されるのでしょうか?
3.基本型へのポインタの導入は予定されていますか?1.もうすぐです。コンパイラの準備はすべて整ったので、今テストしているところです。テスト終了後、公開する予定です。
2.いつになるかは未定です。
3.いいえ、予定していません。
受信配列のサイズがコピーするサイズ より大きい場合でも、何らかの理由でCopyTime(またはそれに類するもの)は受信配列のサイズを変更 します。
皆さん、正常ですか?昔からこうだったのでしょうか?それともバグ?
例えば、こんな感じです。
CopyTime 関数は、TimeBuf 配列を 1 にリサイズします。
これは原理的に間違っています。
それは、データが配列の先頭にコピーされ、その結果、最適化のポイントがルートで失われてしまうということです。
受信配列のサイズがコピーするサイズ より大きい場合でも、何らかの理由でCopyTime(またはそれに類するもの)は受信配列のサイズを変更 します。
皆さん、正常ですか?昔からこうだったのでしょうか?それともバグ?
例えば、こんな感じです。
CopyTime 関数は、TimeBuf 配列を 1 にリサイズします。
これは原理的に間違っています。
それは、データが配列の先頭でコピーされるため、最適化のポイントがルートで失われてしまうことです。
あなたの配列はダイナミックですね。つまり、サイズが可変であること。寸法を角括弧で指定していないため。
staticは、Expert Advisorがロードされるときにこの配列のオブジェクトが構築され、アンロードされるときに破棄されることを意味します。
あなたの配列はダイナミックですね。つまり、サイズが可変であること。その寸法を角括弧で指定していないため
staticは、この配列のオブジェクトがEAのロード時に構築され、アンロード時に破棄されることを意味します。
申し訳ありませんが、的外れなことを言っています。
グローバルスコープで配列を宣言させる
それから。
1) 初回は、何本目のバーがあるかを配列にコピー(CopyTime)します。
2) 最適設計によると、新しいバーが 現れたら、すべてのバーをコピーしたくないですよね?そこで、最後の2つの変更された小節だけをコピーすることにしました。
3) 結局、私たちの最適化はうまくいきません。なぜなら、CopyTimeは 配列のサイズを変更し、サイズ =RequiredCountと し、さらに予備サイズも失うからです(CopyTimeは それを意識していません)。
CopyTimeが 配列の終端から始端に直接コピーした場合は、このような事態は起こりません。
をその場で確認することができます。
それを
コピー関数は常に動的配列の サイズを変更してきました。大きいサイズにも、小さいサイズにも。しかし、クエリーの結果として与えられるレコードの数とは、常に明確な対応関係があった。
あなたの場合、元のクエリを動的にリサイズ可能な配列に変更しました。一度に1つの要素を要求する他のすべてのリクエストは、あらかじめ定義されたサイズの配列(datetime _TimeBuf1[1])で行うため、再分配は行われない。受信した要素を大きな動的配列に自己再配置する。
だから、いつもそうで、当たり前なんです。なるほど。ご返信ありがとうございました
拡大することは意識していましたが、要求されたデータのサイズに縮小することは意識していませんでした。これでわかる!ありがとうございます。
MT4ビルド1065
USDJPY TF M15のテスト
を結果ログから削除してください。
406 2014.11.28 20:30 sell 18 5.50 118.641 0.000 117.015 0.00
521 2014.12.09 17:15 t/p 18 5.50 118.386 0.000 118.386-148.95
損失はどのようにして発生するのでしょうか?