マーケットスピード II は高機能なのでトレーディングツールとして申し分ないのですが、データを取得して自分で解析やカスタマイズした処理をしたいので、マーケットスピード II の機能(の一部)を Excel 上で実現できるアドイン「マーケットスピード II RSS[2]」(以下 RSS と呼びます)も利用して、Excel 上でデータの加工などをしています。
Option Explicit
' ### 定 数 ##################################################################
' 取引時間関連
Public Const T_OPEN_MKT As Date = "09:00:00"
Public Const T_HEIKIN_START As Date = "09:02:00"
Public Const T_LUNCH_START As Date = "11:30:00"
Public Const T_LUNCH_END As Date = "12:30:00"
Public Const T_HEIKIN_END As Date = "15:24:00"
Public Const T_CLOSE_MKT As Date = "15:30:00"
Option Explicit
' ### Function 関数 ###########################################################
' _/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_
'
' 現在の時刻 (HH:MM:SS) を HH:MM 形式の文字列で取得
'
' _/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_
Public Function GetCurrentMinute(timeNow As Date) As String
Dim StrHH As String
Dim StrMM As String
StrHH = Format(Hour(timeNow), "00")
StrMM = Format(Minute(timeNow), "00")
GetCurrentMinute = StrHH & ":" & StrMM
End Function
' _/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_
'
' 一分前の時刻を HH:MM 形式の文字列で取得
'
' _/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_
Public Function GetPrevMinute(timeNow As Date) As String
Dim timePrev As Date
timePrev = DateAdd("n", -1, timeNow)
GetPrevMinute = GetCurrentMinute(timePrev)
End Function
動作確認用のマクロはワークシートに記述しています。
Microsoft Excel Objects Sheet1
Option Explicit
' ### プライベート定数(モジュールレベル) ####################################
' 列関連
Private Const P_TIME As Long = 5
Private Const P_OPEN As Long = 6
Private Const P_HIGH As Long = 7
Private Const P_LOW As Long = 8
Private Const P_CLOSE As Long = 9
Private Const P_VOLUME As Long = 10
Private Const H_OPEN As Long = 11
Private Const H_HIGH As Long = 12
Private Const H_LOW As Long = 13
Private Const H_CLOSE As Long = 14
Private Is1st As Boolean ' 最初の処理かを判定するフラグ
' ### Sub プロシージャ ########################################################
' _/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_
'
' 平均足テスト
'
' _/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_
Sub TestHeikinAshi()
Dim timeNow As Date
Dim strTargetTime As String ' 検索するターゲット時刻
Dim RangeCol As Range ' 検索レンジ(1列)
Dim foundObj As Range ' 検索結果を格納するレンジ
Dim RangeData As Range ' データ範囲
Dim rowLast As Long ' 最終行
Dim row1 As Long ' 平均足算出に使用するレンジの第一行
Dim row2 As Long ' 平均足算出に使用するレンジの第二行
Dim arrHeikin As Variant ' 平均足算出処理に渡す配列
' シートの初期化
Call SheetInit
timeNow = T_OPEN_MKT
Do While timeNow <= T_CLOSE_MKT
If T_HEIKIN_START <= timeNow And timeNow <= T_HEIKIN_END And Second(timeNow) = 0 Then
strTargetTime = GetPrevMinute(timeNow)
' 時刻列の最終行を取得
rowLast = Cells(1, P_TIME).End(xlDown).Row
' 検索レンジ(1列)を設定
Set RangeCol = Range(Cells(1, P_TIME), Cells(rowLast, P_TIME))
' 検 索
Set foundObj = RangeCol.Find(strTargetTime, LookAt:=xlWhole)
' 検索結果による処理
If Not foundObj Is Nothing Then
' 検索結果が有る場合は検索セルの行を取得
' ※ 検索する時系列は重複が無いことを前提にしている
row2 = foundObj.Row
row1 = row2 - 1
' 平均足算出に必要なレンジを配列へ転記
arrHeikin = Range(Cells(row1, P_OPEN), Cells(row2, H_CLOSE)).Value
' 平均足の算出
If Is1st Then
Call CalcHeikinAshi(arrHeikin, Is1st)
Is1st = False
Else
Call CalcHeikinAshi(arrHeikin)
End If
' 平均足算出結果を元のレンジへ転記
Range(Cells(row1, P_OPEN), Cells(row2, H_CLOSE)).Value = arrHeikin
End If
End If
' 現在時刻を1秒進める
timeNow = DateAdd("s", 1, timeNow)
Loop
End Sub
' _/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_
'
' シートの初期化
'
' _/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_
Sub SheetInit()
Dim xlLastRow As Long ' Excel自体の最終行
Dim rowLast As Long ' 最終行
Dim RangeData As Range ' データ範囲
' 以前に算出した平均足データの消去
xlLastRow = Cells(Rows.Count, P_TIME).Row ' Excelの最終行を取得
rowLast = Cells(xlLastRow, P_TIME).End(xlUp).Row ' 時刻列の最終行を取得
If rowLast > 1 Then
Set RangeData = Range(Cells(2, H_OPEN), Cells(rowLast, H_CLOSE))
RangeData.ClearContents
End If
' 最初の処理かを判定するフラグの初期化
Is1st = True
End Sub
AlmaLinux OS はオープンソースでコミュニティ主導のエンタープライズ Linux ディストロであり、RHEL とバイナリ互換性があります。AlmaLinux OS Foundation は、AlmaLinux OS コミュニティの利益のために設立された 501(c)(6) の非営利団体です。
Red Hat という会社が開発した製品を、オープンソースという理由から、手を尽くしてソースコードを入手、それらをリビルドして、ブランド名を付け替えて無料で公開、RHEL と 100% 互換だと喧伝するディストロより、控えめながらバイナリ互換 OS と称して、ユーザーの利便性を向上させるために、(本家リリースへの迅速な追従も含めた)付加価値を加えているディストロの方が好感が持てます。あくまで個人の見解です。