パラボリックSARをPythonで処理してMatplotlibでチャート乗せてみる(Python テクニカル指標シリーズ)

2018年6月27日

使っているFX会社はどこ?
自動売買用(1万円キャッシュバック中) → インヴァスト証券
Python API用(FX APIはここしかない) → OANDA ジャパン

こんにちは、新米データサイエンティスト(@algon_fx)です。今週は時間を見つけて、毎日ジムで走ったのですが、今日は気乗りがしないのでお休みです。

FX APIシリーズが続いたので、今日はPythonでテクニカル指標シリーズとして、トレンド指標のパラボリックSARをPythonで処理を行い、Matplotlibで表示させるまでまとめたいと思います。

Ta-libでも計算は可能なんですが、今回はこちらのコードを参考に、ビットコインのレートを使ってパラボリックSARの処理を書いてみました。

【人気記事】

私の機械学習の開発環境&トレード環境を解説

パラボリックSARとは?

パラボリックSARですが、考案されたのは1978年と、これまた年代物のテクニカル指標です。損切りのタイミングを備えたトレンド系のテクニカル指標です。

パラボリックの特徴としては、途転(ドテン)トレードを考えた指標となっています。途転とは、例えば買い注文を持っていたとすると、シグナルが入った時点で、全てを売りポジションに転換するような、為替レートの上下を最大限に利益を取ることを狙った指標です。

ちなみに、ポラボリックトは日本語で放物線という意味です。ぜんぜん、FXとは関係はありませんが、トレードでパラボリックSARを使うと、なぜか私の頭の中には、パラボナアンテナが毎回登場します。

テクニカル指標のパラボリックSARのイメージ(個人差があります)

パラボリックの計算方法

パラボリックSARですが、計算をするには「 AF 」と「 EP 」と呼ばれる2つの計算を行う必要があります。

AFですが、英語ではAcceleration Factorと呼ばれており、日本語では加速因子です。こちらは通常はmin(初期値)とmax(最大値)を設定して、終値が高値を更新するたびに初期値を足し算していきます。

AFの初期値は0.02、最大値は0.2が一般的で、終値が高値を更新した時点で、0.02に0.02つまり0.04へと値が増えていきます。

対して、EPとはExtreme Priceの略で「極大値」と日本語では呼ばれているそうです。計算は非常に単純で、SARが買いシグナルを出している時は、その期間中の最高値。逆にSARが売りシグナルを出している間は、その期間中の最安値となります。

EPとAFがパラボリックSARの計算には非常に重要なのですが、これまた本当にややこしいですよね。色々なページを見て回ったのですが、なぜか若干計算式が異なっていたり、違うこと言っていたりと、混乱しました。

最終的には下記のキャプチャにある通り、マネーパートナーズの公式説明が一番わかりやすかったです。

一番わかりやすかったEPとAFの処理方法。若干、異なる計算方法を紹介しているサイトもいくつかありましたが…。

このAFとEPの計算した値に基づいて、いよいよ主役のSARを算出することが出来ます。SARは英語でStop and Reversalの略で、途転トレードのようにStop(止まれ!=利確しろ)、Reverse(次は反対方向や!=ポジション逆転)という、利益を追求した鬼のようなやつです。

SARの計算方法ですが、下記が式となります。

SAR=(EP−前日のSAR)× (AF) + (前日のSAR)

あれ?SAR自体はとっても簡単な処理ですね(笑)

パラボリックSARの使い方

さて、この計算がめちゃくちゃややこしいパラボリックSARですが、トレードではどのように使われるのかを説明します。

下のチャートですが、ドル円の1分ローソク足にAFを0.0.2 – 0.2設定として計算したSARを表示させたものです。まずは一番左の黒丸1に注目してください。

こちらですが、その少し前の期間ではパラボリックSAR(青線)が相場の下に位置していますが、黒丸1のポイントでパラボリックSARをローソク足が下抜けしました。このタイミングが売りのシングとなります。つまり黒丸1でまずは売り注文を建てます。

次に真ん中の黒丸2を注目ください。パラボリックSAR(青線)をレートが上抜けしています。このポイントが「買いシグナル」で、今まで持っていた売りポジを決済して、次は買いポジに逆転します。同様の流れで黒丸3ではまた、売りシグナルが出たので、買いポジを決済して、今度は売りへ逆転するわけです。

上の例のチャートを見てみると、恐ろしいくらい全てのトレードで利益が確定できそうですが、パラボリックSARには大きな弱点があります。

それは、レンジ相場ではほとんどのケースで「騙し」、つまり、うまく機能しないことです。為替レートが長い期間、一定方向に向かって動いている時ではないと、使えないって訳です。

Pythonを使ってパラボリックSARを計算

さて、この荒々しいテクニカル指標ですが、Pythonで処理をしてみましょう。この荒々しい指標には、同じく荒々しい相場のビットコインのレートをスクレイピングして、パラボリックSARを計算しましょう。(荒々しい)

まずは必要なライブラリをインポートします。最後にMatplotlibを使って、終値とパラボリックSARのチャートも作ってみますので、こちらもインポートしておきます。

次に、ビットコインの価格をスクレイピングしましょう。詳細は「ビットコインやらイーサリアムなど仮想通貨の過去レートをスクレイピングする方法」をご参考ください。

これでビットコインのレートが取れたので、次はややこしいSARを処理する関数を作りましょう。AFは終値と高値の位置により変動しますし、EPは上昇・下降トレンドにより変動します。

またiafとしてAFの初期値を0.02、最大値はmaxafとして0.2として設定をしてあげます。

では、先ほどスクレイピングしたビットコインの相場を、こちらの関数で処理してみます。

最後に、resultから値を切り分けて、matplotlibで終値とパラボリックSARのチャートを作って見ましょう!

大丈夫そうですね!

まとめと次の課題

今回はテクニカル指標シリーズとして、パラボリックSARの使い方や計算方法、さらにPythonを使って処理をして、Matplotlibでチャートを作りました。

計算方法が非常に複雑なパラボリックSARでしたが、上級者のトレーダーさんからは根強い人気のある指標でもあります。

次への課題としては、パラボリックSARはトレンドがはっきりと出ていないと、上手く機能してくれませんので、トレンドを線形回帰のモデルで予測して、パラボリックSARの検証を行って見たいです。

以上です!勉強にお付き合い頂いてありがとうございます!コメントやTwitterで絡んでもらえると嬉しいです!

使っているFX会社はどこ?
自動売買用(1万円キャッシュバック中) → インヴァスト証券
Python API用(FX APIはここしかない) → OANDA ジャパン

2018年6月27日FX トレード

Posted by algon