qidao123.com技术社区-IT企服评测·应用市场

 找回密码
 立即注册

手把手教你怎样利用Java开辟区块链交易所交易跟单体系----欧易篇

[复制链接]
发表于 2025-3-20 18:44:22 | 显示全部楼层 |阅读模式

各人好,我是步伐员大猩猩。
很久之前做过类似的跟单业务,基本上是浮萍飘摇,不了了之的体系,最近又有人跟我提【区块链交易所交易利用,我们可以跟着大佬做单吗?】,我一听,这个不就是我的强项吗!?
搬到这里讲一讲怎样实现吧。。。此教程完全是技术相关文档哦!~~~
一、API申请
想要交易步伐化,不管是怎么做,起始目标我们必须联通交易所的账户信息,另有查察它的相关API是否可以支持我们步伐化,这一点相关交易所也许是为了更好的交互性,他们都开放了本身的接口,而且一直在维护加强,使得我们开辟人员能更好的进行对接。
欧易的API之前是V3现在已经更新到V5了,接口更方便和快捷。
那么我们怎样步伐化呢?那就是申请开通它的内部API,API申请也是很简单的,只要我们在欧易平台申请账号注册,登陆进去后便可以点击头像,即可看到API按钮。


按照利用步骤就可以完成API的利用了。


这里必须要注意API的权限设置,权限有【读取】、【交易】、【提现】三个多选选择。
一般做单者的API权限,只必要选择【读取】就可以。只必要拿取跟单者的交易订单进行跟单利用。而跟单者权限就必要多选择一个【交易】,毕竟我们必要这个权限来跟单的。
【提现】哪个角色都不要选择
API申请好之后,记得肯定要妥善生存相关密码信息。
二、开辟API对接
API这块申请完毕之后,步伐员开辟者这里,就分为俩步了。
参考文档
  1. https://www.okx.com/docs-v5/zh/#overview-websocket
复制代码
a. 获取做单者的交易信息
为了快速获取到做单者的做单信息,显然对于步伐来说,怎样快速的获取是个难题,API文档有俩种方式,一种是http访问接口方式,另一种是websocket方式。显然,websocket方式更得当快速的获取方式。
注意:我这里利用okhttp3 websocket组件来进行实现
aa. 起首进行websocket连接,并进行登录验证
  1. OkHttpClient client =newOkHttpClient.Builder()
  2. .readTimeout(5, TimeUnit.SECONDS)
  3. .build();
  4. Request request =newRequest.Builder()
  5. .url(url)
  6. .build();
复制代码
登录验证,三个参数都是申请API时的信息,辨识填入即可。
  1. //登录
  2. public void login(String apiKey, String passPhrase, String secretKey){
  3. String timestamp = System.currentTimeMillis() /1000+"";
  4. String message = timestamp +"GET"+"/users/self/verify";
  5. sign = sha256_HMAC(message, secretKey);
  6. String str ="{"op""+":"+""login""+","+""args""+":"+"[{"+""apiKey""+":"+""" + apiKey + """+","+""passphrase""+":"+""" + passPhrase + """+","+""timestamp""+":"+""" + timestamp + """+","+""sign""+":"+""" + sign + """+"}]}";
  7. sendMessage(str);
  8. }
复制代码
​​​​​​​然后,我们根据websocket订阅的性子,写一个订阅和取消订阅的方法.
  1. //订阅,参数为频道组成的集合
  2. publicvoidsubscribe(List<Map> list) {
  3. Strings = listToJson(list);
  4. Stringstr ="{"op": "subscribe", "args":"+ s +"}";
  5. if(null!= webSocket)
  6.      sendMessage(str);
  7. }
  8. //取消订阅,参数为频道组成的集合
  9. publicvoidunsubscribe(List<Map> list) {
  10.     Strings = listToJson(list);
  11.     Stringstr ="{"op": "unsubscribe", "args":"+ s +"}";
  12.     if(null!= webSocket) {
  13.        sendMessage(str);
  14.     }
  15. }
  16. private StringlistToJson(List<Map> list) {
  17.     JSONArray jsonArray =newJSONArray();
  18.     for(Mapmap : list) {
  19.     jsonArray.add(JSONObject.fromObject(map));
  20.     }
  21.     returnjsonArray.toJSONString();
  22. }
复制代码
​​​​​​​根据以上方法,就可以使逻辑跑通了,如下实施订阅:
  1. List<Map> channel = Lists.newArrayList();
  2. List<Map> channel2 = Lists.newArrayList();
  3. //添加订阅频道
  4. Map<String,String> orderMap =newHashMap();
  5. orderMap.put("channel","orders");
  6. orderMap.put("instType","SWAP");
  7. channel.add(orderMap);
  8. //订单订阅
  9. webSocketClient.subscribe(channel);
  10. log.info("订阅订单socket频道");
  11. //添加订阅频道
  12. MapalgoOrders =newHashMap();
  13. algoOrders.put("channel","orders-algo");
  14. algoOrders.put("instType","SWAP");
  15. channel2.add(algoOrders);
  16. //委托订阅
  17. webSocketClient.subscribe(channel2);
复制代码
​​​​​​​假如做单者有做单举动,那么在websocket块的onMessage方法内就会收到做单举动的订单信息。以下是订单的关键信息,根据api文档内的字段进行比较具体表现含义!~
  1. OkexSocketOrder order = new OkexSocketOrder();
  2. //canceled:撤单成功
  3. //live:等待成交
  4. //partially_filled:部分成交
  5. //filled:完全成交
  6. order.setState(switchState(item.getState()));
  7. //side
  8. //posSide
  9. order.setType(switchSide(item.getSide(), item.getPosSide()));
  10. //instId
  11. order.setInstrument_id(item.getInstId());
  12. //ordId
  13. order.setOrder_id(item.getOrdId());
  14. //px
  15. order.setPrice(item.getPx());
  16. //ordType
  17. order.setOrder_type(switchOrdType(item.getOrdType()));
  18. //sz
  19. order.setSize(item.getSz());
  20. //lever
  21. order.setLeverage(item.getLever());
  22. //仓位模式
  23. order.setTdMode(item.getTdMode());
  24. //uTime
  25. order.setTimestamp(DateUtil.date(Long.parseLong(item.getUTime())));
复制代码
​​​​​​​至此以上做单者的订单信息获取完成,而且实现在毫秒级内,完全适用。
b. 根据做单者的订单信息,我们可以根据预期的特定增值和减量来处置惩罚我们的订单,然后进行跟单。
因为每一张票据分别有 下单 撤单 以及成交的状态标识,那么开辟者也必要根据这些状态来处置惩罚我们的跟单状态。
意味做单者怎样做跟单者也怎样做的利用。
这里贴一些订单的利用接口方法,供参考:
  1. /**
  2. * <b>功能描述:</b>下单<br>
  3. */
  4. @POST("/api/v5/trade/order")
  5. Call<JSONObject> placeOrder(@Body JSONObject jsonObject);
  6. /**
  7. * <b>功能描述:</b>修改订单<br>
  8. */
  9. @POST("/api/v5/trade/amend-order")
  10. Call<JSONObject> amendOrder(@Body V5AmendOrder var1);
  11. /**
  12. * 获取杠杆倍数 Get Leverage
  13. */
  14. @GET("/api/v5/account/leverage-info")
  15. Call<JSONObject> getLeverage(@Query("instId") String instId, @Query("mgnMode") String mgnMode);
  16. /**
  17. * <b>功能描述:</b>撤单<br>
  18. */
  19. @POST("/api/v5/trade/cancel-order")
  20. Call<JSONObject> cancelOrder(@Body CancelOrder cancelOrder);
复制代码
免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。
继续阅读请点击广告

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?立即注册

×
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|手机版|qidao123.com技术社区-IT企服评测▪应用市场 ( 浙ICP备20004199|浙ICP备20004199号 )|网站地图

GMT+8, 2025-8-11 10:12 , Processed in 0.083493 second(s), 32 queries .

Powered by Discuz! X3.5 Licensed

© 2001-2025 Discuz! Team.

快速回复 返回顶部 返回列表