From 76b8363564fd99bdfdd7a9b29c16aad7b2d2ca5d Mon Sep 17 00:00:00 2001 From: hongweyu <49824537+hongweyu@users.noreply.github.com> Date: Sat, 19 Jun 2021 06:59:15 +0800 Subject: [PATCH 1/3] Update Baser.java --- src/why/stock/futu/Baser.java | 59 +++++++++++++++++++++++++++++++++++ 1 file changed, 59 insertions(+) diff --git a/src/why/stock/futu/Baser.java b/src/why/stock/futu/Baser.java index 190ae97..10062f5 100644 --- a/src/why/stock/futu/Baser.java +++ b/src/why/stock/futu/Baser.java @@ -25,6 +25,65 @@ public static String bytesToHex(byte[] bytes) { return new String(hexChars); } + public static String octal2String(String octal, String split){ + Vector strs = Util.strSplit(octal, split, true, false, new Vector()); + for(int i=1, n=strs.size(); i> 8) << 16 | (0xFF & x >> 16) << 8 | (0xFF & x >> 24); } From 148a7fc90607031bffca201177ac62e908838c82 Mon Sep 17 00:00:00 2001 From: hongweyu <49824537+hongweyu@users.noreply.github.com> Date: Sat, 19 Jun 2021 07:04:14 +0800 Subject: [PATCH 2/3] Update Proto.java auto change utf-8 hex bytes string to normal string for display --- src/why/stock/futu/Proto.java | 32 ++++++++++++++++++-------------- 1 file changed, 18 insertions(+), 14 deletions(-) diff --git a/src/why/stock/futu/Proto.java b/src/why/stock/futu/Proto.java index 0f37769..876bfeb 100644 --- a/src/why/stock/futu/Proto.java +++ b/src/why/stock/futu/Proto.java @@ -40,6 +40,10 @@ public class Proto { public static final int DefaultTimeOut = 3000; + public static void println(GeneratedMessageV3 response){ + System.out.println(Baser.octal2String(response.toString(), ": \"\\")); + } + public static void main(final String... args) throws Exception{ String code = "00700"; @@ -50,31 +54,31 @@ public static void main(final String... args) throws Exception{ Proto ctx = OpenContext("127.0.0.1", 11111, "GetTester"); Thread.sleep(3000); - System.out.println(response = ctx.subscribe(market, codes, Arrays.asList(SubType.SubType_Basic, SubType.SubType_Ticker, SubType.SubType_OrderBook, SubType.SubType_Broker), true)); + println(response = ctx.subscribe(market, codes, Arrays.asList(SubType.SubType_Basic, SubType.SubType_Ticker, SubType.SubType_OrderBook, SubType.SubType_Broker), true)); Thread.sleep(3000); - System.out.println(response = ctx.get_stock_quote(market, codes)); + println(response = ctx.get_stock_quote(market, codes)); Thread.sleep(3000); System.err.println(new Date((long)((Qot_GetBasicQot.QotGetBasicQot.Response)response).getS2C().getBasicQotList(0).getUpdateTimestamp()*1000)); Thread.sleep(3000); response = ctx.get_rt_ticker(market, code, 1000); System.err.println("Ticker " + ((Qot_GetTicker.QotGetTicker.Response)response).getS2C().getTickerListCount()); - System.out.println(response = ctx.get_order_book(market, code, 10)); - System.out.println(response = ctx.get_broker_queue(market, code)); + println(response = ctx.get_order_book(market, code, 10)); + println(response = ctx.get_broker_queue(market, code)); - System.out.println(response = ctx.get_acc_list()); + println(response = ctx.get_acc_list()); List trdAccs = ((Trd_GetAccList.TrdGetAccList.Response)response).getS2C().getAccListList(); TrdAcc trdAcc = Baser.firstAcc(trdAccs, TrdMarket.TrdMarket_US, true); TrdHeader trdHeader = Baser.trdAcc2Header(trdAcc); - System.out.println(response = ctx.unlock_trade("", true)); - System.out.println(response = ctx.accinfo_query(trdHeader)); - System.out.println(response = ctx.position_list_query(trdHeader)); - System.out.println(response = ctx.order_list_query(trdHeader)); -// System.out.println(response = ctx.place_order(trdHeader, 400, 100, code, TrdSide.TrdSide_Buy, OrderType.OrderType_Normal)); -// System.out.println(response = ctx.modify_order(trdHeader, ModifyOrderOp.ModifyOrderOp_Normal, ((Trd_PlaceOrder.TrdPlaceOrder.Response)response).getS2C().getOrderID(), 399, 100)); + println(response = ctx.unlock_trade("", true)); + println(response = ctx.accinfo_query(trdHeader)); + println(response = ctx.position_list_query(trdHeader)); + println(response = ctx.order_list_query(trdHeader)); +// println(response = ctx.place_order(trdHeader, 400, 100, code, TrdSide.TrdSide_Buy, OrderType.OrderType_Normal)); +// println(response = ctx.modify_order(trdHeader, ModifyOrderOp.ModifyOrderOp_Normal, ((Trd_PlaceOrder.TrdPlaceOrder.Response)response).getS2C().getOrderID(), 399, 100)); -// System.out.println(response = ctx.subscribe(market, SubType.SubType_Ticker, codes, false)); +// println(response = ctx.subscribe(market, SubType.SubType_Ticker, codes, false)); ctx.close(); Proto proto = OpenContext("127.0.0.1", 11111, true, false, "PushTester", DefaultTimeOut); @@ -82,11 +86,11 @@ public static void main(final String... args) throws Exception{ proto.push_run(new ANotifyReveiver(){ @Override protected void update(Qot_UpdateBasicQot.QotUpdateBasicQot.Response response) throws IOException{ - System.err.println(response); + println(response); } @Override protected void update(Qot_UpdateOrderBook.QotUpdateOrderBook.Response response) throws IOException{ - System.out.println(response); + println(response); proto.close(); System.exit(0); } From 626d11ce9fa08228626ab141f206b3260b35d8b6 Mon Sep 17 00:00:00 2001 From: hongweyu <49824537+hongweyu@users.noreply.github.com> Date: Sat, 19 Jun 2021 07:10:36 +0800 Subject: [PATCH 3/3] Update README.md --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index a78d7d0..2172a4d 100644 --- a/README.md +++ b/README.md @@ -1,5 +1,5 @@ # JavaFutuOpenD -富途开源框架FutuOpenD之Java实现 +富途开源框架FutuOpenAPI之Java实现 # 环境 jdk1.8