【ROS×自作シストレ】”NaMaKe Trader”としてリリースします!

 ※ 本記事は広告・プロモーションを含みます。
シストレ開発

ほぼ全てのソースコードを公開します! たっきん(Twitter)です!

僕が自作している自防売買システム(システムトレード)ですが、今まではアプリケーション・パッケージ部分を非公開としてきました。

しかし、アプリケーションなしでは実際に動かすことができないため、一部のソースコードは公開されていても結局使ってみることができない状態となっていました。

なので今回、お試し用のサンプル・アプリケーションとして、ボリンジャーバンドをつかったシステムトレードを作成して、アプリケーション・パッケージを含むほぼ全てのソースコードをGitHubで公開することにしました!

アーキテクチャは下図のようになります。

また、アプリケーション公開の際に、GutHubのREADMEファイルも充実させて、シストレを稼働させるまでの手順も記載しました。

基本的にはREADMEファイルに記載されている通りの手順を踏むと、自分の環境でサンプル・アプリケーションを動かせるようになるはずです。

実際に動かすことができれば、システム全体の振る舞いを把握することができますし、何よりサンプル・アプリケーションを自分で修正すれば、世界に1つだけのオリジナル・トレードアルゴリズムで実際にトレードすることも可能になると思います。

そうすれば、あなたもシステム・トレーダーになることも夢ではなくなりますね!

用談ですが、システム名を “NaMaKe Trader” にしました!

名前の由来は「モニター前に張り付かず、怠けていても勝手に稼ぐことができるシステム」をコンセプトにして開発したからです。(笑)

※以下、本システムを使用したことによるトレード・スタイルの変化イメージ図になります。

サンプル・アプリケーションの概要

お試し用サンプルアプリケーションのボリンジャーバンド・シストレですが、ソースコードは下記となります。

ボリンジャーバンドを使ったトレード方法は大きく分けて順張り型逆張り型の2種類がありますが、今回僕が用意したサンプルは「順張り型」になります。

具体的に説明すると、下記の条件でEntry、Exitします。

  • +STDに到達 → ロングEntry
    • 利確条件:「Entryレート + 利確幅」へ到達
    • 損切条件:SMAへ到達
  • -STDに到達 → ショートEntry
    • 利確条件:「Entryレート - 利確幅」へ到達
    • 損切条件:SMAへ到達

上図の下段に「状態」と書かれていますが、これはチャートに沿った時系列での状態遷移を表しています。

状態遷移図(ステートマシン図)は下図のようになります。

パラメータ

今回作成したボリンジャーバンドのサンプルアプリケーションでは下記3つのパラメータで稼働するように作りました。

項目
通貨ペアusdjpyeurusdeurusd
時間足m1h1h1
注文数000
SMA値202575
STD値2.02.53.0
利確幅(pips)50200300

上記6項目についてはROSパラメータとして定義しているので、直接ソースコードに変更を加えることなく、数値を変更できるようにしています。

ROSパラメータを定義しているのは下記のYAMLファイルです。

usdjpy/m1/app_bb:
  ros__parameters:
    instrument: "usdjpy"
    granularity: "m1"
    units: 0
    sma_span_list: [20]
    std_coef_list: [2.0]
    take_profit_pips_list: [50]

eurusd/h1/app_bb:
  ros__parameters:
    instrument: "eurusd"
    granularity: "h1"
    units: 0
    sma_span_list: [25, 75]
    std_coef_list: [2.5, 3.0]
    take_profit_pips_list: [200, 300]

ROS Param名と各パラメータ項目の関係性は下表の通りです。

ROS Param名項目
instrument通貨ペア
granularity時間足
units注文数
sma_span_listSMA値のリスト
std_coef_listSTD値のリスト
take_profit_pips_list利確幅(pips)のリスト

app_bb.pyでは上記ROSパラメータを読み込むと、SMA値、STD値、利確幅(pips)のリストの要素数に応じてTradeItemインスタンスを生成します。

簡易的なクラス図で説明すると下図の通りです。

シーケンス図

シストレ全体のROSノードとメッセージ間の繋がり及び、処理の流れを表現すると下図のようなシーケンス図となります。

下図のシーケンス図はあくまでもROSノードとメッセージしか表現しておらず、各クラスやメソッドまでは記述していません。

本来は各クラスやメソッドまで表現すべきと思いましたが、そこまで記述すると図が複雑になり、逆に理解しずらくなると思いましたので省略しました。

参考までに、シストレ稼働中のROSノードグラフは下記のようになります。

さいごに

今回、僕が開発した完全自作シストレを「NaMaKe Trader」としてリリースしました。

今まではアプリケーション・パッケージ部分を非公開としていたので実際に動かすことができなかった人がほとんどだと思います。

また、稼働させるまでの手順もわからない人が多かったと思いますので、GitHubのREADMEファイルに作動させるまでの手順を記載し、手順通りに進めれば誰でも稼働させることができるようにしました。

詳細な設計資料等は不足している感は否めませんが、一旦はお試しレベルで稼働させて全体的な動きを確認できるくらいにまではなったんじゃないのかなぁと思います。

これからも設計資料等は順次作成してGitHubで公開していこうと思っていますので、少々お待ちください。

また、使い方がわからないなどあったら、このブログかツイッターの方にメッセージいただければと思います。

さぁ、この「NaMaKe Trader」を使ってあなたも「怠けトレーダー」になりましょう!(笑)

スポンサーリンク

コメント

タイトルとURLをコピーしました