2019-05-25立贴为证日志.拼命到底!

2019-05-25立贴为证日志. 账户模拟交易的javascript类,是个掩护.最后的注释才是正文.

/* 账户类定义 */
class Account {
  
  constructor(accountData, histroy) {
    this._name = ('name' in accountData)?accountData['name']:'defaultUser';
    this._money = ('money' in accountData)?accountData['money']:100*10000; //持有现金   
    this._feeRate = ('feeRate' in accountData)?accountData['feeRate']:2.5/10000;
    this._taxRate = ('taxRate' in accountData)?accountData['taxRate']:1.0/1000;
    this._targets = {}; // 持有标的表
    this._histroy = histroy; // 操作历史
  }
  
  toString(){
    var strList = ['--- Money ---', this._money, '--- Targets ---'];
    var targets = this._targets;
    for (var target in targets) {
      let number = targets[target];
      strList.push(target+' : '+number);
    }
    return strList.join('\n');
  }
  
  runAccount(){
    for (var i = 0;i < this._histroy.length;i++){
      // 对单条历史进行处理准备
      var {type, target, number, price, date} = this._histroy[i];  
      type = type.toLowerCase();
      if (!(target in this._targets))  this._targets[target] = 0;
      // 准备完毕,开始计算
      var deal = number*price; // 成交额
      var fee = deal*this._feeRate; // 佣金
      if (fee < 5) fee = 5; // 佣金最低5元
      if (type == 'buy'){
        this._money -= (deal+fee); 
        this._targets[target] += number;
      }else{
        // 计算印花税,'1'或'5'开始的是基金,免税
        if (!(target[0] == '5' || target[0] == '1')) fee += deal*this._taxRate;
        this._money += (deal-fee);
        this._targets[target] -= number;
      }
    }
  }
  
}
 
/* 使用与测试 */

// 账户信息
var accountData = {
  'name': 'testUser',
  'money': 100.0*10000, // 初始现金
  'feeRate': 2.1/10000, // 佣金率
  'taxRate': 1.0/1000  // 印花税税率
};

// 投资操作历史表
var histroy = [
  {'type': 'buy', 'target': '600000', 'number': 10000, 'price': 10.00, 'date': '2019-05-23'},
  {'type': 'sell', 'target': '600000', 'number': 10000, 'price': 10.00, 'date': '2019-05-24'},
  {'type': 'buy', 'target': '600001', 'number': 11100, 'price': 12.00, 'date': '2019-05-23'},
  {'type': 'buy', 'target': '600002', 'number': 20000, 'price': 14.00, 'date': '2019-05-24'}
];

// 新建账户并模拟操作,显示信息
var myAccount = new Account(accountData, histroy);
myAccount.runAccount();
var msg = myAccount.toString();
if(console) console.log(msg);
msg;


/*
人々を狂わせるS_OCI_ETY

「どうしてc_hin_aの株市場はこんなにも 狂ってるか」と俺はずっと考えたんだ。
「人々は全員狂ってるじゃないか」と俺は思う。
先は全然見えない。何の保障もない。優位についた奴は 特に優れるわけでもないが、桁違う金をもらう。
こんな世界で 狂わない人間は居ないかも。ただ、法律に恐れ、普通に見えるだけのこと。

先が見えない故に、株価が低い時、投資をためらう。
希望がない故に、株価が狂ってる時、運命かもしれないを変えるチァンスを藁のように掴む。

こんなS_OCI_ETY故に、こんなA株市場。
先は見えた。俺は引かない。自分の命と妻の命を賭けて A株の再び狂う時代を待つ。
*/

转载于:https://my.oschina.net/u/3223803/blog/3053936

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值