实现交易计算盈利

简介: 来源:根据先进先出原则实现交易.例如:buy 100 share(s) at $20 eachbuy 20 share(s) at $24 eachbuy 200 share(s) at $36 eachsell 150 share(s) at $30 each得出计算结果 940.

来源:

根据先进先出原则实现交易.
例如:

buy 100 share(s) at $20 each
buy 20 share(s) at $24 each
buy 200 share(s) at $36 each
sell 150 share(s) at $30 each

得出计算结果 940.

优先卖掉持有时间最长的.

解题思路

直接使用Arraylist保存,卖出时从第一个开始即可.

当然也可以用队列做.

实现代码

/**
 * calculation the result
 * @param transactions
 * @return
 */
private Integer calculation(List<String> transactions) {
  int result = 0;

  //make the input to sell-100-20 format
  List<String> t = new ArrayList<>();
  for (String transaction : transactions) {
    if ("".equals(transaction)) {
      continue;
    }
    String[] ss = transaction.split(" ");
    t.add(ss[0] + "-" + ss[1] + "-" + ss[4].replace("$", ""));
  }

  for (int i = 0; i < t.size(); i++) {
    //cal while sell
    if (t.get(i).startsWith("sell")) {
      //get the num and the sell price
      int num = Integer.valueOf(t.get(i).split("-")[1]);
      int sellPrice = Integer.valueOf(t.get(i).split("-")[2]);
      //cal the buy before sell
      for (int j = 0; j < i; j++) {
        //sell shares, use FIFO.
        String[] sss = t.get(j).split("-");
        //if sell num < buy num, cal sell num shares in that transcation.
        if (num <= Integer.valueOf(sss[1])) {
          result += num * (sellPrice - Integer.valueOf(sss[2]));
          break;
        } else {
          //if sell num > buy num, cal all shares ,and cal new sellnum.
          result += Integer.valueOf(sss[1]) * (sellPrice - Integer.valueOf(sss[2]));
          num -= Integer.valueOf(sss[1]);
        }
      }
    }
  }

  return result;

}

完。







ChangeLog


2019-02-24 完成



以上皆为个人所思所得,如有错误欢迎评论区指正。

欢迎转载,烦请署名并保留原文链接。

联系邮箱:huyanshi2580@gmail.com

更多学习笔记见个人博客------>呼延十

目录
相关文章
融资租赁产品计算内部收益率IRR
融资租赁产品计算内部收益率IRR
融资租赁产品计算内部收益率IRR
|
4月前
|
存储 区块链
量化合约交易|秒合约|现货期权交易系统开发(成熟源码)
区块链技术虽然有许多优势,但也面临着一些挑战。
|
4月前
|
存储 区块链 数据库
量化合约跟单/秒合约/现货期权交易系统开发
智能合约是Web3.0在区块链上的载体:智能合约是存储在区块链的程序
|
4月前
|
人工智能 供应链 安全
现货期权交易|秒合约系统开发技术方案
使用智能合约还可以保护和安全地与区块链和传统的业务主体的数据链接
|
区块链
现货期权期货秒合约系统丨现货期权期货秒合约系统开发(规则及详细)丨现货期权期货秒合约系统源码开发
  从技术视角来看,区块链已由初期的技术探索进入到平台化、组件化和集成化发展阶段。主要体现在:一是平台化推动形成城市链网。长安链、蜀信链和海河链等城市链已经纷纷出现,城市链互相联通后将形成城市链网,以支撑更大规模的应用场景。二是组件化推动形成组件服务网络
|
Serverless Python
现货期权交易所系统丨现货期权交易所系统开发(方案及详细)丨现货期权交易所源码功能及案例
 As a new information and network technology,blockchain uses encryption technology,distributed network and consensus mechanism to ensure that the information recorded by each node in the network is true and effective.Blockchain is constantly penetrating into all walks of life and has shown a good de
按键精灵实现交易开拓者33个品种回测时间和交易费用的设置
按键精灵实现交易开拓者33个品种回测时间和交易费用的设置
203 0
|
算法
合约现货量化对冲交易系统开发详细功能及分析
法交易的主要类型有:(1)被动型算法交易,也称结构型算法交易。该交易算法除利用历史数据估计交易模型的关键参数外,不会根据市场的状况主动选择交易时机和交易的数量,而是按照一个既定的交易方针进行交易。该策略的的核心是减少滑价(目标价与实际成交均价的差)。被
合约现货量化对冲交易系统开发详细功能及分析
|
机器人 Python
什么是现货合约量化对冲交易所系统开发?现货合约量化对冲交易所系统开发(开发说明)
 量化合约指的是目标或任务具体明确,可以清晰度量。根据不同情况,表现为数量多少,具体的统计数字,范围衡量,时间长度等等。所谓量化就是把经过抽样得到的瞬时值将其幅度离散,即用一组规定的电平,把瞬时抽样值用最接近的电平值来表示。经过抽样的图像,只是在空间上被离散成为像素(样本)的阵列。而每个样本灰度值还是一个由无穷多个取值的连续变化量,必须将其转化为有限个离散值,赋予不同码字才能真正成为数字图像。这种转化称为量化。
什么是现货合约量化对冲交易所系统开发?现货合约量化对冲交易所系统开发(开发说明)
|
数据采集 监控 安全
北京公交每天超1.6亿的交易数据,是这样撑住的!
车载刷卡机的出现,为公交出行服务提高了一个档次,但它的档次还可以继续提高。 启迪公交(北京)科技股份有限公司,作为国内领先的公交出行服务提供商,携手阿里云研发北京公交二维码乘车业务系统方案,让车载刷卡机设备实现数据采集上云,带来更加便捷的公交出行服务。
361 0
北京公交每天超1.6亿的交易数据,是这样撑住的!