Python Websocket客户端 - 实时订单流(贸易磁带)
#python #websocket #forex #orderflowdata

在本教程中,我将演示如何开发一个从交易的外汇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

Python Development Kit for Forex and CFDs