int i=0;
if( initial ){
for( i=0; i<ArraySize(pairs); i++){
if(pairs[i].rates[0].time == 0) return(rates_total);
}
initial=false;
}
// My change to recopy rates every tick by adding a loop at starting of OnCalculate() to do this// AS FMIC says, ArrayCopyRates needs the array without content, // then before recopy, free the array.for(i=0; i<ArraySize(pairs); i++){
ArrayFree(pairs[i].rates);
ArrayCopyRates(pairs[i].rates, pairs[i].symbol, PERIOD_CURRENT);
}
他のチャートからデータ(シンボル名やタイムフレームが現在のものと異なる)を要求した場合、対応するチャートがクライアント端末で開かれていない可能性があり、必要なデータはサーバーから要求する必要があります。この場合、変数 last_error にエラー ERR_HISTORY_WILL_UPDATED (4066 - request history data are under updating) が格納され、再度リクエストする 必要があります。
大きなヒントは「でも、どうしたらいいのかわからない」でした。
OPから何の反応もないのは、何か問題があることを示唆しています。私の推測では、OPは理解不足でイライラして、このスレッドを放棄したのだと思います。数年前、私も同じようなことをした時期がありました。なぜなら、誰も私がいかに初心者であるかを理解するのに時間をかけず、絶えず例を投稿し、当時の私の理解を完全に超えた議論をしていたからです。
あなたの視点は正しいかもしれませんが、一方で私は、ドキュメントをざっと見れば簡単に答えが見つかるような質問をたくさん見てきましたし、何度もそのような質問に答えるのは本当に馬鹿らしいことだと感じています。
さらに、ここにはgoogleと検索オプションがあります。もし私が何かをする方法を知らないなら、これが私の次のステップで、自分で問題を解決しようとすることです。
このスレッドのトピックの場合、私は多通貨システムをコーディングする方法を知らないので、私はgoogleに答えるか、すでに存在するコードをここで検索していたことでしょう。
しかし、その一方で、ドキュメントを見ればすぐに答えが見つかるような質問を何度も何度もしているうちに、自分がバカに思えてきたのです。
さらに、ここにはgoogleと検索オプションがあります。もし私が何かをする方法がわからなければ、これが私の次のステップで、自分で問題を解決しようとすることです。
このスレッドのトピックの場合、私は多通貨システムをコーディングする方法を知らない私は、すでに既存のコードをgoogleやここで検索に答えていただろう。
フィードバックありがとうございました、そしてそれが肯定的であったことを嬉しく思います(笑)
私はこのような状況での私の出方を心配している人に申し訳ありません。私は本当に平和を愛するドラマのないタイプの人間で、納得のいかないことはたいてい無視します。
こんにちは、皆さん。
長い間、ここで活動せずに申し訳ありません。私は仕事といくつかのプロジェクトで忙しい旅行していた、しばらくの間、プロジェクトを脇に残していた。
ポストの更新を読んだ後、私は明らかにするためにいくつかのポイントがあります。
以下、インジケーターのコードです。
RefreshRates() を使ってみましたが、やはり同じ結果でした...同じウィンドウのペアだけが動作し、他のペアは更新されません。
RefreshRates() は、MqlRatesの データとは関係ありません。WHRoederの サンプルコードは、Pre-600のビルドでのみ有効です。最新のビルドでは、ArrayCopyRates() の戻りコード、エラーコード、Rates配列のサイズ、WHRoederの 指摘したtime属性の有効性など、私の投稿で述べた様々な 点を確認する必要があります。
PS!もし、英語で困っているのなら、私にPMを送ってください。私はポルトガル人です(ポルトガル)。
こんにちは、皆さん。
OnCalculate関数に レートの "再コピー "を入れてテストしてみました。動作しているように見え、エラーも返さない。
私はこれが私が必要とするものを行うための最良の方法であるかどうかはわからないが、どうやらそれは動作しており、エラーなしで動作しています。
このスレッドを見ている人たちに、最新情報をお知らせします
彼は英語が苦手で、私たちはポルトガル語を話すので、私はPMでOPのコードの修正を手伝っています。テストでは、"ArrayCopyRates() "関数で起こっている別の "おかしい "ことに気づきました。EAでMqlRates 配列を"ArrayCopyRates() "で使用する場合、データ配列は常に現在の状態を報告する仮想のものであり、データは常に新鮮である。
しかし、Indicatorの場合はそうではないようです。配列は仮想的なコピーではなく、「ArrayCopyRates()」が呼ばれた瞬間に設定された静的なコピーになっています。シンボルがチャートシンボルと異なる場合、データが更新されない。チャートと同じシンボルであれば、配列のデータは「ライブ」で期待通りに更新されますが、別のシンボルの場合は静的コピーとなります。
したがって、これをインディケータで動作させるには、OnCalculate()イベントを呼び出すたびに、新しいデータが必要であれば、"ArrayCopyRates()"関数を呼び出す必要があります。
皆さん、こんにちは。
これは、私が後で行うのと(ほぼ)同じことですが、違いは、私はArrayCopyRatesの前にArrayFreeを実行することです...そして私は、あなたが私を助けた検証を行いません。
FMICが助けてくれた最終的なコードはこちらです。インジケーターのコードで正常に動作しています..: