質問用掲示板を作りました
自動売買のシステム構築に関する、技術的な質問やふとした疑問など、
気軽に書き込んでみてください。
  • 右京武彦
  • URL
  • 2011/08/28 (Sun) 14:53:49
Mkspifの使い勝手
MarketSpeedへのログインに使っておられるMkspifは、マーケットスピードのDLLを呼び出すラッパーのようですが、ログインだけでなく株価データの受信をマケスピのDLLを呼び出して行う機能はないのでしょうか。Mkspifの詳細が不明なので、お使いになられたご経験から何か情報がありましたらお教え願いたく、ご質問致しております。
  • karankoron
  • 2013/01/19 (Sat) 21:12:45
株価データの受信
Mkspifを使うと、楽天RSSのようにリアルタイムの株価データを取得することができます。
以下の記事を参考にしてみてください。
http://autodaytrade.blog.fc2.com/blog-entry-83.html
http://autodaytrade.blog.fc2.com/blog-entry-84.html
http://autodaytrade.blog.fc2.com/blog-entry-85.html
http://autodaytrade.blog.fc2.com/blog-entry-86.html
http://autodaytrade.blog.fc2.com/blog-entry-87.html
http://autodaytrade.blog.fc2.com/blog-entry-88.html

リアルタイムではなく、その日一日のデータをまとめて取得したい、ということもMkspifを使えば可能です。(一日以上前の過去のデータは取得できません)
まだ記事にはしていませんが、Mkspif.ClientクラスのGetTicksメソッドを使うと、TickのListを取得できます。
  • 右京武彦
  • 2013/01/20 (Sun) 11:17:59
Mkspifでの株価データ受信
 ご回答、ありがとうございます。
 ご紹介頂いた記事は拝見致しており、この様な画期的な方法を紹介しておられることに、大変感謝致しております。
 これらの記事では、MarketSpeedへのログインについてはMkspifを介して行うことになりますが、株価データの受信については自作アプリにDDE通信機能を実装してRSSとの間でDDE通信を行うことでデータを受信することになると解釈しております。
 形としては自作アプリでMkspifのインタフェースを呼び出してデータを受信することも可能なのではと期待しているのですが、この方式に関して何か情報をお持ちであればお教え頂けないでしょうか。
 御手数とは存じますが、よろしくお願い申します。
  • karankoron
  • 2013/01/20 (Sun) 11:58:20
Re: Mkspifでの株価データ受信
Mkspifには、DDE通信をしてデータを取得する仕組みはありません。
(本記事では、Mkspifはログインのみで利用しています)
自作アプリでDDE通信を実装するには、NDdeライブラリが必要になります。
  • 右京武彦
  • 2013/01/20 (Sun) 12:18:27
Re: 質問用掲示板を作りました
 ありがとうございます。
 了解致しました。
 今後とも貴サイトの記事には期待致しております。
  • karankoron
  • 2013/01/20 (Sun) 16:00:10
Mkspifでログインについて
 自動ログインのコードのRakutenRssWrapperクラスをRakutenRssWrapper.vbというクラスモジュールに記述し、RakutenRssWrapperクラスを呼び出す2行のコードをModule1.vbのSub Main()に記述してコンパイル・実行すると以下の例外が発生しました。

ハンドルされていない例外:Sysytem.TypeInitializationException:'LoginMarketSpeedViaMkspif.RakutenRssWrapper'のタイプ初期化子が例外をスローしました。---> System.IO.FileNotFoundException:ファイルまたはアセンブリ'MarketSpeedClient.dll'、またはその依存関係の1つが読み込めませんでした。指定されたモジュールが見つかりません。

 表記のDLLファイルが見つからないと言っているのですが、プロジェクトの参照設定には表記以外の二つのDLLも表示されているので参照設定が上手くいっていない訳ではないと思っているのですが。
 開発環境は、VS2010でOSはWindows7 Professionalの64bitバージョンですが、x86ビルド設定でビルドしています。

 もし、対処法の心当たりをお持ちであればお教え下さい。
  • karankoron
  • 2013/01/20 (Sun) 19:42:52
Re: Mkspifでログインについて
Softgate.Kernel.dll、MarketSpeedClient.dllの2つのDLLは参照設定に追加する必要はありません。参照設定からは削除してください。
2つのDLLは、[プロジェクト名].exeと同じフォルダに配置すればよいだけです。
  • 右京武彦
  • 2013/01/21 (Mon) 17:25:17
Mkspifでログイン時リンクエラー
 MarketSpeedに同梱のユーザーガイドを見ると、MSBroker.dllとSTLib.dllをMkspif.dllと同じフォルダに置けという記述がありましたのでその様にすると、DLLがみつからないというエラーはなくなりました(調査不足ですみません)。
 ただ今度は以下のエラーが発生しました。

System.IO.FileLoadException:混合モードアセンブリはバージョン'v2.0.50727'のランタイムに対して作成されており、追加の構成情報がないと 4.0 ランタイムでは読み込めません。

 これは、.NET Frameworkのバージョンのことだと思い、VBのプロジェクトの対象Frameworkを2.0に変更すると、Mkspif.Clientの型が認識できないというコンパイル時のエラーとなります。
 又、Mkspif.dllを参照設定する際にも、v2.0よりも新しいバージョンの.NET Frameworkを要求してきてます。

 デッドロック状態に陥っている状況に見えるのですが、どの辺からほぐして行ったらよいか、ご意見を頂けないでしょうか。
 
 
  • karankoron
  • 2013/01/22 (Tue) 18:28:48
Re: Mkspifでログイン時リンクエラー
App.config(アプリケーション構成ファイル)の
<configuration> ~ </configuration> の中に以下の3行を記述してみてください。

<startup useLegacyV2RuntimeActivationPolicy="true">
<supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.0"/>
</startup>

以前に私も同じ問題にぶつかり、上記のように解決しました。
ずっと前のことなので忘れていました。
ブログにも追記しなければなりませんね。
karankoronさんの熱心さがあったから、気づかせてもらえました。
ありがとうございます。

もし、よろしければ、どういったシステムを構築しようとお考えなのか、
お聞きできるとうれしいです。
もちろん、差しさわりの無い範囲で。
掲示板で都合が悪ければ、メールでもかまいません。
  • 右京武彦
  • MAIL
  • 2013/01/22 (Tue) 22:40:49
リンクエラーの件、その他
 ご教示頂いた通りで無事ログイン出来るようになりました。ありがとうございます。
 ブログの方も更新してあり(一瞬、見落としていたかと焦りましたが)素早い対応で恐れ入ります。
 こういった構成ファイルの編集についての知識は、MSのサイト等で調べておられると存じますが、なかなかハードルの高い世界だと感じます。まだ自身では解決できない状況なので、感謝致しております。

 MkspifにMstsというTickデータ受信用テストプログラムが添付されておりますが、添付されているEXEはそのままではクラッシュして使えなかったので、サンプルソースをコンパイルして試してみました。コンパイルリンクに関しては、同様の状況で実行ファイルが出来るところまでいくことが出来ましたが、Connectができていない(client.IsConnectedがFalse)ようで、データ受信までは行けませんでした。
 この件に関する記事にも期待しております。

 目指しているシステムと言う程の状況ではありませんが、自作プログラムで受信したデータで判断した結果により、自作プログラムから発注をするというようなことができればよいな、というイメージは持っています。それに向けて現状のソフトウェア技術でどこまで可能なのか、を知りたいと思っています。
 そんな流れで見つけた"マケスピで見るネイティブコード解析"というサイト(今はもうない?)からのMkspif繋がりで貴ブログに到達したという次第です。
 まだ試してみていませんが、NDdeでの受信は是非トライしたいと思っておりますし、今後の記事にも大変期待しております。今後ともよろしくお願い申します。
 
  • karankoron
  • 2013/01/23 (Wed) 21:50:03
Re: 質問用掲示板を作りました
こんにちは、Mkspif 作者のソフトゲートの手賀と申します。
Mkspif がどんな使われ方をしているのかを調べていて、こちらにお邪魔しました。
Mkspif は GetMarketInformation というメソッドで、市況情報タブ相当の情報を取得することができます。
ただし、個別の値(たとえば現在値)の変化を追跡するには不向きなので、そういう用途ではRSSのほうが楽だと思います。

なお、自作プログラムから発注するようなインターフェースも検討してはいるのですが、なにぶん実際に注文を出してプロトコルを解析しないといけないのと、現在はFXメインで開発をしていることから、きちんと安定した発注インターフェースが作れるかどうかは残念ながらまだ未知数です。

いずれにしても、弊社のウェブサイトの方でまたマケスピがらみのブログ記事もたまには書いていくつもりですので、時折覗いてみてください。
  • 手賀@ソフトゲート
  • URL
  • 2013/02/22 (Fri) 01:23:52
メッセージ、ありがとうございます
手賀様、メッセージ、ありがとうございます。

Mkspifは、リアルタイムトレード時はRSSの自動起動に、市場クローズ後はTickデータの一括取得に
利用させていただいています。
リアルタイムの現在値などは、手賀様ご指摘のように、NDde経由でRSSから取得しています。

現在は、自動売買システムの大幅な設計改善とリファクタリングを行い、
売買ロジックや資金管理などの柔軟性、拡張性を上げる取り組みをしています。

Mkspifのほかにも、ブログでのMarketSpeedなどの技術情報の深さに驚きつつ、
大変参考にさせていただきました。

今後もソフトゲート様のサイトには、お邪魔させていただきたいと思います。
(発注インターフェースは、こっそり、というか、かなり期待しています!)
  • 右京武彦
  • 2013/02/22 (Fri) 21:49:13
約定回数の取得方法について
楽天RSSを使って、日経225チャートをEXCEL(VBA)で作っています。数ヶ月前から通常の分足ではなくティック足に変更しましたが、出来高をイベントにしたものでは、輻輳時には約定回数を正確に計算することができず誤差を生じています。約定回数(ティック回数)の関数が楽天RSSに有れば解決するのですが、何かうまい方法はないでしょうか。
(歩み値情報がスクロールしているので、約定回数に相当するものは持っているとは思いますが、よく分かりません。)
  • 桂 太郎
  • URL
  • MAIL
  • 2013/03/26 (Tue) 10:48:37
Re: 約定回数の取得方法について
桂 太郎 様
楽天RSSでは直接「約定回数」を取得することはできないみたいです。
なので、別案で、私が思いつく方法を2つあげます。
(1)ブログで紹介している「Mkspif」を使って、Tickの一覧を取得する方法。
(2)もう一つは、完全な解決法ではありませんが、楽天RSSの出来高で差分をとる方法。

まず(1)について。
「Mkspif」は、.NETのライブラリで、その日のTickの一覧(時刻、価格、約定株数)を
まるごと取得できるAPIがあります。「Mkspif」のマニュアルによると、
COMコンポーネントとしても利用できるようです。
(ダウンロードして、マニュアルを読んでみてください。)
私は試したことはないので、確信を持って言えないのが恐縮ですが、
COMであれば、ExcelVBAからも呼び出すことができると思います。

次に(2)について。
楽天RSSだけで行う簡易的な方法で良ければ、
VBAの処理で、前回の出来高を保存しておいて、今回の出来高と差をとって、
約定株数とする、という方法はいかがでしょうか?
  • 右京武彦
  • 2013/03/26 (Tue) 21:54:00
Re: 約定回数の取得方法について
ご丁寧な回答ありがとうございます。
Mkspifについてはマニュアルを確認してみます。
なお、自作ソフトについて若干説明が不足していたので補足しますと、出来高が変更されるとイベントを発生させ約定回数をカウントする方法を取っています。楽天RSSとはマイサーバでリアルフィードで設定していますが、輻輳時にはデータ更新が飛ぶのかCPU(i5-2500k)の能力不足が原因か分かりませんがカウントが追随しない現象が発生します。EXCEL(2003)も2400KB、VBAも数千ステップありますのでその辺のところも影響しているとは思いますが・・。
出来高変更をイベントにすると輻輳時にはイベントが多発するのは分かっているのですが現在ご案内の簡易の方法(2)でカウントを取っています。もし約定回数がデータとして参照することができれば、TOPIX値が約2秒間隔で更新されていますのでこちらをイベントに使うことができCPUの負担を減らすことができます。

ご回答にありました「Mkspif」、情報収集してみます。ただ当方のプログラミング能力はExcel-VBAが精一杯なので、それ以上の技術が求められるとお手上げですが。(笑)
重ねて、回答ありがとうござました。
  • 桂 太郎
  • URL
  • MAIL
  • 2013/03/27 (Wed) 10:22:01
RSS自動ログインについて
プログラム初心者です。

マーケットスピードを起動せず、RSSだけを起動したいと思い、調べていたところ此方のHPにたどり着きました。
こちらのMkspifを用いたRSS自動起動、ログインプログラムをXP,VS2008で実行したのですが、プログラムが終了すると当然ながらRSSのログインは解除されてしまいます。
ログインを維持するにはどうしたらよいでしょうか。
  • プログラム初心者K
  • 2013/08/29 (Thu) 08:53:11
Re: RSS自動ログインについて
プログラム初心者Kさん、
こんばんは、右京です。

RSSログインを維持するには、プログラムが終了しないようにする必要がありますね。
プログラムの最後に、次のように書いてみてください。

System.Console.Write("終了するには、Enterを押してください。")
System.Console.ReadLine()

そうすれば、Enterが押されるまで、プログラムは動作し続け、
RSSログインも保たれます。
  • 右京
  • 2013/08/29 (Thu) 22:32:08
Re: 質問用掲示板を作りました
右京さま

ご回答いただきありがとうございました。
Excelマクロを多少いじるレベルの初心者なので助かりました。
これでマーケットスピードを起動せずに、エクセルにデータを取り込む事が出来ます。
  • プログラム初心者K
  • 2013/08/31 (Sat) 21:12:31
RakutenRssWrapperの質問
RakutenRssWrapperでTickデータを受信する際、GetTicks()に銘柄コードと取引所を指定しますが、N225やTOPXのTickデータを取得するには取引所の部分に何を指定するのか、ご存じであれば教えて下さい。よろしくお願い申します。
  • karankoron
  • 2013/10/16 (Wed) 10:21:21
Re: RakutenRssWrapperの質問
右京です。返事が遅くなって申し訳ありません。

まず、ServerNameを「RSS」、TopicNameを「StockList」として、Topicをつくり、
ItemNameを「,0,0,0,0,0,2」としてColdLinkすると、一覧が取得できます。

この一覧を見ると、TOPIX先物やNK225の限月ごとに、IF011~IF015などと
なっていますので、これらを指定して試してみてください。
  • 右京
  • 2013/10/27 (Sun) 13:07:41
Re: 質問用掲示板を作りました
右京さま

 ご回答、ありがとうございます。
 当方も対応が遅れました、申し訳ありません。
 取り敢えずお礼させて頂き、ご助言頂いた内容を確認の上、又ご報告させて頂きます。
  • karankoron
  • 2013/11/01 (Fri) 10:19:29
Re: 質問用掲示板を作りました
 右京様

 N225やTOPXのTickデータを取得する件、ExcelのVBAで以下の形でトライしてみました。

Dim channel As Long: channel = DDEInitiate("RSS", "StockList")
Dim s As Variant: s = DDERequest(channel, ",0,0,0,0,0,2")

 Ticksは二つのフィールドとなっているようで、最初のフィールドにIND01などの記号、次
のフィールドに"N225 日経225"などの文字列が返ってきます。以下はその先頭10行です。

IND01 N225 日経225
IND02 N300 日経300
IND03 TOPX TOPIX
IND04 JSD ジャスダック指数
IND14 N500 日経500
IND15 NOTC 日経ジャスダック平均
IND52 TSI2 東証2部総合指数
IND53 MTHR 東証マザーズ指数
IND62 TREIT 東証REIT指数
IND73 JSD20 JASDAQ-TOP20

 これ以降は、第一フィールドが9桁の数字で第二フィールドに"日経225先物 13-12"などの文字列が続いています。

 IF011~IF015などは見当たらないようです。

 試しにIND01を

rssWrapper.client.GetTicks(ComCD, Market)

の第一引数、第二引数を""や"1"(東証)にしてみましたがデータは取得できませんでした。
  • karankoron
  • 2013/11/02 (Sat) 15:31:47
NDde.dll実装
初めまして。
株価データ取得について勉強し始めました。
超初心者なので分からに事だらけなので教えてください。

NDde.dll
をプロジェクトに実装できません。

ドラッグ&コピー 不可。
参照からもNDde.dllファイルが見つからない。

Visual Studio 2013 を使用しています。
最初で躓いています。
実装方法をご教授いただけないでしょうか?

よろしくお願いいたします。
  • VBで取得勉強中
  • 2015/01/30 (Fri) 04:09:14
Re: 質問用掲示板を作りました
右京様
 久々のご質問です。
 RSSWrapperでN225やTopixのTickデータを取得できるようになったのですが、受信できるデータが5000件に制限されているようです。これはRSS或いは楽天のサーバーの仕様なのでしょうか。株式のデータにはこの様な制限はないと思うのですが...
 回避する方法はないでしょうか。ご存じであれば教えてください。
 よろしくお願い申します。
  • karankoron
  • 2015/03/16 (Mon) 22:26:51
Re: 質問用掲示板を作りました
右京様
この件、解決ではないですが、サーバーが制限を掛けていて回避は不可ということがわかりました。
全て受信する方法を考えます。ありがとうございました。
  • karankoron
  • 2015/03/17 (Tue) 14:17:29

返信フォーム






プレビュー (投稿前に内容を確認)