第12回 AIトレードシステム構築
最近、このブログ更新ができていない・・・
とりあえず、データのスクレイビングを調べていたら、
便利なツールが見つかり、すっかり遊んでいた・・・
今回のチャレンジ
前にPYTHONで書くなんてことを宣言したのであるが。。。
実のところ、使い方を考えていた時に思ったのであるが、
グラフで見栄えを出すところを、WEBページから見せるのに、
PYTHONだと、結局はMATPLOTなどのライブラリに頼ることになり、
そうなると、IMAGE画像をWEBで見るような、ショボいUIになることが想像できる。
実は、RSI_BREAKOUTのインジケータは、ユーザー側でBLOGパーツのような形で
公開できればと考えていて、そうなるとやはりJavascriptで書けたほうが
良いのではないかと、思うようになった。
最終的にAI処理も、サーバー側よりも、ユーザー側のブラウザ(こういうのをエッジ処理というが)
のほうが、やりやすいと思うので、まずはJSで書こうと思う。
(もちろん、これは自分のITスキルを伸ばすことも視野に入れている)
1)データの成形
為替データは、ココから入手した。 セントラルなんとか
参考記事 https://designsupply-web.com/media/knowledgeside/5432/
とりあえず、JSで出来るらしいので安心・・・
2)グラフの表示
JSを使ってチャート表示させるには、いろんなツールがあって悩む
Google Chart https://developers.google.com/char
d3.js https://d3js.org/
さらにnvd3.js https://nvd3.org/
c3.js https://c3js.org/
しかし、ライブラリが多すぎて、さっぱり身につかない。
だからJSエンジニアって、うんざりするんだよねえ・・・
第11回 AIトレードシステム開発
今日から、地道にコーディングをやっていく
ソースコードの置き換え → これまでインジケータの新部分をmql4で書いていた。これをまずpythonに書き換える必要がある。
https://github.com/chanmoto/rsi_breakout
ソースはMQL4であるが、要はCライクな言語である。
最近はPYTHONを触り始めたので、これに書き換えるところから始めることにする。
乖離率の計算は下記
Kairi_buffer[i] = (RSI[i]-mov_rsi[i])/mov_rsi[i];
区間に分けて考えていく
j=0;
for(i=1; j if (Kairi_buffer[i] * Kairi_buffer[i+1] <= 0){ ii[j] = i; j++; if(j>2){ if(ii[j-1]-ii[j-3] j=j-2; } } } } 乖離率の変曲点で、上下をグループ分けする。 if(Kairi_buffer[ii[0]]<0) { for(ll=0; ll { Hi_stack[ll] = ArrayMaximum(RSI, ii[1+ll*2]-ii[0+ll*2]+1, ii[0+ll*2]+1); Lo_stack[ll] = ArrayMinimum(RSI, ii[2+ll*2]-ii[1+ll*2]+1, ii[1+ll*2]+1); } } else { for(ll=0; ll { Hi_stack[ll] = ArrayMaximum(RSI, ii[2+ll*2]-ii[1+ll*2], ii[1+ll*2]+1); Lo_stack[ll] = ArrayMinimum(RSI, ii[1+ll*2]-ii[0+ll*2], ii[0+ll*2]+1); } } ここからが実体線と予想線を作るところ(最大のポイント) for(ll=0;ll { hp1=RSI[Hi_stack[ll]]; hp2=RSI[Hi_stack[ll+1]]; hp1n=Hi_stack[ll]; hp2n=Hi_stack[ll+1]; hp3n=Hi_stack[ll-1]; if(hp2n!=hp1n) { rh=*1;} lp1=RSI[Lo_stack[ll]]; lp2=RSI[Lo_stack[ll+1]]; lp1n=Lo_stack[ll]; lp2n=Lo_stack[ll+1]; lp3n=Lo_stack[ll-1]; if(lp1n!=lp2n){ rl=*2;} for(k=0;k for(k=0;k for(k=1;k<=hp1n-hp3n;k++){ buf3[hp1n-k]=hp1-rh*k;} for(k=1;k<=lp1n-lp3n;k++){ buf4[lp1n-k]=lp1+rl*k;} } for(i=0; i buf5[i]=EMPTY_VALUE; buf6[i]=EMPTY_VALUE; } いかが売買サイン for(i=0; i // SELL if ( buf4[i]>=buf4[i+1] && MathAbs*3<0.001 && RSI[i] < buf4[i] && RSI[i+2] > buf4[i+2] && buf4[i+1] - RSI[i+1] > margin){ buf6[i]=RSI[i]; } else { buf6[i]=EMPTY_VALUE; } // BUY if ( buf3[i]<=buf3[i+1] && MathAbs*4<0.001 && RSI[i]>buf3[i] && RSI[i+2] buf5[i]=RSI[i]; } else { buf5[i]=EMPTY_VALUE; } } return(0); }
第10回 AIシステムトレード
https://qiita.com/EasyCording/items/1fa5780d55424306d1de
久しぶりの更新をしている
最近、AIやらWEBやら、本当に技術の進歩がすさまじく、
この勢いの中で、自分の進化が遅いことに、
すっかりあきれてしまっている。
ここらで初心に戻らないと、本当に潰されそうな気がしてならない。
考えれば、10年ぐらい前の時代が、
すごく時間の流れが緩やかで、
過ごしやすかった気がする。
最近、特にリモートワークで家にいる時間が長くて、
時間はたくさんあるのに、頭の成長ができていないことに
我ながら嘆いている。
(逆を言えば、普段仕事に追われて、勉強する時間が
取れなかったころに比べて、今は真逆の悩み事を抱えている)
AIトレード
半年かけてAIを学んできたことであるが、やはり問題の複雑さをAIで解くことは
非常に苦手であって、逆に言えば、問題を極力簡単にしてあげることが、
やはりAI使いこなしのコツなのではないかと考えている。
前の検討では、PFチャートから何らかの予想を考えていたが、
これはある意味、問題の複雑化が災いして、いかに解かせるのか?
といった、妙なところで試行錯誤していたようだ。
参考記事
http://1969681.blog66.fc2.com/blog-entry-592.html
MTブレイクラインへの適用
AIの得意分野としては、やはりパターン認識と、0/1判断のようなところから
再度、出直してみようかと思う。
以前にMT4のインジケータで、後出しじゃんけんのようなものがあった。
いわゆるデータにあわせて、つじつまを合わせをするものであって、
リアルタイムで出しているサインを、後になって消去してしまうようなものだ。
こういうのをウソ発見器とでもいうべきだろうか?
インジケータが出したサインを、そのあとに控えているAIが、
あたかも、ウソ?、ホント?を出してくれるようなものを
作ればいいのではないか?
幸いながらバックテストを実施すれば、サインが出た時の状況と、
その後、サインが消灯したのかは再現でき、これは大量に学習データを用意することができる。
少なくとも、自分が開発したMTブレイクラインも、少なからず
そういうタイプのインジケータであった。
今回はやはり初心に戻って、当初のインジケータ開発で遭遇していた
つじつま合わせに対して、AIで判定をすることを考えてみたいと思う。
MTブレイクアウトの過去記事はこちら
第九回 AIトレードシステム開発
2021年が1か月たちました。
この間いろいろあったのですが、下記の本を購入しました。
感想を言うと、ディープラーニングの勉強を終えたからといっても、
ファイナンス工学に応用するには、まだまだ先が長いことを痛感しました。
しかしながら、いくつかは参考になったことがあります。
1)トリプルバリア戦略について
これまでボックストレードと言うものがあることを漠然と知っていましたが、
これを機械学習でフィッティングすれば、けっこう面白そうと思いました。
詳細は下記の方の記事に委ねます・・・
https://qiita.com/cryptrader/items/a5e96dca42ddbab58d70
2)定常性とメモリーについて
価格変動には2つの要因がありうる。
定常性 モメンタムのようなその時点での需給バランス要因
どっちが支配的と言うのは、相場によって性格が変わる。
再現性の得やすいのは、やはり定常性だとか・・・
つまりレンジ相場における、RSIなんかがトレード予想に向いている。
https://hawk-tech-blog.com/python-financial-machine-learning-05/
しかし、奥が深すぎて、完全に消化不良・・・( ^ω^)・・・
新年早々・・・
コロナ禍にふと思う・・・
- 昇降机
- ブルブルマシン
- バランスチェア
- 足元ヒータ