- vừa được xem lúc

Làm ứng dụng copytrade trong chứng khoán

0 0 17

Người đăng: Nam Nguyen

Theo Viblo Asia

Bài toán: Anh Nam là một chiên gia chứng khoán lẫy lừng với 10 năm kinh nghiệm mua đỉnh bán đáy. Với khả năng trading thần sầu của mình, nên anh Nam đã có 1 lượng tín đồ rất lớn và có nhu cầu được đi lệnh theo anh. Một công ty chứng khoán VXX thấy tiềm năng của việc này nên đã phát triển tính năng "COPY TRADE", giúp cho các tín đồ của anh Nam có thể copy lệnh của anh Nam.

Ở bài toán này, mình sẽ sử dụng redis để có thể xử lí được lượng lớn khách hàng copy và có performance nhanh nhất có thể.

Chúng ta có thể sử dụng Redis để lưu trữ danh sách khách hàng đang copy trade của chuyên gia và sử dụng các command Redis như PUBLISH và SUBSCRIBE để kích hoạt lệnh copy trade cho từng khách hàng khi chuyên gia đặt lệnh. Lưu trữ danh sách khách hàng đang copy trade của chuyên gia trong một sorted set với key là mã chuyên gia và score là thời điểm mà khách hàng đặt lệnh copy trade. Khi chuyên gia đặt lệnh, chúng ta sẽ thực hiện việc publish lệnh copy trade đó với một message cho mỗi khách hàng đang copy trade của chuyên gia. Mỗi khách hàng đăng ký sẽ đăng ký cho một channel riêng, trong đó có thể đăng ký theo cặp mã chuyên gia và mã khách hàng, chẳng hạn expert1_customer1.

Dưới đây là một ví dụ về việc sử dụng Redis để xử lý copy trade:

// Thiết lập Redis
Jedis jedis = new Jedis("localhost", 6379); // Lưu danh sách khách hàng đang copy trade của chuyên gia vào Redis sorted set
jedis.zadd("expert1_customers", System.currentTimeMillis(), "customer1"); jedis.zadd("expert1_customers", System.currentTimeMillis(), "customer2");
//... lưu tất cả khách hàng vào Redis sorted set // Đăng ký channel của từng khách hàng để nhận lệnh copy trade
for (String customer : jedis.zrange("expert1_customers", 0, -1)) { String channel = "expert1_" + customer; jedis.subscribe(new JedisPubSub() { @Override public void onMessage(String channel, String message) { // Xử lý lệnh copy trade cho khách hàng tại đây } }, channel);
} // Khi chuyên gia đặt lệnh copy trade
String command = "LONG VN30F2M AT 1,038.4";
for (String customer : jedis.zrange("expert1_customers", 0, -1)) { String channel = "expert1_" + customer; jedis.publish(channel, command);
} 

Trên đây mình trình bày các khá đơn giản trong bài toán COPY TRADE. Anh em có ý tưởng nào hay thì comment phía dưới nhé.

Bình luận

Bài viết tương tự

- vừa được xem lúc

Tổng hợp các bài hướng dẫn về Design Pattern - 23 mẫu cơ bản của GoF

Link bài viết gốc: https://gpcoder.com/4164-gioi-thieu-design-patterns/. Design Patterns là gì. Design Patterns không phải là ngôn ngữ cụ thể nào cả.

0 0 277

- vừa được xem lúc

Học Spring Boot bắt đầu từ đâu?

1. Giới thiệu Spring Boot. 1.1.

0 0 257

- vừa được xem lúc

Cần chuẩn bị gì để bắt đầu học Java

Cần chuẩn bị những gì để bắt đầu lập trình Java. 1.1. Cài JDK hay JRE.

0 0 37

- vừa được xem lúc

Sử dụng ModelMapper trong Spring Boot

Bài hôm nay sẽ là cách sử dụng thư viện ModelMapper để mapping qua lại giữa các object trong Spring nhé. Trang chủ của ModelMapper đây http://modelmapper.org/, đọc rất dễ hiểu dành cho các bạn muốn tìm hiểu sâu hơn. 1.

0 0 180

- vừa được xem lúc

[Java] 1 vài tip nhỏ khi sử dụng String hoặc Collection part 1

. Hello các bạn, hôm nay mình sẽ chia sẻ về mẹo check String null hay full space một cách tiện lợi. Mình sẽ sử dụng thư viện Lớp StringUtils download file jar để import vào thư viện tại (link).

0 0 55

- vừa được xem lúc

Deep Learning với Java - Tại sao không?

Muốn tìm hiểu về Machine Learning / Deep Learning nhưng với background là Java thì sẽ như thế nào và bắt đầu từ đâu? Để tìm được câu trả lời, hãy đọc bài viết này - có thể kỹ năng Java vốn có sẽ giúp bạn có những chuyến phiêu lưu thú vị. DJL là tên viết tắt của Deep Java Library - một thư viện mã ng

0 0 124