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への自動投稿の仕組みはこのページを参考にしました。

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

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

 

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

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

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

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

 

# 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

 

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

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

 

dt_now = datetime.now()
lastweek = datetime.today() - timedelta(days=7)

 

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

 

article_title = '【FX自動取引記録】'+ str(dt_now.year) + '年' + str(dt_now.month) + '月' + str(dt_now.day - 6)  + '日週'

 

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

 

article_content ='''



<h2>今週の成績</h2>
<table class="fx-table">
...
...
...
'''
post_article('draft', '', article_title, article_content, category_ids=[7], tag_ids=[], media_id=670)

 

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

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

 

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

 

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

取引記録の自動投稿

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

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

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

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

完成品

完成品はこちら。

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

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

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

わくわく~~