楽天証券 MarketSpeed RSS サンプルプログラム



(DLJ時代、勉強会に参加してもらった MarketSpeed マグカップ)

このページでは楽天証券 MarketSpeed RSS のサンプルプログラムを掲載しています。



〜 目次 〜
1. RSS サンプルプログラム
    1-1. 画面イメージ
    1-2. サンプルプログラムダウンロード
    1-3. クラス・メソッド名一覧他
    1-4. 特記事項
    1-5. その他

2. リンク

1. RSS サンプルプログラム

  RSS のサンプルとしては、楽天証券から Excel のスプレッドシートが公開されてますが、プログラムに関する情報はいまのところ公開されていません。

  しかし RSS のような機能は、プログラムしてこそ真価が発揮されるものと考えます。プログラミング方法が広く知れ渡れば、いろいろ優れたアイデアのオンラインソフトが開発されることになると思いますので、そのような一助になればと思い、RSS を操作するサンプルプログラムをソース付きで公開することにしました。

1-1. 画面イメージ

(1) C#2015 版 (2) VB2015 版
         

(3) VC++2015 版
         


1-2. サンプルプログラムダウンロード

Visual Studio言語
Visual Studio 2015 C#2015
VB2015
VC++2015
Visual Studio 2013 C#2013
VB2013
VC++2013
Visual Studio 2012 C#2012
VB2012
VC++2012
Visual Studio 2010 C#2010
VB2010
VC++2010
Visual Studio 2008 C#2008
VB2008
VC++2008
Visual Studio 6.0 VB6.0
VC++6.0



1-3. クラス・メソッド名一覧他

言語コールドリンク (同期)
クラス名初期処理
メソッド名
項目値取得
メソッド名
終了処理
メソッド名
C# DdeClientColdLink Init GetItemValue Done
VB20xx
VC++20xx
VB6.0 basDDEClientColdLink
(モジュール)
DDEClientColdLinkInit DDEClientColdLinkGetItemValue DDEClientColdLinkDone
VC++6.0 CDDEClientColdLink Init GetItemValue Done

言語ホットリンク (非同期)
クラス名初期処理
メソッド名
項目値取得開始
メソッド名
項目値取得停止
メソッド名
終了処理
メソッド名
項目値更新時の処理内容
C# DdeClientHotLink Init Start Stop Done   項目値が更新されると Init メソッド内の DdeInitialize API に渡した HotLinkCallbackInternal メソッドが呼ばれるので、その中で項目値を取得し、Start メソッドに渡した HotLinkCallback メソッドを呼び出しています。(実際にはデリゲートを介しています)。
VB20xx HotLinkStart HotLinkStop
VC++20xx Start Stop
VB6.0 basDDEClientHotLink
(モジュール)
DDEClientHotLinkInit DDEClientHotLinkStart DDEClientHotLinkStop DDEClientHotLinkDone   項目値が更新されると Init メソッド内の DdeInitialize API に渡した HotLinkCallback メソッドが呼ばれるので、その中で項目値を取得しています。
VC++6.0 CDDEClientHotLink Init Start Stop Done



1-4. 特記事項

言語特記事項
共通
  • 変数名ですが、全般的に変数の型を接頭語としたハンガリアンもどき表記になってます。今流じゃないですね。私はこの方が相変わらず分かりやすいのですが。


  • コールドリンクの GetItemValue メソッドは、直前の銘柄コード(トピック名)と項目名を保存し、文字列ハンドルの再利用及び再接続しないようにしていますが、ここは利用形態によって大いにカスタマイズの余地があります。大量の情報を取得するなど少しでも処理時間を短くしたいときは各自の利用形態に合わせてカスタマイズしてください。例えば複数の銘柄の4本値を取得する場合、4本値の項目名("始値", "高値", "安値", "現在値")は事前に文字列ハンドルを作成しておいて以後はそれを使うなど。

VB20xx
  • ホットリンクの項目値取得停止メソッド名は Stop にしたかったのですが予約語 Stop と重なって使えませんでした。このため項目値取得開始/停止は HotLinkStart/HotLinkStop にしています。


  • DdeErr クラスの _ddeErrNoAndMsg 変数にエラー番号とエラーメッセージの一覧を初期値設定していますが、DMLERR_INVALIDPARAMETER の箇所は他の版と違って複数行のエラーメッセージがコメントアウトされていません。これは次の行への継続を示す行末の _(アンダースコア)がコメント行の中でも有効になってしまうためです。

VC++20xx
  • DDE API が格納されている user32.dll がリンクできなかったので、main メソッドのある msrss.cpp に #pragma comment(lib, "user32.lib") と書いて対応しています。


  • DDE API に LPDWORD を渡すところ(DdeInitialize 関数)ではアドレスをそのまま渡せないみたいなので、同じ型の変数をその場で作成して渡しています。普通の変数と区別するためにその変数名の最初には __ (アンダースコア2個)を付けています。


  • DDE API に LPTSTR を渡すところ(DdeCreateStringHandle 関数)ではアドレスをそのまま渡せないみたいなので、PtrToStringChars メソッドを使って pin_ptr 型に変換した変数を渡しています。普通の変数と区別するためにその変数名の最初には __ (アンダースコア2個)を付けています。


  • VC++20xx 版は Unicode でコンパイルしているので他の版と違いコードページは CP_WINUNICODE を使っています。DdeCreateStringHandle 関数に CP_WINANSI を指定して作成した文字列ハンドルを使って DdeConnect 関数を呼ぶとエラーになるので。しかし RSS はシフトJISで項目値を返してくるので、項目値を取得した後シフトJISから Unicode に変換しています。

VB6.0
  • API の BOOL 型の TRUE/FALSE は 1/0 ですが、VB6.0 の Boolean 型の True/False は -1/0 となっており、TRUE と True の値が違います。この影響か、DdeFreeStringHandle 関数など BOOL 型を返す API を Declare 宣言で As Boolean としてしまうと、例えば Dim bRtn As Boolean bRtn = DdeFreeStringHandle(...) が成功し TRUE が返ってきたとき、If (Not bRtn) Then でエラー判定すると Not bRtn が偽にならず真になってしまう現象が発生します。それを回避するため、サンプル中では BOOL 型の API も Long 型とし、API_FALSE(0 の Const) と比較するようにしています。


  • ホットリンクのアドバイズループを停止するときに DdeClientTransaction 関数に ADVSTOP (&H40& Or XCLASS_NOTIFICATION) を渡しますが、WIN32API.TXT 中の XCLASS_NOTIFICATION は &H8000 となっており、このままだと整数型(Integer)のため -32768 となってしまい ADVSTOP の値が正しく設定されず DdeClientTransaction がエラーになります。このためサンプルの定数宣言では長整数(Long)を表す & を末尾に付け &H8000& と宣言しています。



1-5. その他



2. リンク

楽天証券・MarketSpeed・RSS

楽天証券
MarketSpeed
オンラインヘルプトップ > 操作説明編 > 12.リアルタイムスプレッドシート
MarketSpeed 操作ガイド (PDF) (RSS に関しては60頁〜)


技術関連

MSDN - Dynamic Data Exchange (DDE) マネージメント ライブラリ
猫でもわかるプログラミング (DDE のサンプルは、■Windows SDK編 第2部 ■第150 〜 155章。但しC言語)


オンラインソフトウェア

楽天証券 MarketSpeed 用マイページ自動切替ツール MSMyPageChanger


その他

自動売買ソフトの販売・レンタル業者についてのご注意 (クリック証券)
自動売買ソフトについてのご注意 (松井証券)

日経平均と先物の乱高下 (2008年10月08日 〜 12月12日)
空売り規制の効果を検証した論文





Home