for (count=1; count<=countstr; count++)
{
//----//---- if (count>=countstr) break;
}
そして、あなたの問題の根源。
void CreatFile()
{
string Filepatch="Analyse news\\"+"Symbol"+"_"+IntegerToString(periodMT)+".csv";
Comment("Creat a new file");
int file=FileOpen(Filepatch, FILE_WRITE|FILE_CSV);
FileWrite(file, "Symbol","Period","News","Data Time","Open","High","Low","Close");
int bar_index=iBarShift(symbolMT,periodMT,DateNews[count-1]);
//Чему равен в этот момент count?
//Для чего нужен был массив событий если в обработку попадает только одно событие?
//Функция iBarShift (так как вы используете) возвращает либо номер бара по времени либо ближайший номер бара если в истории есть пропуски
//Внимательно почитайте описание
int countBar=bar_index;
for(count=1; count<=countstr; count++)
{
countBar--;
FileWrite(file,symbolMT,periodMT,NameNews[count-1],DateNews[count-1],
DoubleToStr(iOpen(symbolMT,periodMT,countBar))
);
}
FileClose(file);
ExpertRemove();
}
まず目を引くのは、EAを普通のスクリプトとして使っている点です。どう違うのか、マニュアルを読んでみてください。あなたのタスクに適しているのは、エキスパートアドバイザーではなく、スクリプトです
次に、なぜこのデザインを 使うのか。
そして、あなたの問題の根源。
さて、最後にあなたは非常に多くの単純なプログラムで台無しにした、あなたがこのプログラムに何をしたいかを記述し、うまくステップバイステップでスクリプトを書くために試してみましょう!。
まず目を引くのは、EAを普通のスクリプトとして使っている点です。どう違うのか、マニュアルを読んでみてください。あなたのタスクに適しているのは、エキスパートアドバイザーではなく、スクリプトです
次に、なぜこのデザインを 使うのか。
そして、あなたの問題の根源。
そして最後に、簡単なプログラムで騒ぎすぎです。このプログラムに何を求めているかを記述して、一歩一歩スクリプトを書いてみましょう
Vitalyさん、ご返信ありがとうございます。
1)スクリプトの件ですが、了解しました。
2)さて、すべては単純で、私はforループを中断します。
3)Expert Advisorまたはスクリプトを作成して、特定の商品と時間枠の相場、特定のニュースを特定の日付と時間にダウンロードしたい のですが。
最終的にファイルに書き込んだ結果は、次のようになります。
そして、異なる楽器+時間枠+ニュースや日付で そうです。
もうひとつ、ニュアンスがあります。データが60分足でアンロードされた場合、気配値は16:00と15:00の時間枠に対応するはずです。
ニュースの時間枠が14:45なら、相場はその時間に対応するはずです。
1分~14:45
5分~14:45
15分~14:45
30分~14:30
60分~14:00
ご理解いただけたでしょうか?ありがとうございました。
もう一度、このループを見てください。変数カウントはfor文 自体で変更されるだけなので、このループではifは余計なだけです。
ここで、データをどのように処理するかを定義しておこう。ニュースファイルからニュースのパラメータを読み出し、データを加工して、引用符のファイルに書き込む方が論理的だと思われます。その後、1つのレコードのために再び配列を実行する必要があるニュースの配列を収集すると、さらに、非常に頻繁に配列の処理では、インデックスに関連するエラーの多くを作ることができる、合理的に見えることはありません。
もう一度、このループを見てください。変数カウントはfor文 自体で変更されるだけなので、このループではifは余計なだけです。
ここで、データをどのように処理するかを定義しておこう。ニュースファイルからニュースのパラメータを読み出し、データを加工して、引用符のファイルに書き込む方が論理的だと思われます。その後、再び1つのレコードの配列を実行することは合理的とは思えない、さらに、非常に頻繁に配列の処理では、インデックスに関連付けられている多くのエラーを作ることができるニュースの配列を収集します。
つまり、あらかじめ引用符でファイルを作成し、ニュースパラメータを追加しておくこと?
あらかじめ見積もりファイルを作成し、ニュースパラメータを追加しておくということですか?
ニュースファイルから読み込んで処理し、すぐに引用ファイルに書き 込むということを、ニュースファイル全体が処理されるまで繰り返すのです!あなたは私を理解していないのでしょう。
それを、配列だけでやろうとしている。そのようなコードはどのように書くのでしょうか?
なぜ、必要のないところで配列を使わなければならないのか?コードがシンプルであればあるほど、エラーは少なくなります。
このコードを通して、配列の扱い方を学んでいます。結局のところ、この作業は原理的に複雑なものではないのです。
Open "引用符は、すでに上の配列に格納されています。したがって、私は配列から必要な日付の引用符を取り出すだけでよいのです。
私はこのコードを通して、配列の扱い方を学んでいます。結局のところ、この作業は原理的に複雑なものではないのです。
Open "引用符は、すでに上の配列に格納されています。したがって、私はこの配列から必要な日付の引用符を引き出せばよいのです。