数字货币永续合约/币币交易所系统开发(开发案例),币币交易所/永续合约交易所开发源码及体验版

简介: Market analysis:Exchanges can also provide market charts and analysis tools for digital currencies,helping users understand market dynamics,trends,and price change

  Functional requirement of currency exchange system development:

  1.Digital currency exchange:The currency exchange system provides exchange services between digital currencies,and many digital currencies can be traded between these exchanges.

  2.Asset Custody:The exchange provides users with a digital currency wallet,in which their digital currency assets are placed for trading and asset storage.

  3.Trading matching:The Coin Exchange provides trading matching services to match the orders of buyers and sellers,connecting the two parties involved in the transaction.

  4.Market analysis:Exchanges can also provide market charts and analysis tools for digital currencies,helping users understand market dynamics,trends,and price change

  关于撮合交易引擎

  采用内存撮合的方式进行,以开发做撮合订单信息传输,MongoDB持久化订单成交明细,MySQL记录订单总体成交。其中行情模块主要负责订单成交持久化、行情生成、行情推送等服务,包括:

  K线数据,间隔分别为:1分钟、5分钟、15分钟、30分钟、1小时、1天、1周、1月

  所有交易对的市场深度(market depth)数据

  所有交易对的最新价格

  最近成交的交易对

  内存撮合交易支持的模式

  限价订单与限价订单撮合

  市价订单与限价订单撮合

  限价订单与市价订单撮合

  市价订单与市价订单撮合

  数字货币交易所系统开发示例代码如下:

  /**

  *限价委托单与市价队列匹配

  *param mpList市价对手单队列

  *param focusedOrder交易订单

  */

  public void matchLimitPriceWithMPList(LinkedList<ExchangeOrder>mpList,ExchangeOrder focusedOrder){

  List<ExchangeTrade>exchangeTrades=new ArrayList<>();

  List<ExchangeOrder>completedOrders=new ArrayList<>();

  synchronized(mpList){

  Iterator<ExchangeOrder>iterator=mpList.iterator();

  while(iterator.hasNext()){

  ExchangeOrder matchOrder=iterator.next();

  ExchangeTrade trade=processMatch(focusedOrder,matchOrder);

  logger.info(">>>>>"+trade);

  if(trade!=null){

  exchangeTrades.add(trade);

  }

  //判断匹配单是否完成,市价单amount为成交量

  if(matchOrder.isCompleted()){

  iterator.remove();

  completedOrders.add(matchOrder);

  }

  //判断吃单是否完成,判断成交量是否完成

  if(focusedOrder.isCompleted()){

  //交易完成

  completedOrders.add(focusedOrder);

  //退出循环

  break;

  }

  }

  }

  //如果还没有交易完,订单压入列表中

  if(focusedOrder.getTradedAmount().compareTo(focusedOrder.getAmount())<0){

  addLimitPriceOrder(focusedOrder);

  }

  //每个订单的匹配批量推送

  handleExchangeTrade(exchangeTrades);

  orderCompleted(completedOrders);

  }

  /**

  *市价委托单与限价对手单列表交易

  *param lpList限价对手单列表

  *param focusedOrder待交易订单

  */

  public void matchMarketPriceWithLPList(TreeMap<BigDecimal,MergeOrder>lpList,ExchangeOrder focusedOrder){

  List<ExchangeTrade>exchangeTrades=new ArrayList<>();

  List<ExchangeOrder>completedOrders=new ArrayList<>();

  synchronized(lpList){

  Iterator<Map.Entry<BigDecimal,MergeOrder>>mergeOrderIterator=lpList.entrySet().iterator();

  boolean exitLoop=false;

  while(!exitLoop&&mergeOrderIterator.hasNext()){

  Map.Entry<BigDecimal,MergeOrder>entry=mergeOrderIterator.next();

  MergeOrder mergeOrder=entry.getValue();

  Iterator<ExchangeOrder>orderIterator=mergeOrder.iterator();

  while(orderIterator.hasNext()){

  ExchangeOrder matchOrder=orderIterator.next();

  //处理匹配

  ExchangeTrade trade=processMatch(focusedOrder,matchOrder);

  if(trade!=null){

  exchangeTrades.add(trade);

  }

  //判断匹配单是否完成

  if(matchOrder.isCompleted()){

  //当前匹配的订单完成交易,删除该订单

  orderIterator.remove();

  completedOrders.add(matchOrder);

  }

  //判断焦点订单是否完成

  if(focusedOrder.isCompleted()){

  completedOrders.add(focusedOrder);

  //退出循环

  exitLoop=true;

  break;

  }

  }

  if(mergeOrder.size()==0){

  mergeOrderIterator.remove();

  }

  }

  }

  //如果还没有交易完,订单压入列表中,市价买单按成交量算

  if(focusedOrder.getDirection()==ExchangeOrderDirection.SELL&&focusedOrder.getTradedAmount().compareTo(focusedOrder.getAmount())<0

  ||focusedOrder.getDirection()==ExchangeOrderDirection.BUY&&focusedOrder.getTurnover().compareTo(focusedOrder.getAmount())<0){

  addMarketPriceOrder(focusedOrder);

  }

  //每个订单的匹配批量推送

  handleExchangeTrade(exchangeTrades);

  if(completedOrders.size()>0){

  orderCompleted(completedOrders);

  TradePlate plate=focusedOrder.getDirection()==ExchangeOrderDirection.BUY?sellTradePlate:buyTradePlate;

  sendTradePlateMessage(plate);

  }

  }

相关文章
|
7月前
|
供应链 物联网 分布式数据库
秒合约跟单系统开发|现货合约交易所系统开发案例
区块链技术可以通过分布式网络、共识机制和智能合约的相互配合,实现去中心化的应用,包括数字货币、智能合约、供应链管理、物联网、融等多个领域
|
7月前
|
算法 机器人
秒合约期权机器人开发/秒合约系统/币币合约/技术开发应用
秒合约期权机器人开发/秒合约系统/币币合约/技术开发应用
|
7月前
|
存储 安全 大数据
合约现货跟单交易所系统开发|量化交易|秒合约系统案例
区块链,是比特币的底层技术架构,它在本质上是一种去中心化的分布式账本
|
7月前
|
存储 区块链 数据安全/隐私保护
区块链合约交易所系统开发|交易所合约跟单系统开发
有许多不同类型的共识协议,但最广泛使用的两种协议是工作量证明(PoW)和权益证明(PoS)。无论使用什么协议,所有区块链都是分布式的,这意味着所有节点都拥有区块链的相同副本。这就创建了一个所有节点都同意和引用的“单一真相来源”。
|
8月前
量化交易/秒合约/合约跟单/交易所系统开发(成熟案例)
去中心化,相对于“中心化”概念,在去中心化的系统网络里
|
9月前
|
存储 监控 安全
区块链交易所开发、 数字货币交易所可二开添加定制化功能
区块链交易所开发是一项复杂的工程,需要技术团队精通多种技术领域,包括但不限于区块链技术、加密算法、交易系统设计、安全性和风险管理。开发一个成功的区块链交易所需要考虑到许多因素,包括用户体验、交易效率、安全性、合规性和可扩展性。首先,交易所的开发需要考虑用户体验。
|
9月前
|
机器人 Python
|
9月前
|
存储 自然语言处理 前端开发
合约期权交易所系统/多语言交易所系统开发源码合约部署
合约期权交易所系统/多语言交易所系统开发源码合约部署
|
9月前
|
存储 区块链 人工智能
|
10月前
|
区块链 数据库
区块链交易所系统开发稳定版丨数字货币交易所系统开发(成熟技术)
区块链是一种按照时间顺序将数据private void printRequestInfo