在本教程中,我将演示如何开发一个从交易的外汇API订单流(贸易磁带)服务中检索实时订单流(贸易磁带)数据的Python应用程序。 TraderMade为各种外汇,金属和CFD产品提供实时订单流(贸易磁带)数据。可以在我们的订单流网页上获得更多信息。
让我们开始!
我们必须首先配置我们的编码环境,这将在三个简单的阶段完成。
设置
1)安装Python
2)安装pip
3)设置项目
步骤1.安装Python
对于Windows,您可以从Windows App Store使用Python应用程序或从python.org下载Windows安装程序。
在Linux上,执行$ sudo apt-get update $ sudo apt-get install python3.9在安装python之前更新apt-get。
步骤2:设置PIP
PIP默认在Windows上安装。
在Linux的情况下:
apt-get安装python3-pip $ sudo
步骤3.设置项目
制作一个新目录,以保留您的软件;我命名了我的 /websocketdrofflient。
现在,我们可以安装所需的库;在这种情况下,我们只需要安装一个外部库,即websocket客户端。
PIP安装Windows和Linux的WebSocket客户端。
是时候写一些代码了。
在您的目录中创建一个新的文件安排。
flowtestclient.py如果您刚刚开始,则可以在您喜欢的编辑或记事本/vi中完成此操作。
因为这是一个实时Websocket,因此我们希望该程序只要有实时连接,就可以继续运行。我们使用线程类,并且WebSocket forever()选项可以实现此操作。
导入库。
import websocket
import time
try:
import thread
except ImportError:
import _thread as thread
f = open("webSocketOrderFlowTester.log", "a")
发挥功能
我们还必须编写将处理WebSocket-rorderFlowClient类回调的例程。这些是适用于任何Websocket的标准处理程序。我们需要将我们的登录详细信息退还给Tradermade Websocket,我们可以通过加入免费订单流量试验来获得。
def on_message(ws, message):
print(message)
f.flush()
def on_error(ws, error):
print(error)
def on_close(ws):
print("### closed ###")
def on_open(ws):
def run(*args):
ws.send("{"userKey":"USER_KEY")
thread.start_new_thread(run, ())
现在我们拥有了记录器和处理程序,我们可以构建Websocket,我们将在程序的主要方法中完成。当您注册订单流量(交易磁带)提要的试用时,将为您提供一个必须输入到下面的代码块中的连接URL。
if __name__ == "__main__":
ws = websocket.WebSocketApp("ORDER_FEED_ADDRESS",
on_message = on_message,
on_error = on_error,
on_close = on_close)
ws.on_open = on_open
ws.run_forever()
启动程序
对于Microsoft Windows:
orderflowtestclient.py $ python
在Linux的情况下:
orderflowtestclient.py $ sudo python3
这就是全部!现在,您将在日志和控制台中看到实行订单流量(贸易磁带)速率。
Connected
{'id':4208407324,'acc':'0159809','s':'AUDJPY','amt':-10000.0,'ts':'20210819-08:06:38.039000','price':78.596,'time':1629360398}
{'id':4208407344,'acc':'0319192','s':'AUDJPY','amt':-11000.0,'ts':'20210819-08:06:38.509000','price':78.599,'time':1629360398}
{'id':4208407354,'acc':'0901885','s':'EURCHF','amt':-2000.0,'ts':'20210819-08:06:38.524000','price':1.07085,'time':1629360398}
{'id':4208407374,'acc':'0159809','s':'AUDJPY','amt':-50000.0,'ts':'20210819-08:06:39.679000','price':78.602,'time':1629360399}
{'id':4208407384,'acc':'0159809','s':'AUDJPY','amt':-500000.0,'ts':'20210819-08:06:39.679000'price':78.602,'time':1629360399}
{'id':4208407394,'acc':'0159809','s':'AUDJPY','amt':-45000.0,'ts':'20210819-08:06:39.679000','price':78.602,'time':1629360399}
{'id':4208407404,'acc':'0175519','s':'GBPJPY','amt':15000.0,'ts':'20210819-08:06:40.382000','price':150.21,'time':1629360400}
{'id':4208407414,'acc':'0319192','s':'AUDJPY','amt':-10000.0,'ts':'20210819-08:06:40.970000','price':78.599,'time':1629360400}
完整的代码如下:
import websocket
import time
try:
import thread
except ImportError:
import _thread as thread
f = open("webSocketTester.log", "a")
def on_message(ws, message):
print(message)
f.write(message + "
" )
f.flush()
def on_error(ws, error):
print(error)
def on_close(ws):
print("### closed ###")
def on_open(ws):
def run(*args):
ws.send("{"userKey":"USER_KEY")
thread.start_new_thread(run, ())
if __name__ == "__main__":
ws = websocket.WebSocketApp("ORDER_FEED_ADDRESS",
on_message = on_message,
on_error = on_error,
on_close = on_close)
ws.on_open = on_open
ws.run_forever()
另外,请访问我们网站上发布的教程:
Forex Order Flow Using Python WebSocket
访问其他教程:
Data Visualization Python