Qiita Teams that are logged in
You are not logged in to any team

Log in to Qiita Team
Community
OrganizationAdvent CalendarQiitadon (β)
Service
Qiita JobsQiita ZineQiita Blog
0
Help us understand the problem. What is going on with this article?
@EasyCording

RSI_BREAKOUT 取扱説明書

RSI_BREAKOUT 取扱説明書

本インジケータを使用した最強EAを公開中
リポジトリ https://github.com/chanmoto/rsi_breakout

1 【使用許諾契約書】

  • 本情報に含まれる情報は、著作権法によって保護されています。
  • 本情報の一部または全てを複製および転載することを一切禁じます。また、転売することも一切禁じます。

2 開発の背景

  • RSIブレイクアウトの開発経緯ですが、実は最初に作ったのはMT-BREAKOUTという、価格にサポートレジスタンスの線を入れて、ブレイクアウトを検出するものを作ったのがきっかけです。
  • システムトレードにおいて、もっとも重要な要素は、トレンドとレンジで、まったく動きが異なりますということです。これを見極めるのが重要であり、価格のみでは判断できないことが多いのです。
  • インジケータにおいて、ダイバージェンスというのが一般的に言われており、これをどうやって検出するのか? それを悩みに悩んでできたインジケータです。

3 特徴

  • テクニカル指標であるRSIに対して、下値支持線、上値抵抗線にてブレイクラインを形成し、そのブレイクラインを割った時点で、売買サインを発生させるオリジナルインジケータです。

3.1 MTブレイクアウト法について

  • MTブレイクアウト法は過去の下値支持線と上値抵抗線から、将来的なブレイクラインを予想ラインとして想定し、それに対してブレイクアウトを検出する方法です。(MTとはちなみに作者のイニシャルです。)

3.1.1 チャートの中身

  • 下値支持線と上値支持線は、実体線と、予想線の二つから構成されています。 IMG_20210315_191753.jpg

3.1.2 実体線

  • 実体線は過去の実績から計算されるトレンドラインです。
  • トレンドラインを形成する高値や安値は、一定区間における極大(小)の値であり、MTブレイクアウト法では移動平均からの乖離率の最大点で定義しています。
  • 最高値および最安値をそれぞれ結ぶことで、乖離率最大のラインを形成します。
  • これより計算されるトレンドラインは過去の株価(既成の事実)から再帰的に計算されるものであって、将来の予想を行うものではありません。

3.1.3 予想線

  • 予想線は実体線を延長したものです。
  • トレンドラインは最高値や最安値を結んだ同一ラインであり、区間のトレンドラインの延長上に形成されやすい特徴があります。
  • 区間トレンドラインからの延長により、将来の想定範囲を決定する線です。

3.2 計算方法

  • ここで時系列データからブレイクアウトを具体的に計算する手法について解説します。
  • 高値、安値については、ヒゲは無視して、基本的には終値で計算しています。 IMG_20210315_191858.jpg

3.2.1 移動平均線の計算

  • 移動平均は、当日を含む株価データで過去の基準日数をベースとして求めた平均値です。
  • いくつかの移動平均線がありますが、MT ブレイクアウト法では指数平滑化移動平均を使っています。
  • 別に乖離率さえ分かれば、つまり何でも良いんですが、ダマシが出にくい特徴があります。

3.2.2 乖離率の計算

  • 乖離率は移動平均値からのズレを示しており、最も乖離が大きくなります。つまり標準偏差が最大(小)になります点です。

3.2.3 極大(小)点の計算

  • 移動平均の上側と、下側でそれぞれグループを生成します。
  • 株価は乖離率が最大(小)に達すると、一度は移動平均線に戻ってくる習性があるので、 株価は移動平均線に対して上、下、上、下という反復を繰り返すことになります。
  • 上は上のグループ、下は下のグループで乖離率の最大(小)を結んでいくことで、区間の支持線と抵抗線が描けることになります。
  • このように乖離率が極大、極小になるポイントにて支持線や抵抗線が発生しやすくなります。

3.3 売買ルール

  • ブレイクアウトを利用した売買手法では、ブレイクアウトが起こった事実がトリガーになります。
  • RSIブレイクアウトでは、この売買ルールに従ったサインも表示します。

買い 予測抵抗ラインを上に抜けた場合

  • 上値抵抗線が破られれば、買いポイント

売り 予測支持ラインを下に抜けた場合

  • 下値支持線が破られれば、売りポイント IMG_20210315_191913.jpg

4 設定値

RSIブレイクアウトの引数は下記のようになっています。

//---- input parameters
extern int Limit=200; 直近のバッファ
extern int nLine=3; 直近ライン数
extern int nPeriod_RSI=14; RSI基準値
extern int nPeriod_MA=50; RSI移動平均
extern int MA_Method=1; 移動平均計算方法
extern double margin = 1; ブレイクアウト判定のRSIに対するギャップ
extern int min_gap = 2; ブレイクアウト連続時の最低時間のギャップ
extern double offset = 10; RSI 移動平均に対する上下のズラシ量

戻り値は下記です。

SetIndexBuffer(0,mov_rsi); RSI移動平均
SetIndexBuffer(1,RSI); RSI
SetIndexBuffer(2,buf1); 高値ライン 過去
SetIndexBuffer(3,buf2); 安値ライン 過去
SetIndexBuffer(4,buf3); 高値ライン 未来
SetIndexBuffer(5,buf4); 安値ライン 未来
SetIndexBuffer(6,buf5); 買いサイン
SetIndexBuffer(7,buf6); 売りサイン

4.1 設定方法

(1) ライン数

  • limit はRSIの移動平均線を計算する際の配列変数の max 数、 nLine はトレンドラインの表示数となっております。
  • インジケータとして、何本もラインを出したい人は nLine を増やし、またRSIやMAを長くしたい場合には、適当に Limit を増やして下さい。
  • 基本的にはインジケータ表示がおかしくならなければOKです。
  • またEAに組み込まれる場合は、最適化計算を早めるために、Limit=200、nLine=2 でOKです。

(2) RSIブレイクアウトのパラメータ

  • nPeriod_RSI は RSI 計算の基準数となっています。
  • nPeriod_Ma と、MA_Method は、移動計算の基準数、移動計算方法となっています。
  • これは関数 iMAOnArray のヘルプを参照ください。
  • margin はシグナルを発信する際の、トレンドラインからのブレイク距離です。

  • min_gap は、極大(極小)の検出における最小間隔であり、この設定値以下の検出値はトレンドラインから無視されます。

  • 値が小さいほど、トレンドラインが細かく定義され、大きいとラフに定義されます。

  • 所詮はコンピュータ計算なので、自分の求めるべきトレンドラインのイメージに合わせて設定すればよいです。

  • 最後は offset であるが、これは RSI の値に対して移動平均を求める時に、移動平均線を上下にスライドさせる値となっています。

  • offset をプラス(上方向)にすれば、下側の支持線が強調されます。

  • offset をマイナス(下方向)にすれば、上側の抵抗線が強調されます。

  • 微妙にピークの捕らえ方が変わってくるので、EAに組み込む時にはパラメータ最適化をやって下さい。

  • 現状のピーク検出アルゴリズムについては、まだまだ改良の余地が残されています。
    IMG_20210315_191930.jpg

IMG_20210315_191948.jpg

IMG_20210315_192008.jpg

5 使用方法

  • ダウンロードはソースファイルになっており、インジケータフォルダにダウンロード後に、コンパイルしてご使用下さい。
  • あなたのエキスパートアドバイザシステムに組み込み、設定値のパラメータ最適化を実施してください。

本インジケータを使用した最強EAを公開中
https://drive.google.com/drive/folders/0B25N1Xc5TfvGMWY0bmJnQlFWYk0
https://github.com/chanmoto/rsi_breakout

6 開発者紹介

Author:motochan

【ご挨拶】
サラリーマンの傍らで、FXをやっています。
初心者のためのテクニカル講座という分かりやすさを重視したブログを開設中
http://1969681.blog66.fc2.com/

0
Help us understand the problem. What is going on with this article?
Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
EasyCording
昔、PC8001でゲームプログラミングやってました。最近はFXのシステムトレード開発や、趣味の語学学習と、ブログ書いたりしています。NASを使って自宅でWEBアプリなんかも作っています。めんどくさがりなので、QIITAでも偉そうな記事は書けません。究極のアナログ人間です。

Comments

No comments
Sign up for free and join this conversation.
Sign Up
If you already have a Qiita account Login
0
Help us understand the problem. What is going on with this article?