cTipsのブログ(かぶもーちゃん)

株の自動売買の採用しなかったルールの結果を毎日記録

(3)Monex Joo API のExcel Vba 見本をつくってみました。

3.------- 標準モジュール名ごとに貼り付ける内容 -------------
 
'-----------------------------------------
'### 標準モジュール名:userAPISetTimer ###
'-----------------------------------------
Option Explicit
 
'(標準モジュール)
Public Declare Function SetTimer Lib "user32" _
        (ByVal hwnd As Long, ByVal nIDEvent As Long, _
        ByVal uElapse As Long, ByVal lpTimerFunc As Long) As Long
 
Public Declare Function KillTimer Lib "user32" _
        (ByVal hwnd As Long, ByVal nIDEvent As Long) As Long
 
' タイマーを止める
 
Sub kills()
   ' Application.hwnd は最上位のWinハンドル取得
   'Debug.Print Application.hwnd
    KillTimer Application.hwnd, 31000& 'id
End Sub
 
 
'------------------------------------
'### 標準モジュール名:userJooChk ###
'------------------------------------
 
Option Explicit
 
' APIサーバ起動チェック
Public Function ChkAPISV() As Boolean
Dim chkprice
   
    ChkAPISV = False
   'sWkProcess = "APIサーバ起動チェック"
   
    '+--- レート取得関数: GetRealtimeRateCache() ---+
    chkprice = omFXAPI.GetRealtimeRateCache("USD/JPY", "bidPriceValue")
    If Left(chkprice, 16) = "APIサーバを起動してください。" Then
        sWkDescription = chkprice
        Exit Function
    Else
        Debug.Print "API_ok"
    End If
    ChkAPISV = True
End Function
 
' サンプル1 (リアルタイムレート受信開始を設定します。)
' 開始準備ボタンから呼び出される。
 
Sub realtimeRateStart()
Dim omFXAPI As New Joo_FXAPI.ComApi
Dim oWkPairResult As PairResultEntity
Dim oWkCurrencyPair(0) As Variant
   
    Const error_message As String = "エラーが発生しました。" & ", "
    oWkCurrencyPair(0) = ECurrencyPair_USDJPY
    '+---
    Set oWkPairResult = omFXAPI.RealtimeRate(oWkCurrencyPair, True, Nothing)
    '+--- 通貨ペアの項目にvbNullString=(0)を指定すると全部の通貨ペアになる ---+
   'Set oWkPairResult = omFXAPI.RealtimeRate(vbNullString, True, Nothing)
   
    If oWkPairResult.returnCode <> 0 Then
        MsgBox error_message & oWkPairResult.returnCode & ", " _
        & oWkPairResult.returnMessage, vbOKOnly + vbCritical
    End If
    Set omFXAPI = Nothing
End Sub
 
'サンプル2(リアルタイムレート受信停止を設定します。)
'このサンプル2を実行することにより、リアルタイムレートの受信が停止されます。
 
Sub realtimeRateStop()
Dim omFXAPI As New Joo_FXAPI.ComApi
Dim oWkPairResult As PairResultEntity
Dim oWkCurrencyPair(0) As Variant
Const error_message As String = "エラーが発生しました。" & ", "
   
    oWkCurrencyPair(0) = ECurrencyPair_EURJPY
   
    Set oWkPairResult = omFXAPI.RealtimeRate(oWkCurrencyPair, False, Nothing)
   
    If oWkPairResult.returnCode <> 0 Then
        MsgBox error_message & oWkPairResult.returnCode & ", " _
        & oWkPairResult.returnMessage, vbOKOnly + vbCritical
    End If
Set omFXAPI = Nothing
End Sub
 
 
'-------------------------------------
'### 標準モジュール名:useVariable ###
'-------------------------------------
 
Option Explicit
 
Public omFXAPI                                  As New Joo_FXAPI.ComApi
Public oWkPairResult                            As PairResultEntity
Public prevContract                             As ContractNoticeEntity
Public nIDEvent                                 As Long
'Public sWkProcedure                             As String
'Public sWkProcess                               As String
Public sWkDescription                           As String
Public USDJPY_bidPrice As String, USDJPY_askPrice As String        'USDJPY
 
Sub realtimeRateDisp()
On Error Resume Next    '←必須。これがないとExcelが落ちる。
   
    Dim iWkorderPrice           As New PriceUnitEntity      '●現在値など
    Set iWkorderPrice = omFXAPI.GetRealtimeRateCache("USD/JPY", "bidPrice")
   
    '変数にレートを受け取る
    USDJPY_bidPrice = omFXAPI.GetRealtimeRateCache("USD/JPY", "bidPriceValue")  'USDJPY
    USDJPY_askPrice = omFXAPI.GetRealtimeRateCache("USD/JPY", "askPriceValue")  '
   
    'ラベルに変数のレートを出力する
    UserForm1.USDJPYbid.Caption = Format(USDJPY_bidPrice, "##0.##0")    'bid
    UserForm1.USDJPYask.Caption = Format(USDJPY_askPrice, "##0.##0")    'ask
 
End Sub
 
 
 
注意)
WindowsAPIは標準モジュールでないと動かない。
APIは注意しないと暴走の恐れがあるので自己責任で扱って下さい。
Error処理は考慮されていません。独自に付加して下さい。
基本的にはMonexJooのマニュアルを参照して下さい。
上記は私個人の判断で公表されているサンプルを抜粋したものですから
動作しない可能性もあります。
WindowsXP sp3 Excel2007 の環境で試しました。