LoginSignup
2
1

More than 1 year has passed since last update.

AIシステムトレード開発 RSI_BREAKOUT

Last updated at Posted at 2021-05-16

5/16  RSI_BREAKOUTのPYTHON版

以下、ブログ掲載記事の転記です。
http://1969681.blog66.fc2.com/blog-entry-611.html

リポジトリ
https://github.com/chanmoto/rsi_breakout

ポイント

あえてポイントだけ書くとすると・・・

MT4→Js/Pythonへの移植に関して

 今回、検討した内容に関しては、特段言及する必要もないが、Pythonを使うことで、ずいぶんとMT4をいじくりまわすよりも、やりやすかった。特にデバッグなどが、慣れたVSCODE+PDBの環境なので、サクサクと進めることができた。

 ざくっとかかった工数を書くが・・・

  • JS : 約3日
  • MT5 : 5日 → 結局、断念した。
  • Python : 約1日

 もちろんではあるが、RSIの計算や移動平均計算は、JSで調べたことを展開しているので、Pythonが一番、早いというわけではない。
しかしながら、JSで苦しんだ配列内のスライスループなど、Pythonならではで、やり易かったのは事実である。
 またチャート表示は、JSのライブラリを探すのに、GITHUBを調べまくったが
直ぐにキャンドルとインジケータが表示できたのも、優れたライブラリ環境のあるPythonならではのものである。

オリジナルコード

   Hi_stack[ll] = ArrayMaximum(RSI, ii[1+ll*2]-ii[0+ll*2]+1, ii[0+ll*2]+1);

移植版

a1 = ii[0 + linel * 2] + 1;
a2 = ii[1 + linel * 2] + 1;
b1 = ii[1 + linel * 2] + 1;
b2 = ii[2 + linel * 2] + 1;

(JS)
     HiStack[linel] = RSI.indexOf(RSI.slice(a1, a2).reduce((a, b) => a > b ? a : b), a1);

(Python)
     HiStack.append(RSI.index(max(RSI[a1:a2])))

JSの場合

リストのスライスの書き方が難しい。
Reduceの後のアロー関数とか・・・ なんでやねんという感じ

PYTHONの場合

そもそもスライスは超簡単・・・
それと、配列でネストしてアウトオブレンジを気にするよりも、
リストでAppendした方が圧倒的に低ストレスのプログラミングが可能
(JSも同じことが出来るのかもしれない。MT4/MT5はダメ言語だ。)

RSI平滑化に関して

これは副二次的なものではあるが、この1週間に調べまくった成果で
RSIのダマシを回避するのに、RSI平滑化を取り入れてみた。

若干ながら線の交錯が少なくなっているように思える。
このような小手先の検討というのは、まだまだ取り組む余地がありそうである。

  • 平滑化前 → RSI計算に、CLOSEを使用
    9432_JP_eq.png

  • 平滑化後 → HI,LOW,CLOSEのRSIで平均化
    9432_JP.png

今後の予定

  • Pythonへの移植が完了したため、今後はAIシステム化を検討する。
  • 現時点では、JSはブログ宣伝用(APIパーツ化して、CSVデータを毎日、ダウンロード更新)
  • MT4 → 最強EAの再稼働 → ただしEAで使えるのは、OANDA東京サーバーのみ

→ 最低単位は0.1ロットからなので、資金が一万しかないので、当面はバーチャル口座でテスト運用のみとする

リポジトリ
https://github.com/chanmoto/chanmoto.github.io/tree/master/rsibreakout

2
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
2
1