■
Private Sub Application_NewMailEx(ByVal EntryIDCollection As String)
SaveToCsv EntryIDCollection
End Sub
'
Private Sub SaveToCsv(ByVal EntryIDCollection As String)
Const AUTO_SAVE_TITLE = "受注メール" ' 自動処理するメールの件名
Const CSV_FILE = "C:\Users\keita\Dropbox\RPA\OutlookVBA\Outlook_Log.csv" ' データを保存する CSV ファイルの名前
Dim i As Integer
Dim arrEntryId
Dim myMsg
Dim stmCsv
Set stmCsv = Nothing
arrEntryId = Split(EntryIDCollection, ",")
For i = LBound(arrEntryId) To UBound(arrEntryId)
Set myMsg = Application.Session.GetItemFromID(arrEntryId(i))
If myMsg.Subject = AUTO_SAVE_TITLE Then
Dim strCode
Dim strName
Dim strQuantity
If stmCsv Is Nothing Then
Dim objFSO
Set objFSO = CreateObject("Scripting.FileSystemObject")
Set stmCsv = objFSO.OpenTextFile(CSV_FILE, 8, True, 0)
End If
strCode = GetText("商品番号", myMsg.Body)
strName = GetText("商品名", myMsg.Body)
strQuantity = GetText("数量", myMsg.Body)
stmCsv.WriteLine strCode & "," & strName & "," & strQuantity
End If
Next
If Not stmCsv Is Nothing Then
stmCsv.Close
End If
End Sub
' 本文からデータを取得する関数
Private Function GetText(strName As String, strBody As String) As String
Dim ls As Long
Dim le As Long
ls = InStr(strBody, strName) ' 指定されたフィールド名を検索
If ls > 0 Then
ls = ls + Len(strName) ' フィールド名の次の文字から
le = InStr(ls, strBody, vbCrLf) ' 改行コードまでを取得
GetText = Trim(Mid(strBody, ls, le - ls)) ' 前後の空白を削除
Else
GetText = ""
End If
End Function
Function ExtractOrderTable(mail As Outlook.MailItem) As String
Dim lines() As String
Dim i As Long
Dim line As String
Dim collecting As Boolean
Dim output As String
lines = Split(mail.Body, vbCrLf)
collecting = False
output = ""
For i = 0 To UBound(lines)
line = Trim(lines(i))
' 空行はスキップ
If line = "" Then GoTo NextLine
' ヘッダー行を検出して、そこから収集開始
If InStr(line, "品番") > 0 And InStr(line, "数量") > 0 Then
collecting = True
output = output & "▼ 発注内容(ヘッダー検出)▼" & vbCrLf
output = output & line & vbCrLf
GoTo NextLine
End If
' 発注データ行を収集
If collecting Then
' データの終わり(空行など)で停止
If InStr(line, "以上") > 0 Then
collecting = False
GoTo NextLine
End If
output = output & line & vbCrLf
End If
NextLine:
Next i
ExtractOrderTable = output
End Function
Python
Pythonは今、比較的新しいプログラム言語として利用者を増やしています。
では、このPythonとはどういった言語なのでしょうか?
Pythonとはさまざまな分野のアプリケーションで使われている、極めてパワフルな動的プログラミング言語です。Python自体は統計解析に特化しているわけではありませんが、その拡張性の広さから統計解析の目的にも十分にユーザーの要求を満たす働きをすることができ、様々な分野で利用されています。
PythonはCやJavaに比べると、同じ処理を短いプログラムで実現することができます。短いということを言い換えると、PythonはCやJavaより「簡単」な言語であり、またオープンソースなフリーウェアなので非常に門戸が広く、様々な拡張機能が作られています。PythonからCを利用できるCythonや、PythonからRを利用できるPypeRなどです。
Pythonの名前の由来は特に統計はもちろん、他のプログラム言語などに関連しているものではありません。(作者がとあるTV番組が好きでその名を取ったことによると言われています。)
High Frequency Trading(高頻度取引)について
High Frequency Trading、または高頻度(高速)取引という言葉は皆さんも聞いたことがあると思います。では、それは一体何なのか説明出来る方は少ないのかなとも思われます。
そこで、多少その分野に関わったことのある私が少しずつ小出しに紹介していきたいと考えています。
まず、Program Trading(プログラムトレーディング)との違いは何でしょうか?
プログラムトレードはある決まったアルゴリズムでトレードを行うやり方で、一定の価格に来たら買い・売り、損益がどれぐらいになったら損切り・利益確定など、そういった初歩的なものから、何日移動平均線を割ったら、VWAP(出来高加重平均価格)での取引など、多少のアドバンストな取引も含まれます。
一方、ハイフリークエンシートレードをその名の通り、頻度の高い取引を行います。頻度が高いとはどのくらいでしょうか?一つの銘柄だけで、一秒間に1000回以上オーダーを出すことが可能なのです。今や市場は場立ちのブローカーがハンドサインで取引している世界から、ミリセカンド、ナノセカンドで単位でオーダーを繰り返す世界へと進化してしまったのです。
