UWSCを用いた注文処理


 注文処理①

 MKTSPDID = GETID("Market Speed")
 ACW(MKTSPDID)

 エクセルからの注文内容の取得は以上で完了したので、次はマーケットスピード側の処理を行う。まずは、MKTSPDIDという変数に、GETID関数を用いてマーケットスピードのウィンドウIDを取得して代入する。ここでも、先ほどと同様、ウィンドウ名をすべて記述せず、一部にとどめている。本来であればバージョン名も含めた正確な名前を記述するべきだが、このようにバージョン名を含めないことによって、バージョンが上がった際にも対応することが出来るからだ。そして次に、ACWという関数を、先ほどのMKTSPIDIDという変数を引数に指定して用いる。この関数は、指定されたウィンドウをアクティブ化するものだ。このようにすることによって、マーケットスピードのウィンドウが最前面に表示されることになる。

 MOUSEORG(MKTSPDID, 1)
 BTN(LEFT,CLICK,550,40)


図表4 注文の流れ①

 マーケットスピード上を画面の最前面に表示させたら、次に行うべき処理は、注文画面に移行することだ。マーケットスピードの注文画面を呼び出すには、まずウィンドウ上部にある「投資情報」タブをクリックする必要がある。よって、まず最初にMOUSEORGという関数を用いて、マーケットスピードのウィンドウをマウスの座標の起点とする。引数として、先ほど用いたMKTSPDIDという、マーケットスピードのIDが代入されている変数と、1を指定する。1とは、ウィンドウ領域の位置をマウスの座標とする意味を持つ(詳しくはUWSCのヘルプを参照)。次に、BTNという関数を用いて、マウスのクリックを行う処理をさせる。引数には、左クリックを意味するLEFT、クリックを意味するCLICK、マーケットスピードのウィンドウを基点としたクリック位置を、xを550、yを40として指定。これで「投資情報」タブがクリックされることになる。
 なお、余談ではあるが、本来このようにマウスのクリックを座標を使って行うのは理想的ではない。何故なら、マウスやウィンドウの状態など、その時々で変化する要素を含んでいるからだ。それよりは、ショートカットキーなどをキーボードをスクリプトで操作することによって入力し、処理を行ったほうがより安定的で良いといえる。しかし、今回このような方法を紹介しているのは、マーケットスピード上で「投資情報」に移動する方法がこれ以外存在していないからだ。一応、ウィンドウがどのような位置にあっても正確な位置をクリックするよう、マーケットスピードのウィンドウの位置を座標の基点としているので、ウィンドウの位置には影響されないようになっている。しかし、可能であれば前述のCLKITEM関数のような、座標を用いない方法を使ったほうが確実だ。

 SLEEP(SLPD)
 SENDSTR(MKTSPDID,Code,1,TRUE)
 SLEEP(SLPD)
 CLKITEM(MKTSPDID,Market,CLK_LIST)
 SLEEP(SLPD)
 CLKITEM(MKTSPDID,"検索")


 「投資情報」に移動することが出来たら、次に行うべき処理はエクセルから取得した銘柄コードをテキストボックスに入力し、注文対象となる銘柄を表示させることだ。まずは、SLEEP関数を用いて、処理を一時的に停止させる。少々の間を与えたら、次は銘柄コードをテキストボックスに入力する。文字列や値を入力するには、SENDSTRという変数を用いる。与えるべき引数は、ウィンドウID、入力する値、入力する場所、送信モードとなる。まずはIDとして、先ほどから使用しているMKTSPDIDを指定。次に、入力する値として、先ほどシグナルのダイアログから銘柄コードを取得し、その値を代入した、Codeという変数を指定する。入力する場所だが、これはウィンドウ左上から数えて何番目のテキストボックスかを指定する。銘柄コードを入力する位置はウィンドウの一番左上に位置しているので、1を指定すれば良い。最後に送信モードだが、これをFALSEとすると、もし何か値がテキストボックスに入力されている場合、そこに追加して値を入力することになる。逆にTRUEとした場合は、既に何かが入力されている場合はそれを削除して値を置き換えることになる。ここでは既に何かの値が入力されている場合も想定して、TRUEを指定する。これで銘柄コードを入力する処理を行うことが出来る。そして、さらにSLEEP関数で処理に間を持たせ、その後CLKITEM関数を用いて市場名をクリックさせる。引数はこれまでの通り、ウィンドウIDと対象の名前となり、ウィンドウIDにはMKTSPDID、対象の名前には先ほど場合分けをして市場名を代入したMarketという変数を指定する。なお、これまでのCLKITEM関数は引数を2つしか与えなかったが、今回のクリックの対象はボタンではなくリストからの選択なので、CLK_LISTという引数を追加する。銘柄コードの入力と市場の選択が済んだら、同様にCLKITEM関数を用いて検索ボタンをクリックさせ、対象の銘柄を表示させる。

免責事項
※コラムに基づく行為の結果発生した障害、損失などについて筆者及び出版社は一切の責任を負いません。
※コラムに記載されている会社名、製品名は、それぞれ各社の商標及び登録商標です。

このページに関連する商品: