価格データエクスポートインジケータ
前にブログにアップロードしていたマルチチャートでリアルタイム価格データを指定パスに落とすスクリプトを再度公開します.
MC には QM アプリが付属するため, そちらでも定期的な価格データの更新は可能なのですが, 高頻度のリアルタイムデータを更新することはできないため, このようなスクリプトが必要になります.
コード
コードは以下になります. Git にうpしておきました.
// ---- function: export price data. input: dir(stringSimple); // ---- symbol name. var: strL(""), strR(""), sym(""); sym = getsymbolname; if category = 12 then begin value1 = InStr(sym, "/"); value2 = StrLen(sym); strL = LeftStr(sym, value1-1); strR = RightStr(sym, value2 - value1); sym = text(strL, strR); end; // ---- time frame. var: tf_num(""), tf_value(0), tf_type(""); tf_num = numToStr(Barinterval, 0); tf_value = barType_ex; switch(tf_value) begin case is = 1: tf_type = "Ticks"; case is = 2: tf_type = "Minutes"; case is = 3: tf_type = "Hours"; case is = 4: tf_type = "Days"; case is = 5: tf_type = "Weeks"; case is = 6: tf_type = "Months"; case is = 7: tf_type = "Years"; end; // ---- init data path. var: file_name(""), file_path(""); file_name = sym + "-" + tf_type + "-" + tf_num + ".txt"; file_path = dir + file_name; once fileDelete(file_path); if barNumber = 1 then begin Print(file(file_path), "dttm", ",", "open", ",", "high", ",", "low", ",", "close", ",", "volume" ); end; // ---- export price data. var: adj_date(""), adj_time(""), adj_datetime(""); adj_date = formatDate("yyyy/MM/dd", dateTime); adj_time = formatTime("HH:mm:ss", dateTime); adj_datetime = text(adj_date, " ", adj_time); if barNumber >= 1 then begin Print(file(file_path), adj_datetime + ", " + NumToStr(Open, Digits) + ", " + NumToStr(High, Digits) + ", " + NumToStr(Low, Digits) + ", " + NumToStr(Close, Digits) + ", " + NumToStr(Volume, Digits) ); end; f_datOut = true; // ---- eof.
使用方法
(2020/7/20 コードを編集しました.)
上記は関数コードです. 使用する場合 PLE の新規作成から
function
ファイルを指定してコードを入力しないとエラーになります.関数の返値には
truefalse
を指定してください.ファイル名は
f_datOut
としてください.
次にこの関数を呼び出すインジケータソースコードは以下のようになります.
// ---- data export. input: datOut(true), pathDat("yourPath"); if datOut then f_datOut(pathDat); // ---- eof.
パラメータ pathDat
にデータ尾を保存したいフォルダのパスを入力してください.
C:\DataSaveFolder\
の形式で入力する必要があります. エンコードの関係で入力すると \
が ¥
として表示されますが問題ありあせんのでそのまま実行してください.
このコードは LMAX チャートから為替データを取り出すために作ったので, 他の環境でどのように動作するかは知りませぬ. なにか気になる点などありましたらTwitterの方に連絡ください.
注意点
挿入先のチャートについてですが, このスクリプトは基本的に M1 か H1 または D1 で実行してください.
MC は分足単位か, 日足単位のデータをベースに全てのタイムフレームのレートを計算します. 他の時間足は全てそれらをコンバートして計算されているので, 元となる価格データをソースにしないと時間情報のエラーが発生する可能性があります.
もう一点.
特に 1 分足でこのスクリプトを実行すると MC の動作がかなり重くなることが懸念されます. 主にキャッシュが累積するためで, メモリが足りなくなる可能性があります. できれば 16GB 以上のメモリを積んだマシンで実行してください.