Nhiều nhà tài trợ cá nhân cũng hỗ trợ dự án này thông qua các khoản đóng góp nhỏ liên tục. Tại sao không tham gia cùng họ?
phiên bản tương thích
Cái ổ cắm. Giao thức IO đã trải qua một số phiên bản và một số trong số này đã đưa ra các thay đổi không tương thích ngược, có nghĩa là máy khách và máy chủ phải sử dụng các phiên bản tương thích để mọi thứ hoạt động
Nếu bạn đang sử dụng máy khách và máy chủ Python, cách dễ nhất để đảm bảo khả năng tương thích là sử dụng cùng một phiên bản của gói này cho máy khách và máy chủ. Nếu bạn đang sử dụng gói này với một máy khách hoặc máy chủ khác, thì bạn phải đảm bảo các phiên bản tương thích
Biểu đồ tương thích phiên bản bên dưới ánh xạ các phiên bản của gói này với các phiên bản triển khai tham chiếu JavaScript và các phiên bản của Ổ cắm. IO và Động cơ. giao thức IO
Sau khi viết một WebSocket trong GO, tôi quyết định cung cấp một WebSocket Python là công bằng. Tuy nhiên, điều này đã được thực hiện bởi TraderMade tại đây. Vì vậy, tôi quyết định tập trung vào SocketIO. Nếu bạn đang tìm Python REST API hoặc SDK, vui lòng xem bài viết
Tôi sẽ không nói chi tiết về sự khác biệt giữa Websocket và SocketIO nhưng nếu bạn quan tâm thì đây là một bài viết chi tiết. Khi chúng tôi làm việc cùng với hướng dẫn, bạn sẽ thấy tại sao Socketio là lựa chọn phổ biến
Trước khi tiến xa hơn vì mục đích đơn giản, chúng tôi chỉ sử dụng mã máy khách và sử dụng Máy chủ Socketio trực tiếp để đẩy dữ liệu ngoại hối [trong trường hợp này là TraderMade]. Tại sao bạn hỏi? . Ngoài ra, nó đưa ra một ví dụ thực tế đang được sử dụng
Vì vậy, hãy bắt đầu
Nhận khóa SocketIO
Trước tiên, bạn sẽ cần một khóa API để nhận dữ liệu ngoại hối trực tiếp từ Máy chủ Socketio, bạn có thể làm điều đó bằng cách đăng ký tại https. //dữ liệu thị trường. buôn bán. com/signup và chọn Bản dùng thử SocketIO như hình bên dưới. Sau khi bạn có chìa khóa, hãy giữ nó an toàn
Mã thiết lập
Đầu tiên, Cài đặt các Thư viện chính để thiết lập
python-engineio==3.14.2
python-socketio==4.3.1
Có thể có các phụ thuộc khác mà bạn có thể cần nhưng hai phụ thuộc trên cần chính xác để ví dụ hoạt động
Giới thiệu SocketIO nhanh
Trước khi chúng ta tiếp tục tóm tắt nhanh về những gì Socketio thực sự làm trong python
- Trong SocketIO, tin nhắn được gửi và nhận bởi cả máy khách và máy chủ dưới dạng sự kiện
- Sự kiện giúp giao tiếp giữa 2 bên không va chạm
Ok, không cần lo lắng về điểm thứ hai, nó sẽ trở nên rõ ràng hơn khi chúng ta xem qua mã. Để biết chi tiết bạn có thể đọc thêm
Mã phía máy khách
Chúng ta sẽ lần lượt đi qua từng phần của mã. Đầu tiên chúng ta sẽ import Socketio sau đó tạo một đối tượng có tên là “sio” như hình bên dưới. Điều này sẽ thực hiện công việc tạo ứng dụng khách và kết nối với URL
import socketio
# standard Python
sio = socketio.Client[]
Khi chúng tôi có đối tượng, chúng tôi sẽ thiết lập một sự kiện để kết nối ban đầu với máy chủ Socketio [TraderMade]. Như được hiển thị bên dưới, chúng tôi có thể thiết lập một sự kiện có def connect[] sẽ được gọi ban đầu khi chúng tôi kết nối với máy chủ
@sio.event
def connect[]:
print["I'm connected!"]
sio.emit['login', {'userKey': 'Your Streaming API Key'}]
Khi kết nối, chúng tôi sẽ phát ra một sự kiện trên máy chủ, trong trường hợp này là “đăng nhập”. Vì vậy, về cơ bản, chúng tôi đang gửi khóa người dùng ở định dạng JSON mà chúng tôi đã nhận được trước đó khi đăng ký vào máy chủ để nhận dạng chính mình
Bây giờ nó đã trở nên rõ ràng hơn một chút rằng một số sự kiện đang lắng nghe một loại thông tin nhất định. Hãy xem những gì xảy ra tiếp theo
@sio.even
def connect_error[]:
print["The connection failed!"]
@sio.on['handshake']
def on_message[data]:
print['HandShake', data]
sio.emit['symbolSub', {'symbol': 'EURUSD'}]
Connect_error tự giải thích, vì vậy hãy phân tích sự kiện bắt tay. Vì vậy, bắt tay là một sự kiện mà máy chủ [TraderMade] phát ra [gửi tới]. Vì vậy, chúng tôi cần nó trên mã phía máy khách SocketIO nếu không chúng tôi sẽ bỏ lỡ chuỗi liên lạc và không bao giờ nhận được dữ liệu
Bây giờ, rõ ràng là một số sự kiện đang đẩy dữ liệu. Khi nhận được một cái bắt tay, chúng tôi sẽ in dữ liệu được gửi cho chúng tôi
Đã nhận từ máy chủ
Welcome to the TMS Data Feed
Bây giờ chúng tôi có thể yêu cầu dữ liệu ngoại hối nhưng làm thế nào máy chủ biết những gì chúng tôi muốn. Vì vậy, chúng tôi sẽ đăng ký Biểu tượng bằng cách phát ra một sự kiện có tên là “symbolSub” và chúng tôi sẽ gửi {'symbol'. ‘EURUSD’} dưới dạng dữ liệu từ phía khách hàng
@sio.on['price']
def on_message[data]:
print['Price Data ', data]sio.connect['//marketdata.tradermade.com']
Chà, bây giờ khá dễ dàng để xem điều gì đang xảy ra trong sự kiện trên. Cần có URL ở cuối để kết nối cuối cùng sau khi chúng tôi hiểu mã
thì đấy. Chúng tôi đang nhận được tỷ giá ngoại hối cho EURUSD với dấu thời gian
Đã nhận từ máy chủ
Price Data EURUSD 1.20543 1.20543 1.20543 20210303–14:27:59.496
Đây là toàn bộ mã
import socketio
# standard Python
sio = socketio.Client[]
@sio.event
def connect[]:
print["I'm connected!"]
sio.emit['login', {'userKey': 'streaming_api_key'}]
@sio.event
def connect_error[]:
print["The connection failed!"]
@sio.event
def message[data]:
print['I received a message!']
@sio.on['handshake']
def on_message[data]:
print['HandShake', data]
sio.emit['symbolSub', {'symbol': 'USDJPY'}]
sio.emit['symbolSub', {'symbol': 'GBPUSD'}]
sio.emit['symbolSub', {'symbol': 'EURUSD'}]
@sio.on['price']
def on_message[data]:
print['Price Data ', data]
sio.connect['//marketdata.tradermade.com']
Hi vọng điêu nay co ich. Vui lòng để lại nhận xét và đề xuất của bạn. Tôi sẽ theo dõi với một ví dụ về máy chủ trong tương lai