2011年10月27日

MT4用Ku-chartをCSV化するスクリプト

タイトルまんまですが。

================================================================
// パラメーター画面呼び出し
#property show_inputs
// 外部パラメータ
extern datetime StartTime; // 開始日時
extern datetime EndTime; // 終了日時
extern string customind = "Ku-chart_Z76";//呼び出し先indicatorのファイル名 
extern int iperiod = 1440;//呼び出し先indicatorの時間足 1,5,15,30,60,240,1440,10080,43200

double EURAV,USDAV,JPYAV,CHFAV,GBPAV,AUDAV,CADAV;

// スタート関数
int start()
{
// ファイルオープン
int handle = FileOpen(Symbol()+Period()+".csv", FILE_CSV|FILE_WRITE, ',');
if(handle < 0) return(-1);

// 出力範囲の指定
int iStart = iBarShift(NULL, 0, StartTime);
if(EndTime == 0) EndTime = TimeCurrent();
int iEnd = iBarShift(NULL, 0, EndTime);

// ファイル出力
FileWrite(handle, "Date", "Time", "Open", "High", "Low", "Close", "EURAV", "USDAV", "JPYAV", "CHFAV", "GBPAV", "AUDAV", "CADAV");
for(int i=iStart; i>=iEnd; i--)
{
string sDate = TimeYear(Time[i]) + "/" + TimeMonth(Time[i]) + "/" + TimeDay(Time[i]);
string sTime = TimeHour(Time[i]) + ":" + TimeMinute(Time[i]);
double EURAV = iCustom(NULL, iperiod, customind, 0, i);
double USDAV = iCustom(NULL, iperiod, customind, 1, i);
double JPYAV = iCustom(NULL, iperiod, customind, 2, i);
double CHFAV = iCustom(NULL, iperiod, customind, 3, i);
double GBPAV = iCustom(NULL, iperiod, customind, 4, i);
double AUDAV = iCustom(NULL, iperiod, customind, 5, i);
double CADAV = iCustom(NULL, iperiod, customind, 6, i);


FileWrite(handle, sDate, sTime, Open[i], High[i], Low[i], Close[i], EURAV, USDAV,JPYAV,CHFAV,GBPAV,AUDAV,CADAV);
}

// ファイルクローズ
FileClose(handle);

MessageBox("End of Output csv file");

return(0);
}
================================================================

このスクリプトでエクセル化した『Ku-chart』です。

kuchart20111027.JPG

さぁ、解析しませう。

ちなみに、CSVファイルは 『・・・\MetaTrader 4\experts\files 』 に生成されます。
さらに、外部変数を書き換えれば『汎用スクリプト』としてもツカエます。


*追記*
実はSeesaaは直接ファイルをアップできる仕様でした(汗)
ダウンロード可能としましたので、 必要な方は 右クリック → 名前をつけてリンク先を保存 してください。

KuChart_CSV_Output(7Pair).mq4



ラベル:Ku-Chart
posted by Curry_FX at 00:43| Comment(8) | Ku-chart | このブログの読者になる | 更新情報をチェックする
この記事へのコメント
はじめまして。
↑の文章をコピーしてMt4のScriptsから新規にScriptを作成を選び文章をペースト&コンパイルでエラーがないのを確認しました。
そのあとに5分足の設定で出力してみたところ、4本値は上手く取得できてるのですが、Ku-chartのそれぞれのAVの値は全部2147483647という同じ値になり、上手く取得できませんでした。

ku-chart自体は上手く表示されてるので、どこが悪いのか分からず困っています。

どこかおかしいとこがあるのでしょうか??
Posted by はっぱ at 2011年11月13日 00:01
はっぱさん、こちらは5分足でも動いてます。。。

日時設定で Ku-chart のデータが欠損しているところを指定しちゃうと "その数字" が入っちゃいますけど、データがない日時まで指定したりしてないですか?
あとスクリプトのドロップチャートはちゃんと5分足ですよね?
Posted by カレーマン at 2011年11月13日 04:05
extern int iperiod = 1440;//呼び出し先indicatorの時間足

↑これが原因ではないでしょうか?もしも違ってたらすいません。
Posted by 熟ちょう at 2011年11月16日 10:06
熟ちょうさん、フォローどうもです。

そこはあってなくても動いちゃうことがあるみたいですね。
iCustomの仕様、よくワカランです。

あともう1つ考えられるとしたら、Ku-chart側のMaxbarの上限に達してしまっていることですね。
デフォだと2000なので、5分足で遡れるのは7日分まで。
これを大きくしてみるとか。

・・・もう見てないか(笑)
Posted by カレーマン at 2011年11月18日 11:25
そうですか。自分の場合その辺を弄ったらデータが変わったようだったのでつい書いてしまいました。
実は自分も豊嶋さんの「メタトレーダー実践プログラミング」を読んで同じようなスクリプトを作ってバックテストしていましたが、インジ名を外部変数に出来るところは気づかなかったです。こうすれば、派生型のインジとか、似たような構造のインジでも使いまわせそうですね。
勉強になりました><
Posted by 熟ちょう at 2011年11月19日 06:31
熟ちょうさん、自分もまだシロート同然ですが、マーケットがATM同然になる日までがんばりませう。
Posted by カレーマン at 2011年11月20日 21:06
返信が遅れすみません〜。

あれから結局原因が分からず、MT4を一度全部アンインストールして、インジケーターも再度新規にダウンしてやったところ上手くいきました!

どうもありがとうございます。

ちょうど過去1年分くらいのKu−chartの時系列を出力したいな〜と思ってたので助かりました!まだできていませんが(爆)

Posted by はっぱ at 2011年11月22日 00:14
はっぱさん、こんばんは。

相関だけならfaiさんが作成された ^L_Correlation_mod.mq4

また単体KuチャートのCSV化なら
同じくfaiさんの Ku-chart-Maker2.mq4

これらも便利でお勧めです。
Posted by カレーマン at 2011年11月23日 06:15
コメントを書く
お名前:

メールアドレス:

ホームページアドレス:

コメント:

×

この広告は180日以上新しい記事の投稿がないブログに表示されております。