intCopyRates(
string symbol_name, // имя символаENUM_TIMEFRAMES timeframe, // периодint start_pos, // откуда начнем int count, // сколько копируемMqlRates rates_array[] // массив, куда будут скопированы данные
);
intCopyRates(
string symbol_name, // имя символаENUM_TIMEFRAMES timeframe, // периодdatetime start_time, // с какой датыdatetime stop_time, // по какую датуMqlRates rates_array[] // массив, куда будут скопированы данные
);
//Код по третьему варианту, может я что-то упустил?
//Так ругается - 'CopyRates' - ambiguous call to overloaded function
Copied = CopyRates(Symbol(),PERIOD_M1,0,TimeCurrent(),Rates);
//Так нет, но копирует только 10000 баров
Copied = CopyRates(Symbol(),PERIOD_M1,(datetime)0,TimeCurrent(),Rates);
どう違うのですか?
どう違うのですか?
どう違うのですか?
文字通り、違うんです。
質問は何ですか?
1.ポストにねじ込まれたスクリプトを取り、チャート上で実行する。スクリプトは、一定数のバーを コピーし、最も古い20本のバーの 巻き戻しを実行する必要があります。
この方法は、(チェックがなく、エラーのトラップがいろいろあるのはわかるのですが、それでも)
そのため、私が指定したパラメータ(バーの数とM1)でスクリプトは実行されますが、時々、正常に動作することを拒否します。ある一定の小節数(368700以上出た)で発生する。
368800では、バーがかなり少なくなります(ただし、368732 / 368735 / 368736など、常にこの近辺の異なる数値が返されます)。
しかし、360000でも常に正しく動作するわけではなく、10000本のバーをコピーしただけの場合もありました。
2.2つの日付が指定されるバリアントは本当にショックでした。 最初の日付として0を受け入れないだけでなく(私の意見ではそれは理にかなっています)、10000までコピーされます。
0がstart_timeの ようにintで あれば理解できるのですが(私も経験があります)、関数のオーバーロードとコンパイラがあることを「理解していない」ことが問題なのです。しかし、だからこそ、10000本の棒は「100万分の1」と呼ばれる別問題なのです。
私たちが理解している10000分足は、私の理解が正しければ、2011年を超えることはありません(そして、上記のすべてから明らかになるように、少なくとも360000は確実にロードされます)。
追記
同時に、ノーマルと「バギー」(スクリプトが10000本しかコピーしない場合)では、速度が何倍も違うのです。
ピーピーエス
曖昧さなどの「バカ」な状況を避けるため、ヘルプのある部分(というかその例)を論理的な結論に導くようにしてください。
チェックは追加で入れるべき、など。また、この場合、パラメータの記述にクロスリファレンスがなく(少なくともtimeframeでは)、start_timeと start_posの 型が何であるかは不明である。私はdatetimeと推測しています(そうでなければ、なぜコンパイラは start_timeとして0を誓うのでしょ うか)。
これはバグなのか、私の技量不足なのか?
ゼロバーからナビゲートすると、チャートがカクカクする。ナビゲーションとアップデートの間にわざとスリップを挿入して、問題点を浮き彫りにしました。しかし、スリップが無くてもバグは存在します。ChartNavigate()は、まずチャートをゼロに移動し、その後元に戻すことが判明しました。また、毎回行うわけではありません。
少なくとも、ChartNavigate()を呼び出す たびにバグがあるわけではなく、スリップせずに実行したときに現れるということです。
これはバグなのか、私の技量不足なのか?
ゼロバーからナビゲートすると、チャートがカクカクする。ナビゲーションとアップデートの間にわざとスリップを挿入して、問題点を浮き彫りにしました。しかし、スリップが無くてもバグは存在します。ChartNavigate()は、まずチャートをゼロに移動し、その後元に戻すことが判明しました。また、毎回行うわけではありません。
少なくとも、ChartNavigate()を呼び出す たびにバグがあるわけではなく、スリップせずに実行したときに現れるということです。
ChartNavigate関数が動作しない、助けてください。
では、この例の中で、私のコードと根本的に異なる点は何でしょうか?
ただ、あなたのコードではナビゲーションが一度呼ばれるだけですが、私は(ユーザーのアクションに関係なく)常に目的のバーでチャートを保持する必要があります。
あなたの例を試して、チャート更新なしで私のコードを実行しましたが(プログラムは多くのグラフィック変換を使用するので、それは私にとっては重要ですが)、それもうまくいきませんでした。ジャークが残っている。やはり同じポイントまでナビゲートして、ゼロバーまでナビゲートしています。
また、現在のバーからのナビゲーションは、プログラム実行中にユーザーが不注意にチャートを動かしてしまう可能性があるため、受け入れがたいものだと思います。
ストーリーは全部ひっくるめて?
では、この例の中で、私のコードと根本的に異なる点は何でしょうか?
ただ、あなたのコードではナビゲーションが一度呼ばれるだけですが、私は(ユーザーの操作に関係なく)常に目的のバー上にチャートを維持する必要があります。
あなたの例を検討した後、私のコードをチャートリフレッシュなしで実行しましたが(プログラムも多くのグラフィック変換を使用するので、私にとっては重要ですが)、それも役に立ちませんでした。ジャークが残っている。やはり同じポイントまでナビゲートして、ゼロバーまでナビゲートしています。
また、現在のバーからのナビゲーションは、プログラム実行中にユーザーが不注意にチャートを動かしてしまう可能性があるため、受け入れがたいものだと思います。