Python(10)-OANDA APIを使った成行注文

前回、OANDA APIを使ってWebリクエストを行い、ドル円の情報、ドル円のオーダー情報の取得を行いました。前回の内容は下記のリンクになります。

Python(9)-OANDA APIをWebリクエスト

今回は、ドル円の成行注文を行うアプリケーションを作成してみようと思います。前回のドル円情報の取得、ドル円のオーダー情報の取得はGETリクエストを使用していましたが、成行注文の場合はPOSTリクエストで行います。前回のドル円情報の取得のアプリケーションと今回の成行注文のアプリケーションを組み合わせると、シンプルな自動売買アプリケーションができそうですね。

今回は、ドルを5000ドル成行注文で買うアプリケーションを作成しようと思います。では、プログラミンを行っていきます。

Python(9)-OANDA APIをWebリクエスト

前々回は、サードパティが提供しているOANDA APIのライブラリを、前回はOANDAから提供されているOANDA APIライブラリを使用して、ドル円の情報を取得しました。前回、前々回の内容は下記のリンクになります。

Python(7)-OANDA APIを使ってみる

Python(8)-OANDA APIのサンプル コードを動作させてみる

これらのライブラリですが、ライブラリのソースコードを見てみると、WebAPIをリクエストしています。OANDA APIはOANDAから提供されているWebAPIです。HTTPSでリクエストして、JSONデータとして、為替取引情報などを取得しています。下記のOANDA APIの紹介ページにも記載されています。

http://developer.oanda.com/rest-live-v20/introduction/

ということで、実際にPythonを使用して、Webリクエストして情報を取得してみようと思います。現在のドル円の価格情報の取得、オーダーブック情報の取得をしようと思います。OANDAでは、オーダー情報の取得もできます。今のどの価格で買いや売りがはいっているのか情報を取得できます。株式の板みたいですね。それではプログラミングしていきたいと思います。

Python(8)-OANDA APIのサンプル コードを動作させてみる

前回、Third-partyが用意しているライブラリを使用して、OANDA APIを動作させてみました。ドル円の価格を取得するアプリケーションです。前回の内容は、下記を参照してください。

Python(7)-OANDA APIを使ってみる

今回は、OANDAから提供されているライブライを使用して、価格情報を取得したいと思います。OANDAから提供されているライブラリを使用したサンプルコードもOANDAから提供されているので、今回はこのサンプルコードを動作させてみようと思います。まずは、OANDAから提供されているライブラリをインストールしようと思います。ライブラリは下記よりダウンロードできます。

https://github.com/oanda/v20-python

ダウンロードしたzipファイルを解凍すると、フォルダの中に「src」フォルダがあり、その中に「setup.py」がありますので、これを実行します。

python setup.py install

OANDAから提供されているライブラリのインストールが完了したら、次は、サンプルコードをインストールします。サンプルコードは下記よりダウンロードできます。

https://github.com/oanda/v20-python-samples

ダウンロードしたzipファイルを解凍すると、フォルダの中に「setup.py」がありますので、これを実行します。

python setup.py install

サンプルコードを使用するために、下記のライブラリも必要なので、pipやcondaでインストールしてください。

Python(7)-OANDA APIを使ってみる

FXや為替取引で何かプログラミングすると考えるとMetaTrader(MT)が思いつく。最新は、MT5であるが、MT4を使っている人が多いらしい。MetaTraderを使用して自動売買をしている人も多いのではないでしょうか。MetaTraderには、指標やスクリプトを開発できる独自のスクリプト言語MQLが実装されております。MQL言語も使ってみようかなと思ってはいるのですが、もっと一般的な言語でFXや為替取引に使えるソフトウェアをプログラミングしてみたいなと思い探してみました。探してみたところ、OANDA APIを発見しました。OANDA APIはその名のとおり、OANDAから提供されているAPIです。

OANDAは、1995年にカナダで祖業された金融商品取引業社です。海外ではベストブローカー賞などの数々の賞を受賞しています。 1通貨から取引可能なので、初心者の方もFXトレードを始めやすいと思われます。このOANDAから提供されているのがOANDA APIです。PythonやJavascript、Java、C#などさまざまな言語で使用できます。下記のリンク先のように、OANDA APIのサイトも用意されています。

http://developer.oanda.com/rest-live-v20/sample-code/

それでは、早速はじめてみたいと思います。

Python(6)-TCP通信を使用したファイルへの書き込み

今回は、TCP通信を使用してサーバー側のファイルを書き換えてみようと思います。TCP通信に関しては下記を参照してください。

Python(4)-TCP通信

今回も、ダイアログ無しです。IPとポートも直接コード内に書き込んでおきます。また、書き換えを行うファイルも直接コード内に書き込んであります。

TCPサーバーのアプリケーションは、接続が完了すると、クライアント側に「[*] Connection」と文字列を送信して、受信待ちになります。クライアント側からデータが送られてくると、送られてきたファイルを蓄積します。データの受信が完了すると、指定したファイルに書き込みます。

TCPクライアントのアプリケーションは、接続が完了すると、受信待ちになります。サーバー側から「[*] Connection」と文字列を受信すると、送られてきた文字列を表示します。表示が完了したら指定したファイルのデータを送信します。

下記の例は、TCP_Client.exeをTCP_Server.exeで書き換えたものになります。
書き換え前は、TCP_Client.exeを実行すると、クライアントダイアログが表示されます。

書き換え後は、TCP_Client.exeを実行すると、TCPリスナーダイアログが表示されます。

サーバー側のソースコードは下記のようになります。

Python(5)-TCP通信を使用したコマンドラインインタプリタ

今回は、前回作成したTCP通信を使用してサーバー側をコマンドラインで
制御してみようと思います。Pythonで構築したTCP通信ついては下記のページを紹介しています。

Python(4)-TCP通信

前回と同様で、ダイアログ無しです。IPとポートも直接コード内に書き込んでおきます。

TCPサーバーのアプリケーションは、接続が完了すると、クライアント側に「[*] Connection」と文字列を送信して、受信待ちになります。クライアント側からコマンドが送られてくると、送られてきた情報をコマンドラインインタプリタに処理させます。処理した内容を返信します。

TCPクライアントのアプリケーションは、接続が完了すると、受信待ちになります。サーバー側から文字列が送られてくると、送られてきた文字を受信して表示します。表示が完了したら今度は文字を送信できます。

下記の例は、クライアント側がdirコマンドを送信した際の動作になります。

サーバー側の画面では、下記のように表示されています。

サーバー側のソースコードは下記のようになります。

Python(4)-TCP通信

今回は、C#でも作成したTCP通信のアプリケーションをPythonを使用して作成してみようと思います。C#で作成したたアプリケーションは下記のページを参考にしてください。

C#言語(3)-TCP通信(クライアント編)
C#言語(4)-TCP通信(リスナー編)

今回はダイアログ無しです。IPとポートも直接コード内に書き込んでおきます。

TCPサーバーのアプリケーションは、接続が完了すると、クライアント側に「[*] Connection」と文字列を送信して、受信待ちになります。クライアント側から文字列が送られてくると、送られてきた文字を受信して表示します。表示が完了したら今度は文字を送信できます。送信と受信を順番に行うような仕組みになっています。

TCPクライアントのアプリケーションは、接続が完了すると、受信待ちになります。サーバー側から文字列が送られてくると、送られてきた文字を受信して表示します。表示が完了したら今度は文字を送信できます。受信と送信を順番に行うような仕組みになっています。

動作させると下記のように文字列を送受信できます。

クライアント側をC#で作成したアプリケーションでも文字列を送受信できます。。

サーバー側のソースコードは下記のようになります。

Python(3)-ビンゴマシーン

前回、ビンゴマシーンを作成するために、GUIのベース作成を行いました。GUIのベース作成に関しては、下記のページを参照して下さい。

Python(2)-GUI作成

上記のページでGUIの画面の定義、ラベルの作成、ボタンの作成を行いましたが、ボタンを押したときの動作を記述していなかったので、記述しようと思います。まずは、下記のようにButtonを作成する際にcommadオプションを追加します。オプションとして、command=Start、command=Clearを追加しました。このオプションを追加することで、ボタンを押したときに、指定した関数にジャンプします。

#スタートボタン
btn_start = tkinter.Button(frame, text='スタート', command=Start, width=15)
btn_start.pack(padx=20,  side = 'left')

#クリアボタン
btn_clear = tkinter.Button(frame, text='クリア', command=Clear, width=15)
btn_clear.pack(padx=20,  side = 'left')

Python(2)-GUI作成

Pythonにて、GUIを作成したい場合は、tkinterパッケージでGUIを作成して、PythonからGUIを呼び出します。次回、簡易的なビンゴマシーンを作りたいと思いますので、そのGUIを作成しようと思います。とりあえず下記のようなGUIを作成してみます。

まずは、下記のように、tkinterパッケージをインポートします。

import tkinter

次に、下記のようにtkinterオブジェクトを取得します。これが、GUIを作成するベースのオブジェクトとなるので、rootという変数に保存しておきます。titleメソッドに文字列を入力すると、GUIのタイトルに入力した文字が表示されます。geometryメソッドがGUIの画面サイズです。

root = tkinter.Tk()
root.title("BINGO")
root.geometry("400x300")

GUIの画面にラベルを追加してみようと思います。thinkerオブジェクトには、任意の値を渡せないようです。その為、下記のような、コードを記述するとエラーになります。それでは、どうしたらよいでしょうか?

label_past = tkinter.Label(root, textvariable = "過去の数値", font=("",15))

Python(1)-動作確認

2020年より小学校でもプログラミング教育が始まるということで、何か良い言語はないかなと思い、探していたところ、Pythonを試してみることにしました。Raspberry piでも動作するので、PCを用意しなくてもよいので、便利です。まずは、Windows PCでPythonを試していこうと思います。Pythonは下記のサイトからダウンロードできます。

https://www.python.org/

ダウンロードして、インストールが完了したら、まずは、動作確認をしようと思います。下記のように環境変数にPathを追加しておくと、どのフォルダ階層からもPythonコマンドを実行できるので、Pathを追加しておきます。

それでは、コマンドプロンプトを実行して、下記のコマンドを入力してみます。インストールしたPythonのバージョンを確認できます。

python --version

次は、テキストファイルにPythonのコードを記述して実行してみます。下記のようにコードを記述して、.py拡張子で保存します。test-print.pyというファイル名にしました。

print("Hello world.")

ファイルの保存先フォルダにて、下記のコードを実行します。

python test-print.py

下記のように、Hello world.と表示されました。

動作確認はできたので、次回はダイアログを作成しようと思います。

2019年8月14日 | カテゴリー : Python | タグ : | 投稿者 : prog