ヒストリカルファイル(.hst)のシンボル名を変更するスクリプト

取得したヒストリカルデータを他社のMT4に流用する場合、シンボル名が"USDJPY-a01"とか"EURUSDpro"とか通貨ペア以外の文字が付加されていると、そのままではテストで使えません。
これはヒストリカルのファイル名の変更だけでは不十分で、バイナリエディタでデータヘッダー部のシンボル名も書き換える必要があるためです。
ヒストリーセンターでインポートすれば使えるようになりますが、かなり面倒です (^_^;)

そこでファイル名とデータヘッダー部のシンボル名を同時に書き換えるVBScriptを作ってみました。

hstファイルのシンボルに文字を付加.vbs
Option Explicit

'----------------------------------------------------------------------------
' ヒストリカルデータ(.hst)のシンボル名に"-a01"などの文字を付加したり
' 外したりするVBScript
' スクリプトファイルに.hstファイルをドラッグアンドドロップして使用する
' 出力先はスクリプト実行フォルダに作成される work フォルダの中
'----------------------------------------------------------------------------


Const adTypeBinary = 1
Const adTypeText = 2
Const adSaveCreateOverWrite = 2
Const adReadAll = -1

Dim supplement, supBin ' シンボルに付加する文字、文字のバイナリ配列
Dim workFolder, workFile ' 出力フォルダ、出力ファイル
Dim objFs ' ファイル操作(FileSystemObject)
Dim objStBin, objStIn, objStOut ' バイナリ操作(ADODB.Stream)
Dim period ' 時間軸
Dim i

' 引数が無いなら終了
If WScript.Arguments.Count < 1 Then WScript.Quit

' シンボルに付加する文字の入力
supplement = InputBox("シンボルに付加する文字を入力して下さい(付加しない時はブランクを入力)")
If TypeName(supplement) = "Empty" Then WScript.Quit

Set objFs = CreateObject("Scripting.FileSystemObject")
Set objStBin = CreateObject("ADODB.Stream")
Set objStIn = CreateObject("ADODB.Stream")
Set objStOut = CreateObject("ADODB.Stream")

' 出力フォルダ作成
workFolder = objFs.BuildPath(objFs.GetFile(WScript.ScriptFullName).ParentFolder.Path, "work")
If Not objFs.FolderExists(workFolder) Then objFs.CreateFolder (workFolder)

' 文字のバイナリ配列作成
objStBin.Type = adTypeText
objStBin.Charset = "shift_jis"
objStBin.Open
objStBin.WriteText Left(supplement & String(6, vbNullChar), 6)
objStBin.Position = 0
objStBin.Type = adTypeBinary
supBin = objStBin.Read(6)
objStBin.Close

' hstファイル書き換え
For i = 0 To WScript.Arguments.Count - 1
If Right(WScript.Arguments(i), 4) = ".hst" Then
If objFs.FileExists(WScript.Arguments(i)) Then

' .hstファイルを開く
objStIn.Type = adTypeBinary
objStIn.Open
objStIn.LoadFromFile WScript.Arguments(i)

' 出力側のストリームを開く
objStOut.Type = adTypeBinary
objStOut.Open

' 時間軸設定を取得(手抜きで2バイトのみ)
objStIn.Position = 80
period = CLng("&H" & Hex(AscW(objStIn.Read(2))))

' 出力ファイル名を指定
workFile = objFs.GetBaseName(WScript.Arguments(i))
workFile = Left(workFile, 6) & supplement & CStr(period) & ".hst"
workFile = objFs.BuildPath(workFolder, workFile)

' 全てコピー
objStIn.Position = 0
objStOut.Write objStIn.Read(adReadAll)

' hstのシンボル名後半6バイト更新
objStOut.Position = 74
objStOut.Write supBin

' 出力ファイル保存
objStOut.SaveToFile workFile, adSaveCreateOverWrite
objStOut.Close
objStIn.Close

End If
End If
Next

Set objStBin = Nothing
Set objStOut = Nothing
Set objStIn = Nothing
Set objFs = Nothing

MsgBox "出力しました。workフォルダを確認して下さい", vbInformation



【利用方法】
(1) hstファイルを選択しVBScriptファイルへドラッグアンドドロップ(複数選択可)
(2) InputBoxが出るのでシンボルに付加する文字("-a01"等)を指定。
(3) VBScriptの実行フォルダのworkフォルダに変換したhstファイルが保存される
(4) 変換したhstファイルを、MT4のヒストリカルデータ格納フォルダに移動
  ※hstファイルを移動する前にMT4は閉じて下さい


VBScriptのバイナリ操作は以下のブログを参考にしました。多謝!
VBScriptでバイナリファイルを読み書きする: ここにはいないボクへの伝言
VBScriptでバイナリを読む2


なお不具合等ありましたらコメント下さい。nya!

コメント

Secret

プロフィール

nekonote

Author:nekonote

EAを作るのが趣味になってしまったらしい。

あとマニアックな運用とかetc...その時の気分で書き殴る(?)
そんなブログ

※当ブログ記事へのリンクはご自由にどうぞ

 
運用は…fx-onのみんなのMT4に公開しているかも?
fx-on 通常会員ページ
fx-on 出品者ページ

最新記事
最新コメント
月別アーカイブ
カテゴリ
検索フォーム
ブログランキング
にほんブログ村 為替ブログ システムトレード 自作EA派へ





QRコード
QR
RSSリンクの表示
リンク
FX情報サイト
 優秀トレーダーの投資法をゲット!
FX投資情報コミュニティfx-on.com


国内MT4取扱会社
外為ファイネスト カコテン iOsMA (type DI) EURAUD タイアップキャンペーン

アヴァトレード・ジャパン株式会社 カコテン iOsMA (type DI) EURAUD タイアップキャンペーン

FOREX.com×タイアップキャンペーン☆Beatrice-07 FXTF×ForexSolidタイアップキャンペーン



自作EA紹介


EAフォワード集計結果
海外MT4業者
海外業者を選ぶ際は、まず金融庁の「注意喚起」を熟読して下さい。無登録業者で事故っても自己責任ですよ!
自分はゲムトレード&GEMFOREXに突撃してみましたw




自分もカコテンシリーズを幾つか出品しています。 運用結果でネタが集まれば時々記事にします。

ゲムトレードはEAの将来価値をリスクヘッジするには良い仕組みを提供していると思います。ただし本当に実力のあるEAはfx-on等から買った方が良いでしょう。
取引明細には現れませんがIBのような仕組みでゲムトレードへ報酬が渡っていますので、単一EAの長期運用ではデメリットが成績に現れると思われます。

※繰り返しますが海外業者でトラブっても自己責任です。お忘れなく!
FX専用VPS
レンタルサーバーなら使えるねっと



みんなのMT4
紫色:リアル口座
水色:デモ口座
ねこぱんち | fx-on.com
ねこぱんちMAXでも | fx-on.com
ねこのまえあし | fx-on.com
€$ XM demo | fx-on.com
£$ FxPro demo | fx-on.com
€¥ IFC Markets demo 2nd! | fx-on.com
£¥ IC Markets demo  | fx-on.com
$¥ MGK Global demo | fx-on.com
BigBoss demo AUDJPY | fx-on.com
€x LandFX demo | fx-on.com
KAKO10 iIchimoku リアル OANDA | fx-on.com
KAKO10 iIchimoku デモ FXTF | fx-on.com
KAKO10_iMA(H27.5~) | fx-on.com
KAKO10 iMA デモ Axiory(運用終了) | fx-on.com
KAKO10 iMA デモ Axiory新鯖 | fx-on.com
Ava demo iOsMA方向性スイング(運用終了) | fx-on.com
カコテン iOsMA (type DI) デモ Centrade | fx-on.com
カコテン iMomentum (type DI) デモ Arena | fx-on.com
瞬殺!!! NCSEC demo ※運用終了 | fx-on.com
GEMFOREX demo 新サーバーお試し ※破綻 | fx-on.com
 | fx-on.com
 | fx-on.com
 | fx-on.com
 | fx-on.com