それでは、プログラムの解説をしていきます。
string UserName = "修一";
int handle;
string LogFileName;
string HistoryData;
string BuySellType;
LogFileName = "Log_" + UserName + ".csv";
最初の方は、使用する変数の宣言をやっています。
LogFileName は実際に作成されるcsvファイルの名前です。
特にこの名前にこだわる必要はないので、わかりやすい名前に変更してください。
handle = FileOpen(LogFileName, FILE_CSV|FILE_WRITE);
これは、ファイルを開く関数です。
後に出てくる、
FileClose とセットで使用します。
FileOpen では書き込みたいファイル名を指定し、その後ろにモードを設定します。
今回はCSVモードで、書き込みの設定をしています。
FileOpen が成功すると、ファイルの番号が返ってきますので、
それを
handle に覚えさせておき、後で使用します。
for (int i = 0; i < OrdersHistoryTotal(); i++)
{
if (OrderSelect(i, SELECT_BY_POS, MODE_HISTORY) == true)
{for 文で口座履歴データの個数を設定して、古いものから順に読み込ませます。
if (OrderType() == 0) BuySellType = "Buy";
if (OrderType() == 1) BuySellType = "Sell";
if (OrderType() == 2) BuySellType = "BuyLimit";
if (OrderType() == 3) BuySellType = "SellLimit";
if (OrderType() == 4) BuySellType = "BuyStop";
if (OrderType() == 5) BuySellType = "SellStop";
売買の注文の種類により、書き出す文字を設定します。
(
注文の種類に関する記事)
HistoryData = OrderTicket()
+","+ BuySellType
+","+ DoubleToStr(OrderLots(),2)
+","+ TimeToStr(OrderOpenTime(),TIME_DATE)
+","+ TimeToStr(OrderOpenTime(),TIME_SECONDS)
+","+ DoubleToStr(OrderOpenPrice(),5)
+","+ TimeToStr(OrderCloseTime(),TIME_DATE)
+","+ TimeToStr(OrderCloseTime(),TIME_SECONDS)
+","+ DoubleToStr(OrderClosePrice(),5)
+","+ OrderMagicNumber()
+","+ OrderComment()
+","+ AccountCompany();
ファイルに書き出す情報をまとめます。
CSVファイルなので、間に
"," を入れて、カンマ区切りの情報にします。
他のやり方もあるのですが、こちらの方が好きなのでこれで作成しています。
FileWrite(handle, HistoryData);
まとめたデータをファイルに書き込みます。
書き込みたいファイルの番号と、書き込みたいデータを設定します。
FileClose(handle); 最後にファイルを閉じて終了です。

ファイルを閉じる処理をやらないと、ファイルにアクセスできなくなることがありますので、
閉じる処理は忘れないようにしてください。