soubaKenkyujoBunke’s blog

株関係のプログラムその他

UWSCで株関係のツールに自動ログインする

株プログラム記事の実質2つ目です。
今回の記事はUWSCという有名なツールを使って株関係のツールに自動ログインしてみようという記事ですが・・・

下記の方の記事を読んで理解できれば、以下の内容は読む必要はありません。
全て書いてあります。私の記事はただ少し丁寧なだけですので。
(あるいはネットストック・ハイスピードとトレードステーションへの自動ログインを
コピペでやりたい時間の無い方向け)
www.m-trader.net

以下やり方です。
今回は松井証券さんのネットストック・ハイスピード(起動してログインボタンクリック)
マネックス証券さんのトレードステーション(起動してパスワードを入力してログオンクリック)
を例にしたいと思います。

まず、最初にUWSCの使い方から。
製作者の方の書かれたものを読むのが一番良いのですが、
今回はタイトルの内容を最短で実現する方法のみ記載します。
canal22.org

↑のサイトに貼られているVectorさんへのリンク等からUWSCをダウンロードして解凍します。

UWSCは専用のスクリプトを実行でき、今回はそれを使用します。
まず、スクリプトファイルを作成します。
拡張子は「.uws」になります。
場所はどこでも良いはずですが、ダウンロードして解凍してできたフォルダ内なら
確実かと思います。
今回は「NSTSautoLogin.uws」としてみます。

作成したファイルをメモ帳とかで開いて下記を書き込んで保存します。

//ネットストック・ハイスピード自動ログイン
EXEC("C:\Program Files (x86)\NetStockHighSpeed\Module\HighSpeed.exe")
NHNAME = "ネットストック"
SLEEP(2)
NHFrameName = "#32770"
CTRLWIN(GETID(NHNAME, NHFrameName), ACTIVATE)
SLEEP(1)
SCKEY(GETID(NHNAME, NHFrameName), VK_RETURN)

//トレードステーション自動ログイン
EXEC("C:\Program Files (x86)\TradeStation 9.5\Program\ORPlat.exe")
TSNAME = "TradeStation"
SLEEP(5)
TSPassWord = "トレードステーションパスワード"
TSLoginWindow = GETID("TradeStationネットワーク ログオン")
SENDSTR(TSLoginWindow, TSPassWord)
SLEEP(1)
SCKEY(TSLoginWindow, VK_RETURN)

EXEC内のパスはご使用の環境でのそれぞれのプログラムの実行ファイルを指定してください。
「トレードステーションパスワード」の部分に実際のパスワードを入れてください。
※ネットストック・ハイスピードは「会員ID」「会員パスワード」が入力され「保存」状態になっている前提です。
※トレードステーションは「ログインID」が入力され「ログインIDの保存」にチェックが入っている前提です。

※参考までにFrameNameとかはどうやって探しているかと説明しますと、下記のスクリプトをネットストック・ハイスピードが起動している状態で、UWSCで実行してみると、わかると思います。("#32770"とポップアップが出ます。)

NHNAME = "ネットストック"
ID = GETID(NHNAME)
Title = Status(ID, ST_CLASS)
MSGBOX(Title)

で、NSTSautoLogin.uwsを作成しましたら、UWSC.exeを実行します。
小さいパネルが表示されると思いますので、左端の「読み込み」をクリック。
開いた画面で、NSTSautoLogin.uwsを選択します。
パネルに戻って真ん中の「再生」でスクリプトが実行され、
ネットストック・ハイスピードとトレードステーションが起動&ログインされたかと思います。

いちいちスクリプトを実行するのが面倒くさいという方にはUWSCを常駐させて、指定時間にスクリプト自動実行というやり方もあります。

さきほどのパネルの右端の工具アイコンクリック>「設定」を選択し、「スケジュール設定をする」でスクリプト自動実行の設定が可能です。
「スケジュール設定」画面の「スクリプト」にNSTSautoLogin.uwsを選択します。
「タイマー」のところで「式による設定」を選び、テキストボックスに

(WW=1 OR WW=2 OR WW=3 OR WW=4 OR WW=5) AND (HH=8) AND (NN=30)

上記のように設定すれば、(UWSCが起動していれば)月火水木金曜日の8時30分にスクリプトが実行されます。

そもそもスクリプトが動作しなかったという方や、UWSCについてもっと知りたいという方は先程の製作者の方のサイトを読んでください。
偉そうなことを書いていますが、私も必要最小限の機能しか知りませんので。

今回の記事は以上になります。

※パスワードの管理には十分に注意してください。
 この記事に書かれている内容によって生じた損害等の一切の責任を負いかねますのでご了承ください。


デイトレードランキング

システムトレードランキング

プライバシーポリシー


個人情報の利用目的

当サイトでは、メールでのお問い合わせなどの際に、メールアドレス等の個人情報をご入力いただく場合がございます。
これらの個人情報は質問に対する回答や必要な情報を電子メールなどをでご連絡する場合、また当サイトのサービスの提供・運営のために利用し、個人情報をご提供いただく際の目的以外では利用いたしません。


個人情報の第三者への開示

当サイトでは、個人情報は適切に管理し、以下に該当する場合を除いて第三者に開示することはありません。
・本人のご了解がある場合
・法令等への協力のため、開示が必要となる場合


個人情報の開示、訂正、追加、削除、利用停止

ご本人からの個人データの開示、訂正、追加、削除、利用停止のご希望の場合には、
ご本人であることを確認させていただいた上、速やかに対応させていただきます。


アクセス解析ツールについて

当サイトでは、Googleによるアクセス解析ツール「Googleアナリティクス」を利用しています。
このGoogleアナリティクスはトラフィックデータの収集のためにCookieを使用しています。
このトラフィックデータは匿名で収集されており、個人を特定するものではありません。
この機能はCookieを無効にすることで収集を拒否することが出来ますので、お使いのブラウザの設定をご確認ください。


免責事項

当サイトからリンクやバナーなどによって他のサイトに移動された場合、移動先サイトで提供される情報、
サービス等について一切の責任を負いません。
当サイトのコンテンツ・情報につきまして、可能な限り正確な情報を掲載するよう努めておりますが、
誤情報が入り込んだり、情報が古くなっていることもございます。

※当サイトに掲載された内容によって生じた損害等の一切の責任を負いかねますのでご了承ください。


プライバシーポリシーの変更について

当サイトは、個人情報に関して適用される日本の法令を遵守するとともに、本ポリシーの内容を適宜見直しその改善に努めます。
修正された最新のプライバシーポリシーは常に本ページにて開示されます。

楽天RSSでのデータ取得の基本の基本

株プログラムの記事の記念すべき1つ目のテーマは
楽天RSS(リアルタイムスプレッドシート)についてです。


基本の基本なので、楽天RSSがどういうものか、から入りたいと思います。
既に知っているという方は読み飛ばしてください。


楽天RSSの説明をすると・・・
・株に関する様々なデータを取得できます。
・↑のデータを自作のプログラム等からほぼリアルタイムに取得できるので、
 証券会社から提供されているツールだと主に見たりすることしかできない
 データに対していろいろな操作が可能です。
楽天証券に口座を開いている人が使えます。
・以前は有料で無料使用にも条件があったのですが、現在は無料で利用できます。(2019/7/12)
https://marketspeed.jp/guide/before.htmlmarketspeed.jp



楽天証券の口座がある前提だと基本的な使い方は、
楽天証券のマーケットスピードをインストール&起動&ログイン
②マーケットスピードと同時にインストールされている
 リアルタイムスプレッドシートを起動
③ ①②を満たした状態で、RSS関数を実行するとデータが返ってくるので
 後は、保存したり、加工したりできます。


以下上記③についての説明を行います。
言語はC#、開発環境はVisual Studio、言語、開発環境についての基礎知識は
あることが前提です。
(できるだけ詳しく書きますが、わからなければ、すみません。)


※エクセル等でのアクセス方法が知りたければ楽天証券さんの
以下のページが丁寧に書かれてて良いと思います。
https://marketspeed.jp/guide/rss.html#skip01marketspeed.jp



C#でのRSSの使い方としては
楽天RSSはDDEという方式でデータを送っているので、
まず、DDE通信をC#で楽に使うためにNDdeというライブラリを使用します。
※上記以外のライブラリを使用する方法や、ライブラリを使用しない方法も
 あるようですが、私はNDdeしか使っていませんので、
 上記ライブラリ使用以外での楽天RSSの使い方を知りたい方は
 別サイトを探してください。


以下手順
Visual StudioのNuGetで「NDde」を検索して、インストール。
②ライブラリ読み込み

using NDde.Client;

③まずは、Cold linkの場合、
 これは、こちら側から情報を1回要求して、その返答を
 受信する方法です。(1回の要求で1回しか返ってきません)

using (DdeClient client = new DdeClient("RSS", "9984.T"))
 {
    client.Connect();
    byte[] data;
    data = client.Request("銘柄名称", 1, 3000);
    string meigaraMeisyo = Encoding.Default.GetString(data).Replace("\0", "");
}

↑「9984.T」が銘柄コード、「.T」は東証になります。
詳しくは公式の関数一覧をどうぞ。
RSS関数一覧 | マーケットスピードオンラインヘルプ

Request内の「3000」は3秒待つという意味です。
楽天RSSから送られてくるデータには変なゴミみたいなのがついてくることが多いので
Replaceで取ってます。

④次はHot linkです。
 要求したデータが更新されたら随時送られてくるので、
 リアルタイムのデータを扱いたい場合等はこちらを使うと思います。
↓リスト宣言。銘柄ごとにDdeClientを作って保持します。

 List<DdeClient> list = new List<DdeClient>();

↓1銘柄ごと下記のようにイベントハンドラを設定して、
銘柄ごとに取得したいデータを設定し、
データが更新されたらchangeValue()関数が呼び出されるようにします。

DdeClient client = new DdeClient("RSS", meigaraCode, this);
client.Connect();
client.Advise += new EventHandler<DdeAdviseEventArgs>(changeValue);
client.StartAdvise("銘柄コード", 1, true, 60000);
client.StartAdvise("銘柄名称", 1, true, 60000);
client.StartAdvise("現在値", 1, true, 60000);
list.Add(client);

↓changeValue関数の例。
データが更新されると、changeValue関数が呼び出され、
送られてきたデータが読み取れます。

private void changeValue(object sender, DdeAdviseEventArgs e)
 {
    DdeClient client = sender as DdeClient;
    string ItemName = e.Item;//更新された項目名
    byte[] byteData = e.Data;//更新されたデータ
    string kousinData = Encoding.GetEncoding(932).GetString(byteData);
    string meigaraCode = client.Topic;//銘柄コード
}

Hotlinkのデメリットは接続が切れた時に再度をつなぎ直さないといけないところと、
同時には最大200銘柄しか監視できないというところかと思います。
Coldlinkは遅いのですが、一個一個データを取得するので監視数の上限もありませんし、
処理自体は簡単ですので、自分もやりたいことに合わせて使い分けています。

以上で今回の記事は終了です。

下記サイトで今回紹介した楽天RSSを使った
「株DayTrade Simulator体験版」を公開していますので、
興味のある方はダウンロードしてみてください。
ここまで読んで頂いてありがとうございました。
www.vector.co.jp


デイトレードランキング

システムトレードランキング

初めに

はじめまして。

ぶんけと申します。

株、FX等の研究(?)をしていますが、

結果は全然だせてなくて、トータルの収支もマイナス・・・。

趣味みたいなものですが、いつかお金を稼げるようになればと思っています。

 

初心者レベルですが、プログラムを使っていろいろやってきたので

このブログでは自分が相場関係のプログラムを作る時に

ひっかかったところ他を備忘録のような形で書いていきたいと

今の所は考えています。

 

プログラム言語は主にC#を使っているので、

ブログの内容もC#に関することが多くなると思います。

自分がプログラムを作りはじめた時結構苦労したので、

ブログの内容としては、できるだけそのまま動くコードを貼るか、

動くコードが書かれている参照元を紹介したいと思っています。

 

※自分のプログラムはいろいろなところからの切り貼りが多いので、

 コードを紹介する時、その中にどなたかが公開しているコードが

 紛れ込んでいるかもしれません。

 自分でもそういうことが無いように気をつけますが、

 上記にお気づきの方おられましたら恐縮ですが、

 コメント等でご指摘頂けますと幸いです。

 

 よろしくお願いいたします。

 

 


デイトレードランキング


システムトレードランキング