FXで自動取引(EA)に全てを託してみる実験をはじめた

全ての取引を自動化

前々からFXを自動取引してみたいな~という気持ちはありつつ、

そもそもEA(エキスパートアドバイザー)を作るハードルや、金銭的な余裕がなかったので手は出していませんでした。

普通にEAを買おうとすると安くて1万円、高いと5万円もするので、ハードルが高くて一歩踏み出せませんよね。

コロナウイルスの影響で消費がガクッと減り、且つ余剰資金も少しずつ増え、ボーナスも入るということで思い切ってEAを買ってみました。

購入したEAはWalkure_01、EAを取り扱っているGogoJungleで専ら評判が良いものでした。価格は税込23,800円。決して安くはない買い物でした。。

まあお金で失敗することは慣れているので、社会勉強ということでとりあえず1週間様子見をしていました。

先週の収支では今のところ大損はしなさそうだな~という感想。まぁこれからに期待です。

今は基本的に1万通貨(0.1円動いたら1,000円儲かる or 損する)でやっているので、50万円からはじめて30万円を下回ったら継続するか考えようかな~と思っています。

また複利運用でやってるので口座残高が55万円になったら1.1万通貨(0.1円動いたら1,100円儲かる or 損する)になっていくので、上手くいけば雪だるま式。

逆に50万円を下回ったら0.9万通貨になります。

興味はあるけど中々踏み出せない、という人のための実験ができればと思ってます。億万長者になりたい。

Pythonで取引記録を自動投稿

とはいえ飽き性な自分は、突然FX口座を見なくなるなんてこともあるので、取引記録をこのブログに1週間に1回自動でアップロードする仕組みを作ました。

このブログはWordpressで構築されているので、WP REST APIとPythonを使って自動投稿できるようにしました。

WordPressへの自動投稿の仕組みはこのページを参考にしました。

まず使ったモジュールたち。

[python] # coding=utf-8
import json
import requests
from urllib.parse import urljoin
from datetime import datetime, timedelta
import pandas as pd
import math
[/python]

 

pandasやmathは、最終的に収支を計算するときに使いました。自動投稿だけなら必要ないです。

pandasやrequestsはpip installが必要なので注意です。Pythonを動かすのはVPSなので、pandasが最初動かずに焦りました。

pandasを初めて入れる時は「指定したモジュールが存在しません」というエラーが出がちなので、

pip install pandas==1.0.1 で古いバージョンのものをいれましょう。

 

[python language=”37″] # WordPressのデータ
WP_URL = ‘https://ikko-nishikata.net/’
WP_USERNAME = ‘XXXX’
WP_PASSWORD = ‘XXXX XXXX XXXX XXXX XXXX’

def post_article(status, slug, title, content, category_ids, tag_ids, media_id):
"""
記事を投稿して成功した場合はTrue、失敗した場合はFalseを返します。
:param status: 記事の状態(公開:publish, 下書き:draft)
:param slug: 記事識別子。URLの一部になる
:param title: 記事のタイトル
:param content: 記事の本文
:param category_ids: 記事に付与するカテゴリIDのリスト
:param tag_ids: 記事に付与するタグIDのリスト
:param media_id: 見出し画像のID
:return: レスポンス
"""
# credential and attributes
user_ = WP_USERNAME
pass_ = WP_PASSWORD
# build request body
payload = {"status": status,
"slug": slug,
"title": title,
"content": content,
"date": datetime.now().isoformat(),
"categories": category_ids,
"tags": tag_ids}
if media_id is not None:
payload[‘featured_media’] = media_id
# send POST request
res = requests.post(urljoin(WP_URL, "wp-json/wp/v2/posts"),
data=json.dumps(payload),
headers={‘Content-type’: "application/json"},
auth=(user_, pass_))
print(‘———-\n件名:「{}」の投稿リクエスト結果:{} res.status: {}’.format(title, ‘成功’, repr(res.status_code)))
return res
[/python]

 

基本このページのコピペなんですが、36行目の「result」を「成功」に変えてます。まぁprint自体、自動化してるんで必要ないんですが・・・w

まあresultっていう変数が定義されていない?のでエラーが出ました。関数はここまでで後はこの関数にデータを突っ込むだけです。

 

[python] dt_now = datetime.now()
lastweek = datetime.today() – timedelta(days=7)
[/python]

 

これで日付を取得できるようにしています。先週分の日付も取得できているようにしているのは、先週との差分を取るためです。

 

[python] article_title = ‘【FX自動取引記録】’+ str(dt_now.year) + ‘年’ + str(dt_now.month) + ‘月’ + str(dt_now.day – 6) + ‘日週’
[/python]

 

これで自動投稿する日付を入れた記事タイトルが定義できます。

 

[python] article_content =”’

<h2>今週の成績</h2>
<table class="fx-table">



”’
post_article(‘draft’, ”, article_title, article_content, category_ids=[7], tag_ids=[], media_id=670)
[/python]

 

最後に記事の内容を入れてpost_articleを使って関数にデータを入れれば投稿完了。

投稿の自動化は、以下のような.batファイルを作成してこのQiitaの記事に沿えばOK。

 

[python] # 絶対パスで指定
C:\Users\XXXXX\Desktop\auto.py
[/python]

 

投稿内容をどうやって作っているのかというと、ざっくりこんな感じ。

取引記録の自動投稿

何が一番大変だった勝手MT4のデータを定期的にCSVでダウンロードするもの。

単純なプログラムなのに、MQL4が分からなさ過ぎて6時間くらいかかってしまった・・・。

Webで色々探したけど、曜日と時間を指定して定期的にCSVをダウンロードするEAやインジケーターはなかったので、

また今度解説したいと思います。

完成品

完成品はこちら。

https://ikko-nishikata.net/category/business/fx/

毎週更新されちゃうから、サイトトップのアーカイブには載せないように設定しました。

来週も無事更新されるかどうか楽しみ半分、心配も半分です。

わくわく~~