かけだしBotterでもできる!Macで自動売買する方法〜自動売買のための起動方法編

トレード

「自前のシステムトレード環境を一から準備するにはどうやるんだろう・・・?」

そう考えている方は多いと思います。

自動売買を行う上で一つのポイントがどのようにプログラムを起動するかという点です。

いくつかの方法が考えられますが、この記事ではパソコンにそれほど詳しくない私が自動売買するためにどのように起動しているかを紹介していきます。

自動売買するにはトリガーが必要

自動売買を行う上で「そもそもどのように自動売買のプログラムをスタートするの?」と感じる方もいるでしょう。最初にまとめてしまうと以下のようになります。

  • 最初だけ手で起動して無限ループで動かし続ける
  • パソコンに元々ある機能を使って定時に起動する

前者はとにかく最初の起動だけは手で動かして、あとは無限ループでプログラムにお任せという方法です。プログラムの3つの基本処理である「順次」「条件分岐」「繰り返し」を使い分けるだけで、無限に自動売買を続けるプログラムを作ることは比較的簡単です。

しかし、私は無限ループが好きではありません。プログラムを止めたい場合にはプログラムを強制終了する必要があるからです。その場合、プログラムが思わぬところで止まることで取引が中途半端なところで止まってしまい、ポジションが残ったまま止めてしまうことがあるからです。

プログラムを止めたいケースとしては、「パソコンを再起動したい場合」「処理を見直すためにプログラムを直したい場合」などがありますが、最も困るのが「マーケットが大きく動いてそのロジックでの取引を今すぐ止めたい場合」でしょう。そうなると、ポジションが残ったまま止めてしまうことは何としても避けなければなりません。

必然的に後者の定時起動を行うという方法を選ぶことになります。

定時起動の設定は実はそれほど難しくない

パソコンにそれほど強くない方であっても、自動的にある処理を定時に起動させることは意外にも難しくありません。例えばMacでは以下のような方法が考えられます。

  • cronを使う(UNIX/LINUXで使われる方法)
  • launchdを使う(Macではcronでなくこちらが推奨されている)
  • AutomatorとCalendarを使う

cronやlaunchdという機能自体はMacに標準で入っています。しかしターミナルでvimエディタから設定ファイルの編集が必要だったり、思わぬところに設定が分かりにくい落とし穴となる箇所があったりなど行き詰まってしまうことが多いです。

そのため、パソコンにそれほど詳しくない方はAutomatorとCalendarを組み合わせた方法がおすすめです。何時何分に起動するかという最初に設定だけは面倒ですが、止めたいときにもダミースクリプト起動に置き換えることで簡単に動作を止めることができます。

ちなみにWindowsのパソコンでも「タスクスケジューラ」という機能で定時起動の設定を行うことが可能です。

AutomatorとCalendarを使った定時起動の方法

ここでは早速AutomatorとCalendarを使った定時起動の方法を紹介していきましょう。

Automatorの設定

タイマー

まずはAutomatorを使ってapp化することから始めます。Calendarで実行できるようにするためにはappというMacのアプリケーション形式にする必要があるというだけです。

例えば、ここではサンプルとしてある決まった時間から3分後に通知が来るようなタイマーを設定してみましょう。その設定手順はこちらの記事に記載されていますのでぜひ作ってみてください。

少しだけ補足すると、私はターミナルをbashで使っていますので、Automatorのシェルを「/bin/bash」に指定しています。また、Automatorが起動されるのはどうやらホームディレクトリではないらしく、Pythonがうまく実行できない場合には以下のように記載すると多分うまくいきます。

pyファイルの置き場所はうまく変更してあげましょう。

python3 /Python/practice/ramenTimer.py

ちなみにシェルスクリプトの内容に#をつけてコメントとすることもできますが、実行するものが何もないとエラーになります。あらかじめ何もしないPythonスクリプトを別に用意しコメント行に書いておけば、いざと言うときにAutomatorの実行するシェルスクリプトにコメントをつけかえることで簡単に無効化することができます。

Calendarの設定

いよいよ実際にCalendarから自動起動を設定していきます。

先ほどAutomatorで設定した3分タイマーのappを使っていきましょう。その設定手順は、こちらの記事を参考にしてみてください。

とりあえず3分タイマーの起動だけであれば、ここまでで実現することができました。

ここではさらに設定を追加してみましょう。例えば定期的に起動させたい場合、端末がスリープに入るとCalendarから起動されなくなってしまいます。環境設定から設定を2箇所変更しておきましょう。

システム環境設定 > 省エネルギー

省エネルギー

システム環境設定 > 通知

通知

これでディスプレイがオフになっていても通知される、つまり設定したCalendarイベントが実行されるようになります。

まとめ

ここまで自動売買のプログラムをどのように起動するか考えてみました。あまり詳しくない方にはAutomatorとCalendarの機能を使うことで簡単に決まった時刻に起動する設定を行うことができます。

ここからは実際に自動売買を行うための準備をしていきましょう。関連する次の記事もおすすめです。