ストキャスティクスを用いたBTCFX自動売買トレードbot開発

皆さんこんにちは!
今回はわりとメジャーなオシレータ系のテクニカル指標であるストキャスティクスを使ったトレードについて簡単に説明します。

なぜストキャスティクスを使うのか、ストキャスティクスを使うメリットは何なのかについて私なりの考えをお伝えし、後半には参考となるソースコードについて記載します。
ソースコードについては、ある程度のチューニングは可能な形としてますので、チューニングと工夫したロジックを組み合わせることで収益が挙げることができるbotをつくることは可能かもしれません。

※ソースコードはあくまで参考です。

ストキャスティクスとは何か

ストキャスティクスとは、ある期間における高値、安値に対して、現在の終値がどの位置にあるのかを数値化したものです。
計算式は下記になります。

%K = (現在の終値 - 最安値) / (最高値 - 最安値)

上記の通りとてもシンプルな計算式で示せますが、大変強力なものであり、レンジ相場において売られ過ぎ、買われ過ぎを判断するものになります。

また先ほど算出した%Kは相場の変化に大きく反応するため、期間3などで移動平均化した、%Dやそれをさらに移動平均化した%Sが使用されることがあります。

私が今回作成しているbotはこの%Kと%Dのクロスを検知しトレード実行するものになっています。

なぜストキャスティクスを使うのか

ストキャスティクスを使う理由について説明しますがあくまで私の考えなので参考程度にしてください。

今やトレードbotの開発に関するノウハウは様々なブログ等で紹介されていると思います。
その中で特に多いのが、移動平均線を使ったものや、ドテンくんでも話題になったチャネルブレイクアウトでトレード実行するものです。
これらは有名で強力ですが、反応が遅いのが欠点です。

例えば移動平均線はトレンドを把握するのには有効ですが、のみをトリガーとしたトレードでは相場に対する反応が遅く、トレード数も少ないものになります。またレンジ相場では明らかに不利です。

ほぼ同じことがチャネルブレイクアウトを基にした戦略でも言え、ブレイクしたがすぐに押し目を迎えれば想定した収益を得ることができません。

もちろんこれらに工夫を凝らしたロジックを追加すれば、ポジション後に押し目を迎えるなどの事象は防げるかもしれません。しかし肝心のトレード数はどうなるでしょうか。

つまりこれらはトレンドがある相場では強力に動作するがレンジ相場では難しいと言えるのではないでしょうか。
(一般にレンジ7割 トレンド3割と言われます)

比較するとストキャスティクスでは、騙しが多いですが、相場に対する反応が早く、レンジ相場で強力に作用します。

上記がストキャスティクスを用いる理由になります。

ロジックについて

ここまでストキャスティクスの特徴についてざっくり書いてきましたが、ここから当該botの特徴について説明していきます。
下図を参照してください。これは2018/6/23 20:00前後の5分足チャートです。
大きなブレイクアウトもなく面白くない相場といえるでしょう。

□で囲われた部分を注目してください。(上部分が5分足チャート、下部分がストキャスティックス値になります)
このようにストキャスティックスはチャートに対してとても敏感に反応していることがわかると思います。

アルゴリズムについて

次に当該botのアルゴリズムについて説明します。
下記のステップとなっています。

⑴イニシャライザで各種パラメータを読み込む
⑵Cryptowatchから所定の期間足を取得する(json形式となっている)
⑶⑵のデータを使用し期間14で最大値と最小値を取得
⑷⑶からストキャスティックス値(%S , %D)を算出
⑸%Kが%Sより強い場合はロング、%Sが%Kより強い場合はショートを実行
⑹逆事象が発生した時にクローズ

上記の通りとてもシンプルなロジックです。
先ほどの図に戻ってください。チャートが上昇する前に%Kが%Dを超える形でクロスしていることが分かります。つまりここでロングすれば良さそうです。
そして次に%Dが%Sを超える形でクロスし、チャートは下落を始めています。
ここでショートですね。
もちろん全てこの単純なロジックで収益を上げれるとは限りません。

ソースコードについて

次にソースコードを掲載してます。
ライブラリ「pybitflyer」を事前に導入しておいてください。
またjsonファイルについては「set.json」で保存してください。

ここから先は

5,953字

¥ 400

この記事が気に入ったらサポートをしてみませんか?