Pythonで人工知能AIを開発するのが夢です。
はいどうもこんにちは。実はPython初めてまだ1年半のchibamaxです。
今回はPythonコードを用いて為替レートを取得しよう!というテーマです。
Anaconda Promptでpyファイルを開けるようになったけどもっと色々なことがやりたいわ
せっかく起動できるようになったので色々なことがやりたいですよね。
まずは簡単なコードから覚えていくことが大事です。
今回は為替レートを取得する方法を紹介しています。
★前回記事
為替レートの取得先
今回はYahoo!ファイナンスから為替レートを取得(スクレイピング)します。
本来ならOANDAなどのFXを自動売買する取引所のレートを取得するべきなのですが、OANDAからチャートを取得するには本口座もしくはデモ口座を開設する必要があります。(口座開設方法は次回開設していきたいと思います)
米ドル/円のレートです。
Bid(売値)とAsk(買値)がありますが、今回はBidを選びます。
※為替に詳しい人なら当然のことですが、土日は休場となりますのでレートは変わりません。
これならOANDAの口座を開設しなくてもレートを簡単に取得できるわね
レート取得コードを実行しよう
いきなりですが、ドル円のチャート取得コードです。
from bs4 import BeautifulSoup
import urllib.request as req
#ドル円チャート取得
def dollar():
url="https://info.finance.yahoo.co.jp/fx/detail/?code=USDJPY=FX"
res = req.urlopen(url)
soup = BeautifulSoup(res, 'html.parser');
values = soup.select_one("#USDJPY_detail_bid").findAll(text=True)
rate = float(''.join(values))
return rate
rate = dollar()
print("USD/JPYレート{}".format(rate))
ちなみに Beautiful Soup というHTMLからデータを抽出するライブラリをインストールする必要があります。
pip install beautifulsoup4
pip installコマンドをプロンプトでそのまま実行するだけです。
インストールが完了したら、早速実行してきましょう。
実行結果
はい、これでドル円の売値レートを取得することができましたね。
アナコンダプロンプトを利用してPythonコードを実行できるのね
コード内容の解説
上から”簡単に”コードの中身の解説をしていきたいと思います。
ちなみにchibamaxもほとんど中身を理解していません。一つ一つ理解できていることにこしたことはありませんが、複雑なプログラムほど文が長くなっていき、頭がついていきません。
正直プログラムは動けばいいと思っています。なので優秀な人が作ってくれたコードをコピペしていくこともプログラミングだと思っています(ク○発言)
from bs4 import BeautifulSoup
import urllib.request as req
まず上二行は「才能ある人が開発したライブラリ」をインポートします。
Beautiful Soup4 – HTMLからデータを取得するもの
urllib.request – URLを開くためのもの
#ドル円チャート取得
def dollar():
url="https://info.finance.yahoo.co.jp/fx/detail/?code=USDJPY=FX"
res = req.urlopen(url)
soup = BeautifulSoup(res, 'html.parser');
values = soup.select_one("#USDJPY_detail_bid").findAll(text=True)
rate = float(''.join(values))
return rate
次がチャートを取得するコードです。
一気に長くなってしまい、わけが分からなくなるかと思いますが、正直にいいます。
ほぼコピペです。
中身を全て理解する必要はないのです。なので端折って簡単に説明していきます。
# をつけるとプログラム上では無視されるので説明を書くのに利用できます。
def ****(): – これは使用度の高いものです。 defとはdefineのことであり、関数の呼び出しが行えます。
url~~からは段落がついています。これはPythonの決まりです。最終行のreturnまでが一つの関数の塊となります。
あとはURL内の”USDJPY_detail_bid”という部分の値(為替レート)を抜き出してrateという変数に当てていれるだけです。
rate = dollar()
print("USD/JPYレート{}".format(rate))
最後二行は、先程の関数を呼び出してprint(出力)するというものですね。
勘のいい人はもうお気づきかと思いますが、これ通貨ペア部分(USDJPY)を書き換えることによってユーロやポンドなどの様々な通貨のレートも取得することができます。
優秀な人が書いたコードをコピペすることによって知識が無くてもなんとかなるのね
無限ループさせよう
先程のコードだと一々実行しなければなりません。今度はレートを自動的に10秒おきに表示させてみましょう。
from bs4 import BeautifulSoup
import urllib.request as req
import time
#ドル円チャート取得
def dollar():
url="https://info.finance.yahoo.co.jp/fx/detail/?code=USDJPY=FX"
res = req.urlopen(url)
soup = BeautifulSoup(res, 'html.parser');
values = soup.select_one("#USDJPY_detail_bid").findAll(text=True)
rate = float(''.join(values))
return rate
while True:
rate = dollar()
print("USD/JPYレート{}".format(rate))
time.sleep(10)
追加コードの説明です。
import time
timeモジュールを追加することによって時間を扱うことができるようになります。
while True:
while文で無限ループ処理を行うことができます。無限ループしたいコードはこの下に段落をつけて記入する必要があります。
time.sleep(10)
time.sleepは待機コマンドです。括弧内は秒数を指定できます。今回は10秒待機ですね。つまり10秒おきにレートを取得し続けます。
ループは無限に続くので、終了する際は「ctrl+c」で強制終了させます。
ちなみに今回の段落はTabキーによるものですが、スペースキーのものは異なり、混合してしまうと実行エラーになります。(横線がtab、点はスペース)
IndentationError: unindent does not match any outer indentation level と出てしまいましたね。
tabキーのものはー、スペースだと・・・・となるので上記エラーが出たらそこを疑いましょう。
自動売買に無限ループは欠かせないわね
まとめ
いかがでしたでしょうか?
今回はYahoo!ファイナンスより為替レートを取得するというものでしたが、実際に自動売買する際はOANDAよりチャートを取得します。
レートやチャートを取得することは自動売買をする際に必須となってきます。
それ以外にも関数の呼び出しや無限ループ、待機処理も非常に重要なコマンドになってきます。
全てを理解する必要はなく、様々なコードの組み合わせによってプログラムを作っていくこともできるのですね。
ブログの参考にしている書籍は「金持ち父さん貧乏父さん」です。
これは”人生の攻略本”だと言えます。
コメント