VPSサーバ上でkabuステーションAPIを自動実行する方法
前回の記事では、自宅のPCを自動起動後にkabuステーションに自動ログインしてAPIを実行するという使い方をしていましたが、少し使い勝手が悪いので、ほとんどの機能をVPSサーバ上に移設してみました。
これにより使い勝手がかなり向上したので予算に余裕がある方は参考にしてください。
前回のPC上で自動売買する記事はこちらです。
なお、kabuステーションはWindows環境以外では動作しないので、
利用するサーバは、さくらのVPS for Windows Server W1G(1,100円)プランです。
Xampp環境をインストールして、タスクスケジューラの設定も完了し、テストでは問題なく動作したので、いざ本番です。
しかし、なぜか本番では動作しない。
再度テストしても動作するけど、なぜかタスクスケジューラでkabuステーションへのログインに失敗しています。
ググリまくった結果以下の情報を発見しました。
・リモートデスクトップにて 最小化や接続を切った場合に動作しない
https://hikarujyouhou.com/news185/
マウス、キーボード、画面に依存する関数は動作しません。(BTN, KBD, CHKIMG等)依存しない関数であれば動作します。(CLKITEM, SENDSTR等)SENDSTR関数の場合は必ず番号指定を付けてください。BTN, KBD関数でも 直接指定(MOUSEORG関数にてMORG_DIRECT)であれば動作します。CHKIMG関数は バックグランド指定(MOUSEORG関数にてMORG_BACK)であれば最小化時はOKですが、接続を切った場合はNG。さもなくば VNC等の別のリモート操作ソフトを利用してください。
つまり、リモートデスクトップ接続中であれば、uwscでウィンドウを指定してログインできるけど、リモートデスクトップ切断中だと、ウィンドウという概念が存在しないのでログインできないという意味のようでした。
つまりVPS単体でのkabuステーションの自動実行は不可能
しかし、諦めずになんとか工夫して解決策を考えました、このような流れになります。
1. 自宅PCを自動起動
2. VPSサーバに自動リモートデスクトップ接続
3. VPS上のkabuステーションに自動ログイン
4. VPS上でAPIを自動実行
5. VPS上のkabuステーションを自動停止
kabuステーションを自動起動するためだけに、自宅PCを自動起動しているのが、ほんと無駄だと思うのですが、仕様なのでしかたが無いですね。
PCの起動と同時に自動でリモートデスクトップ接続する方法
自宅PCに「パスワードなし、自動ログイン」の新しいユーザーを作ります。これは「ようこそ」画面もスキップして、PCの電源を入れたらデスクトップが表示される状態の事です。
リモートデスクトップの認証情報を保存した状態(パスワード無しでログイン)のショートカットを作成して、スタートアップフォルダに配置します。
これで、PCの電源を入れると自動的にパスワード無しのユーザーでログイン後にリモートデスクトップ接続が完了してウィンドウが開いた状態になります。
自宅PCとVPSサーバ上のファイルを共有する方法
Windows環境なので「DropBox」や「Googleドライブ」などで同期するのが簡単です。自分はVPS用にGoogleドライブを使って同期しています。
・PC上で自動売買プログラムを編集すると、VPSサーバ上に自動反映される
・VPS上でAPIを実行したログなどは、PC上に自動コピーされる
LinuxサーバでRsyncを使って同期するより簡単ですね。
VPSサーバ上でPHPを自動実行する方法
VPSは常時起動なのでタスクスケジューラを使って5分毎にCLI版のPHPを自動実行しています。APIを実行するためだけのサーバなので雑に設定しても問題ありません。
Xampp環境であれば、ざっくりこのような設定でOkです。
どのようなメリットがあるのか
VPSサーバだけで完結しないので無駄が多いシステム構成ですが、VPSを利用する事によって、
・自宅PCを常時起動する必要がない(kabuステーションの起動時のみ必要)
・自宅PCでプログラムを常時実行する必要が無い(他のシステム開発しやすい)
・月額1,100円なので新しいパソコンを購入して2台体制を作るより安い
というメリットがあります。
電気代やPC購入費を考えてもVPSを常時起動している方がメリットは大きいです。ぜひお試しください!