MT4 EA無料開発案件 MACDとストキャスティクスを利用したFXの自動売買EA制作
少し前に
"EA開発 バイナリーオプション検証 制作(作成)代行 無料で行いますキャンペーン"
abitra.hatenablog.com
を行いました。(今も行っています。興味ある方は連絡下さい。)
いくつか頂いており色々作成しているのですが今回は依頼頂いた中の一つ MACDとストキャスティクスを利用したFXの自動売買EA制作の案内。
MACDとストキャスティクスを利用したFXの自動売買EA制作
ご依頼内容
ロジックの概要としてはこんな感じ
1) MACDが10%又は90%に達する
2) ストキャスが10又は90に達する
■売りから入る場合
3) ストキャスが90以上でMACDも90%以上でストキャスがMACDより下回った時に売りエントリーで入る
■買いから入る場合
3) ストキャスが10以下でMACDも10%以下でストキャスがMACDより上回った時に買いエントリーで入る
制作にあたってのポイント
ご連絡を頂いた時にMACDの10と90の判定が曖昧でこのEA制作は出来ないだろうなーと考えていました。
簡単に説明するとMACDの数値は10とか90とかの値を返すものではないので判定が出来ないとの判断をしていました。
ご連絡を頂いた方は裁量で行われていたとの事で目視でストキャスの10,90をMACDに当てて確認していましたので「あー無理だなーって」。
ストキャスの10-90とMACDとは何の関係ないのでね。
またMACDのチャートはウインドウの大きさなどによって変わるので個々のウインドウの大きさに依存するのでモニター環境が変われば結果が変わる。
これだとEA化しても意味無いなーって。
ですが話を詰めていくなかでMACDの期間を制限する事で10-90の判定出来るんじゃって事に気が付きました。
MACDとストキャスティクスの自動売買の結論
今回依頼頂いたロジックでの自動売買で利益を出していくのは難しいと考えています。
最適化を行いMACDの期間を変えたり指値逆指値の幅を変えたり数百のロジックで行いましたが利益出す所までもっていくのは厳しそうです。
ご依頼頂き有難う御座います。
またブログへの投稿の許可も有難う御座います。
ご案内
今回のブログの様な感じでロジックのEA化とバックテストを無料で行っています。
無料で行う理由としてはもし利益のでるロジックがあれば私にとってもメリットが大きいので無料でもOKとの考えから。
もし興味があるのであればお気軽にご連絡下さいませ。
hogehogekatoジーメールまで。
時系列解析を利用して株価、FXの未来の価格予想 診断編
前回、前々回と未来の価格予想を行ってきましたが、このモデルがどの程度の精度なのかを診断したいと思います。
"時系列解析を利用して株価、FXの未来の価格予想 実践編"
abitra.hatenablog.com
"時系列解析を利用して株価、FXの未来の価格予想 事前準備"
abitra.hatenablog.com
勉強したてなので間違った認識かもですが精度は小さい方は良いとは考えますが、無理に精度を高めるのもよくないと考えてはいますがどうなんでしょうかねー
機械学習初心者なのでこの辺りの肌感覚が全く分からないので判断が出来ません。
時系列解析を利用して株価、FXの未来の価格予想 で予測の精度を求める
日経225の終値を解析にしようしたモデルの精度を求めたいと思います。
精度の求め方としては先日取得した日経225のCSVデータを利用して過去○○日でモデルを作りそのモデルで予測して実際の結果と比べます。これをデータ分繰り返してモデルの予測と実際の結果が合っているのか離れているのかを確認するといった感じになります。
精度の数値は小さければ小さいほど乖離が少なくモデルが優秀と判断していいのかなーと考えています。
ソースコード
import numpy as np import pandas as pd from fbprophet import Prophet from fbprophet import diagnostics from fbprophet.plot import plot_cross_validation_metric import matplotlib.pyplot as plot data = pd.DataFrame() file_name = 'N225.csv' data2 = pd.read_csv(file_name, skiprows=1,header=None, names=['ds','Open','High','Low','Close','y','Volume']) data = data.append(data2) model = Prophet() model.fit(data) df_cv = diagnostics.cross_validation(model, initial='730 days', period='180 days', horizon = '365 days') fig = plot_cross_validation_metric(df_cv, metric='mape') plot.show()
簡単に書くとこんな感じかな。
やはりpythonは神かなw(ライブラリが神かなw)
やってる事としては730日でモデルを作成して365日検証していいるといった感じ。
時系列解析を利用して日経225の未来の予測モデルの精度
37 日後 => 6.7698 %
365日後 => 21.1282 %
まぁ当たり前っちゃ当たり前で37日の方が精度が高いです。
365日後は21%程になるので参考にはなるけど使えないかなー
とはいえ37日も表を見てもばらつきが多いので微妙。。。
精度を高める対策など
今回は単独で日経225のみデータで検証しているのですが精度をさらに高める為には日経225と他のデータを組みわせるなどしてモデルを作成した方が良いかもしれません。
例えば為替レートデータの組み合わせや日銀の買い入れのデータとの組み合わせなど。
時系列解析を利用して株価、FXの未来の価格予想 実践編
先日の記事
"時系列解析を利用して株価、FXの未来の価格予想 事前準備"
abitra.hatenablog.com
今回実践編って事で日経225を機械学習を行い将来の価格予測を行いました。
時系列解析を利用して日経225の未来の価格予想
概要としては日経225の終値を解析して近い将来(一年後まで)の価格を予測するといった感じの事を行っています。
※本記事の内容は2019年9月13日現在の状況となります。
事前準備
日経225価格データを収集
収集先のデータとしてYahoo financeを利用しています。
"Nikkei 225 (^N225)"
finance.yahoo.com
上記サイトからCSVをDLしています。
学習期間
2009/9/13 ~ 2019/9/12
※2009年からにした理由は特にありません。
何となく10年でキリが良かったので。。。
ソースコード
import numpy as np import pandas as pd from fbprophet import Prophet import matplotlib.pyplot as plot data = pd.DataFrame() file_name = 'N225.csv' data2 = pd.read_csv(file_name, skiprows=1,header=None, names=['ds','Open','High','Low','Close','y','Volume']) data = data.append(data2) m = Prophet() m.fit(data) future_data = m.make_future_dataframe(periods=365, freq = 'd') future_data = future_data[future_data['ds'].dt.weekday < 5] forecast_data = m.predict(future_data) fig1 = m.plot(forecast_data) fig2 = m.plot_components(forecast_data) plot.show()
このコードだけで時系列解析出来るなんてpythonは神か!!
(ライブラリが素晴らしいだけかもですがw)
時系列解析を利用して日経225の未来の価格予想 結果
1年後の価格は現在より下になるかもね。
2019-09-12 => 21759.609375円
2020-09-11 => 21020.437566円
途中結果
15日後
2019-10-03 00:00:00 => 21249.2円
30日後
2019-10-24 00:00:00 => 21240.1円
45日後
2019-11-14 00:00:00 => 21618円
60日後
2019-12-05 00:00:00 => 21885.8円
100日後
2020-01-30 00:00:00 => 21601.2円
200日後
2020-06-18 00:00:00 => 21354.5円
1年後
2020-09-11 00:00:00 => 21020.4円
もし運用するとしたら
10月頃に買って12月頃に売る様な戦略がいいのかなーと。
こんな感じの戦略を立てるかなーと。
備考&注意点
今回の機械学習の精度を確認していないので上記方法を鵜呑みにするのはNGです。
もし上記方法で実際運用するのであればバックテスト等で精度を確認してから行うのがベター
併せて10月頃買いで入っての戦略は現在の状況ですので10月になったら状況も変わるのでその都度、学習させて直近の状況を確認しないとダメかなーと。
感覚的には有効な精度は30-50日迄な感じ。
近く有効な精度の確認と平均的な日数など検証してみたいと思います。
これってビジネスになるんじゃね?
今回は日経225のみの検証ですがこれって各株価や為替などの時系列解析データ公開したら皆助かるんじゃ。
投資助言になるのかな。もし国内でライセンスなどが必要な場合は外国法人で行えばいいのかな。うーん。
なんか上手いことデータ提供など行えばビジネスになりそうな予感。
詳しい方いればコメント頂けると助かります。
その他
iphone 11 買っちまったぜー
現在使っている機種はiphone 6 なのでもう5年位かな。
しかも購入したのではなく親族からのお下がり(中古)。
赤色のやーつ。
ついでにケースも。
正直 iphone 6 でも利用は問題ないのですがねーゲームしないし、動画もiphoneでは見ないし。
購入を決意した理由は写真です。
iphone 11は夜でも写真がきれいに撮れる&超広角の写真が撮れる感じなので購入を決意しました。
本当はPixel 3を考えていましたがapple watchやらを考えるとiphoneになってしまうんですよね。
apple watchがなければandroidに行くのですが。。。悩ましい。
時系列解析を利用して株価、FXの未来の価格予想 事前準備
自分メモ
勉強がてら時系列解析を行ってみました。
時系列解析を利用して株価、FXの未来の価格予想(準備編)
時系列解析とは?
検索にて"時系列解析 とは"のtopページの引用
時系列解析は、過去のデータから未来を予測するという手法です。
たとえば、一年前に魚が豊漁だったら、今年も豊漁になりやすいとか、そういう関係性があるのかというところを調べて予測に活用します。もちろん、回帰分析 のように別の要因の影響を取りこんで予測モデルを作ることも可能です。
機械学習の一つになります。
FXや株取引でこの時系列解析を利用すると将来の株価やFXの価格が予測出来るんじゃないのかなーって事で今回練習です。
時系列解析といってもモデルは色々ある様です。
ARモデル(自己回帰モデル)
MAモデル(移動平均モデル)
ARMAモデル、ARIMAモデル、SARIMAモデル
ARCHモデル、GARCHモデル
状態空間モデル
どれが株価やFXに向いているのかは完全に把握していませんがARCH、GARCHモデルがいいとか何とか。
詳しい方いませんか?w
今回は勉強といいますか実際ちゃんと出来るかどうかの確認なので細かい事は気にせずとりまやってみるの精神です。
時系列解析用のライブラリをインストール
利用するライブラリは"Prophet"です。facebookが開発したライブラリ。
pip install fbprophet
公式には↑これで出来る様なことを書いていますが私の環境では出来ません。
pystanでエラーになります。
pystanをアンインストールしたりインストールしたりを何度かしてもダメでした。
File "c:\users\hogehoge\appdata\local\programs\python\python37\lib\site-packages\pystan\api.py", line 13, in <module> import pystan._api # stanc wrapper
ここでエラーになる。。。
公式又は他のサイト等を拝見する限りanacondaを利用してインストールしろと案内されています。
※最初anacondaでインストールする事に抵抗があったので何か方法ないのかなーって探しましたがダメでanacondaで入れました。
でcondaであればすんなり入ります。
anacondaのpystanをみるとバージョンが2.17.1.0なのでもしかしてーって事で通常?の方のpystan (2.19.0)を削除して2.17.1でインストール。
pip install pystan==2.17.1.0
この後
pip install fbprophet
これでOKになりました。
pystanの中身を確認していないのでなんともですがfbprophetでつまずく方は一度pystan==2.17.1.0にて様子をみてみるといいかもしれません。
公式チュートリアルでテスト
公式ページ
https://facebook.github.io/prophet/docs/quick_start.html
import pandas as pd from fbprophet import Prophet #ライブラリ読み込み df = pd.read_csv('../examples/example_wp_log_peyton_manning.csv') #データのCSV読み込み df.head() m = Prophet() m.fit(df) future = m.make_future_dataframe(periods=365) #365日後までのデータ生成 future.tail() forecast = m.predict(future) forecast[['ds', 'yhat', 'yhat_lower', 'yhat_upper']].tail()
実際書いて動かしてみたコード
表を生成
fig1 = m.plot(forecast) fig2 = m.plot_components(forecast)
これでテスト完了。
感想
なんかそれっぽい結果が出てる気がしますw
■ 注意点
最初powershellで動かしていたのですが表が表示されないんですよねー
Prophetはplotを利用して表を表示しているような感じだったのでmatplotlibを利用してplotするのかなーって事でpyplotを加えてみたりしましたがダメ。
少し色々試したのですがダメでjupyter notebookを利用したらすんなり表示。
結果が違う。
本家の
https://facebook.github.io/prophet/docs/quick_start.html
の方のは
のデータは
3269 2017-01-19 8.170046 7.431801 8.840703
となっているのですが私が作成した結果は
3269 2017-01-19 8.160103 7.482307 8.904917
となります。
本家のデータ
私が作成したデータ
うーん。この差は何だろう。
誰か分かる人教えて欲しいっす。
なんでだろうな。。。
2019/9/2 - 2019/9/7のバイナリーオプション自動売買結果
バイナリーオプション自動売買結果報告です。
不定期ですがバイナリーオプションの自動売買の結果を報告させて頂きます。
今回から始めるので今後継続して結果報告していくか不明ですw
良い報告だけしても意味ないのでマイナスの時の報告が多くなりそうです。
2019/9/2 - 2019/9/7のバイナリーオプション自動売買結果
2019/9/2 - 2019/9/7はマイナスです。
勝率 40.82%
win 20回
lose 29回
幸先悪いです。一か月を通じてプラスになればと考えていますので一週間の結果は気にしない様にはしていますがやっぱり不安にはなりますねー
敗因 負けた理由の考察など
そもそもの勝率が低い週って事もあるのですが指標発表などの時間帯も自動売買を動かしており無駄な負けが増えた可能性があるかな。
フィルターなしでエントリーしていたら?
勝率ですが約54%程でした。
win 70回
lose 60回
対策など
フィルターの再設定などを考える必要があるかもです。
時間フィルターなどは過去のフォワードテスト数カ月分の実績で設定していますが直近一カ月の実績に重きをおくなどすると結果が変わるかもですが、どうしようかなー
ハイローオーストラリア エントリー キャプチャー
※キャプチャーはデモ口座。
FX pythonとパターン認識(機械学習)でハイローオーストラリアとFXを攻めてみる 思考編
現在先日宣言した通りpythonのアレコレを楽しんでいます。
めちゃくちゃ便利なライブラリがたくさんあっていいですねーもっと前からpythonやっときゃ良かった。
youtubeでも初心者向けに説明している動画も多数あるのでこれからプログラム取引始める人はpython一択かと考えます。
本記事は思考だけです。
近くプログラム書いてバックテストしてみたいと考えます。
pythonのライブラリなどを色々弄ってる段階なのでしばらく時間掛かるかなーと。
pythonとパターン認識(機械学習)でハイローオーストラリアとFXを攻めてみる
pythonと言えば機械学習やディープラーニング。
↑これだけではないのですが、私の場合はほぼこれを利用したいが為にpythonを利用する予定です。
バイナリーオプションのエントリーで前から行ってみたかった手法の一つして画像によるパターン認識によるエントリーがあります。
pythonだとある程度簡単に構築出来るかもーって事で事前の思考をまとめてみたいと考えます。
具体的な方法としてはチャートパターンの画像から○○分後の価格を求めてみたいと考えています。
価格といっても正確な価格ではく現在よりも高いか低いか程度が分かればOKの認識。
※通常は始値、終値、高値、安値の数値から次足又は○○分後の価格を予測するのが一般的なのかなーと考えます。
何故チャートの画像でエントリー?
裁量でエントリーする場合はチャートの形はとても重要でチャートの形を見てエントリーを判断しています。
ラインやインジゲーターなども重要なのですが今回はチャート画像での判断の結果を取得したい。
本来は数値から求めるのが一般的な気がしますが、この方法は色々な方が行っているのでちょっと違った方法で試してみたい。
数値よりもチャート画像の方が何となくパターン化出来そうな気がするんですがどうなんでしょうかね。
気がするだけなかもしれませんがw
株とPython─自作プログラムでお金儲けを目指す本。の購入
ついにといいますか薄々考えていましたがプログラムのメイン言語をrubyからpythonに変更予定。
それに伴い以下の本を購入
株とPython─自作プログラムでお金儲けを目指す本 (技術の泉シリーズ(NextPublishing))
購入はこちら =>
私の場合はwebサイトを作りたくて覚えたruby(rails)で、特に考えもなく取引のシステム等々でもrubyを利用していましたが色々使いたいライブラリでrubyが使えない事が多いんですよね。
※無理やりrubyから呼び出したりする事も出来るのかと考えますが、頑張る方向が間違ってますよねー
今なら kindleで購入 キャンペーンで972円で買えます。(55%オフ)
なぜPythonの選択理由。と機械学習、自動売買
Pythonを選択理由としては使いたいライブラリが豊富って事が一番ですかね。
実行速度やプログラム言語としての特性など色々あるのかとは思いますが、正直分かりませんw
ガチのプログラマではないので詳しくないのですが不具合なく動いてくれれば問題ない認識。
インターネット経由で取引を行うのでローカルの実行速度早めてもなーって感じでしょうか。
大量のデータを扱って尚且つ何かしらサービス提供する前提であれば他の言語などが良い場合もあるかと考えますが個人で使うのであればpythonで十分なのかなーって。
またTwitterやブログでフォローしている人の多くがpythonを利用しているので彼らからのソース恩恵を受けたいってのも理由。
備考
今回の"株とPython─自作プログラムでお金儲けを目指す本"の購入は久しぶりにkindleで本を購入しました。
購入ページ => https://amzn.to/2ljBTka
私は本を中古でメルカリなどで購入する事が殆どです。
本にお金を掛ける事に抵抗は少ないのですが定価購入すると少し負けた気持ちになるんですよねw
むしろ中古の前オーナーの書き込み、落書きが何となく好きですし、少し使い込まれた本の方が抵抗なく読める感覚です。
ただ実物の本は場所を取るので何ともですが。。。
今回はセールで55%offでメルカリよりも安く買えるのでkindleにって感じ。
カスタマーレビュー割合をみるとkindle購入者が多かったのでkindleで購入したのも理由の一つかな。
小説や物語などはkindleでも良いと思いますが技術書だとkindleどうなんだろうと考えてしまい今迄積極的に手を出せてませんでした。