汇添富移动互联股票(000697)基金收益程序

news/2024/11/30 3:33:21/

参考:

 java图形界面 登录界面的实现

java 事件监听机制的实现1

java 事件监听机制的实现2

关于实现两级联动下拉框 参考:

javaSwing_2.9: JComboBox (下拉列表框)

JAVA SWING 下拉列表框中的值如何获取:

JComboBox jComboBox;String value = jComboBox.getSelectedItem().toString();

 

java swing 下拉框两级联动

java中的substring()用法

java中int、String的类型转换

 

 

UI.java

这里代码主要是针对UI界面的实现

 

package UI;import java.awt.*;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.event.ItemEvent;
import java.awt.event.ItemListener;
import java.io.IOException;
import javax.swing.JComboBox;import FundProfit.*;public class UI {/*  测试UIpublic static void main(String[] args){UI u = new UI();u.initUI();}*/private String[] month={"01","02","03","04","05","06","07","08","09","10","11","12"};private String[] day={"31","29","31","30","31","30","31","31","30","28","30","31"};private String[] hour={"1","2"};public void initUI(){javax.swing.JFrame frame = new javax.swing.JFrame();//实例化一个窗体对象frame.setTitle("汇添富移动互联股票(000697)基金收益程序");//设置窗体的标题frame.setSize(600,600); //设置窗体的大小frame.setLocationRelativeTo(null); //设置窗体的位置为居中frame.setResizable(false); //设置不可调节大小frame.setDefaultCloseOperation(3); //设置窗体的关闭操作。这个方法有0 1 2 3四个返回值。//其中0是指不关闭,也就是说无论点击多少次按钮都不会有反应//1是指点击关闭按钮会关闭这个窗体,但是程序依然在后台运行。//2是指如果有多个窗体就关闭当前窗体,如果只有一个则关闭程序。//3是指直接关闭程序。frame.setBackground(Color.LIGHT_GRAY);//设置窗体的背景颜色。/*如果不加如下代码会出现一个巨大的登录按钮* Jframe窗体的默认布局是边框布局,也就是说我们前面要加的东西确实已经加上了,但是被一层一层覆盖掉了。* 所以这个时候我们就需要设置一个窗体的布局。我们可以把窗体设置成流式布局(FlowLayout)** java.awt.Flowayout 流式布局类似word文档(所有的布局类都只能应用于容器组建上)** 这段代码要在设置背景颜色之后* *///java.awt.FlowLayout fl = new java.awt.FlowLayout();//frame.setLayout(fl);
javax.swing.JPanel northPanel = new javax.swing.JPanel();northPanel.setPreferredSize(new java.awt.Dimension(0,100));frame.add(northPanel,java.awt.BorderLayout.NORTH);javax.swing.JPanel centerPanel = new javax.swing.JPanel(); //中部面板设置javax.swing.JLabel Lname_1 = new javax.swing.JLabel("投资基金金额: "); //实例化一个标签Lname_1.setFont(new Font("楷体",Font.BOLD,20));centerPanel.add(Lname_1); //加在面板上!!!!
javax.swing.JTextField Tname = new javax.swing.JTextField();//实例化一个文本输入框对象并调整大小java.awt.Dimension dim = new java.awt.Dimension(250,30);Tname.setPreferredSize(dim);centerPanel.add(Tname); //加在面板上!!!!
javax.swing.JLabel Lname_2 = new javax.swing.JLabel("申  购  时  间: "); //实例化一个标签对象并调整字体、大小Lname_2.setFont(new Font("楷体",Font.BOLD,20));centerPanel.add(Lname_2); //加在面板上!!!!/*javax.swing.JTextField Tname_2 = new javax.swing.JTextField();java.awt.Dimension dim_2 = new java.awt.Dimension(250,30);Tname_2.setPreferredSize(dim_2);centerPanel.add(Tname_2); //加在面板上!!!!*//************************/final javax.swing.JComboBox<String> comboBox_1 = new javax.swing.JComboBox<String>(month);//创建一个下拉链表框comboBox_1.setSelectedIndex(-1); //设置默认选中的项目centerPanel.add(comboBox_1); //加在面板上!!!!final javax.swing.JComboBox<String> comboBox_2 = new javax.swing.JComboBox<String>();centerPanel.add(comboBox_2);javax.swing.JLabel Lname_4 = new javax.swing.JLabel("第");Lname_4.setFont(new Font("楷体",Font.BOLD,15));centerPanel.add(Lname_4);final javax.swing.JComboBox<String> comboBox_5 = new javax.swing.JComboBox<String>(hour);comboBox_5.setSelectedIndex(-1);centerPanel.add(comboBox_5);javax.swing.JLabel Lname_5 = new javax.swing.JLabel("时间段");Lname_5.setFont(new Font("楷体",Font.BOLD,15));centerPanel.add(Lname_5);comboBox_1.addActionListener(new ActionListener() {@Overridepublic void actionPerformed(ActionEvent e) {comboBox_2.removeAllItems(); //清空comboBox_2中的内容int i = Integer.parseInt(comboBox_1.getSelectedItem().toString())-1; //获取月份int count = Integer.parseInt(day[i]); //根据月份获取相应天数String[] Day = new String[count];// 添加天数if(i==0){for( int j=3; j<count; j++){String t;if(j<9){t="0";t = t+String.valueOf(j+1);}else{t = String.valueOf(j+1);}comboBox_2.addItem(t); }}else if(i==10){for( int j=0; j<count; j++){String t;if(j<9){t="0";t = t+String.valueOf(j+1);}else{t = String.valueOf(j+1);}comboBox_2.addItem(t);}}else {for (int j = 0; j < count; j++) {String t;if (j < 9) {t = "0";t = t + String.valueOf(j + 1);} else {t = String.valueOf(j + 1);}comboBox_2.addItem(t);}}}});/************************/javax.swing.JLabel Lname_3 = new javax.swing.JLabel("赎  回  时  间: ");Lname_3.setFont(new Font("楷体",Font.BOLD,20));centerPanel.add(Lname_3); //加在面板上!!!!/*javax.swing.JTextField Tname_3 = new javax.swing.JTextField();java.awt.Dimension dim_3 = new java.awt.Dimension(250,30);Tname_3.setPreferredSize(dim_3);centerPanel.add(Tname_3); //加在面板上!!!!*//************************/final javax.swing.JComboBox<String> comboBox_3 = new javax.swing.JComboBox<String>(month);//创建一个下拉链表框comboBox_3.setSelectedIndex(-1); //设置默认选中的项目centerPanel.add(comboBox_3); //加在面板上!!!!final javax.swing.JComboBox<String> comboBox_4 = new javax.swing.JComboBox<String>();centerPanel.add(comboBox_4);javax.swing.JLabel Lname_6 = new javax.swing.JLabel("第");Lname_6.setFont(new Font("楷体",Font.BOLD,15));centerPanel.add(Lname_6);final javax.swing.JComboBox<String> comboBox_6 = new javax.swing.JComboBox<String>(hour);comboBox_6.setSelectedIndex(-1);centerPanel.add(comboBox_6);javax.swing.JLabel Lname_7 = new javax.swing.JLabel("时间段");Lname_7.setFont(new Font("楷体",Font.BOLD,15));centerPanel.add(Lname_7);comboBox_3.addActionListener(new ActionListener() {@Overridepublic void actionPerformed(ActionEvent e) {comboBox_4.removeAllItems();int i_2 = Integer.parseInt(comboBox_3.getSelectedItem().toString())-1;int count = Integer.parseInt(day[i_2]);String[] Day = new String[count];if(i_2==0){for( int j_2=3; j_2<count; j_2++){String t;if(j_2<9){t="0";t = t+String.valueOf(j_2+1);}else{t = String.valueOf(j_2+1);}comboBox_4.addItem(t);}}else if(i_2==10){for( int j_2=0; j_2<count; j_2++){String t;if(j_2<9){t="0";t = t+String.valueOf(j_2+1);}else{t = String.valueOf(j_2+1);}comboBox_4.addItem(t);}}else {for (int j_2 = 0; j_2 < count; j_2++) {String t;if (j_2 < 9) {t = "0";t = t + String.valueOf(j_2 + 1);} else {t = String.valueOf(j_2 + 1);}comboBox_4.addItem(t);}}}});/************************//*javax.swing.JLabel Lname_4 = new javax.swing.JLabel("输入时间区间范围:2016-01-04~2016-10-28");Lname_4.setFont(new Font("楷体",Font.PLAIN,15));javax.swing.JLabel Lname_5 = new javax.swing.JLabel("格式为:2016-01-04 23:59:59");Lname_5.setFont(new Font("楷体",Font.PLAIN,15));centerPanel.add(Lname_4); //加在面板上!!!!centerPanel.add(Lname_5); //加在面板上!!!!*/javax.swing.JLabel Lname_8 = new javax.swing.JLabel("         第1时间段为9:00~15:00");Lname_8.setFont(new Font("楷体",Font.PLAIN,15));centerPanel.add(Lname_8);javax.swing.JButton Bcomfirm = new javax.swing.JButton("确认"); //实例化一个按钮对象并调整字体、大小Bcomfirm.setPreferredSize(new java.awt.Dimension(200,40));Bcomfirm.setFont(new Font("楷体",Font.BOLD,20));centerPanel.add(Bcomfirm); //加在面板上!!!!
frame.add(centerPanel,java.awt.BorderLayout.CENTER); //中部面板设置完成
javax.swing.JPanel westPanel = new javax.swing.JPanel(); //设置左边的面板westPanel.setPreferredSize(new java.awt.Dimension(80,0));westPanel.setLayout(new java.awt.FlowLayout(java.awt.FlowLayout.RIGHT));//流式布局设置为靠右对齐frame.add(westPanel,java.awt.BorderLayout.WEST); //设置完成
javax.swing.JPanel eastPanel = new javax.swing.JPanel();eastPanel.setPreferredSize(new java.awt.Dimension(80,0));frame.add(eastPanel,java.awt.BorderLayout.EAST); //右边的面板/*EventListener bu = new EventListener();Bcomfirm.addActionListener(bu);bu.setDi(Tname);bu.setJpt(Tname_2);bu.setJrt(Tname_3);*/Bcomfirm.addActionListener(new ActionListener() {@Overridepublic void actionPerformed(ActionEvent e) {double di; //投资基金金额String jpt; //申购时间String jrt; //赎回时间
String s =Tname.getText();di = Double.parseDouble("".equals(s)?"0.00":s);jpt = comboBox_1.getSelectedItem().toString()+comboBox_5.getSelectedItem()+comboBox_2.getSelectedItem().toString(); //1jrt = comboBox_3.getSelectedItem().toString()+comboBox_6.getSelectedItem().toString()+comboBox_4.getSelectedItem().toString();//2
FundProfit f = new FundProfit();try {f.readTxt();} catch (IOException e1) {e1.printStackTrace();}//System.out.println("di:" + di);
f.setInvestmentAmount(di);f.setPurchaseTime(jpt);//1f.setRedeemTime(jrt); //2double num;  //基金份额数double redemption; //赎回金额double income; //基金收益
num = f.NumberOfFundShares();redemption = f.RedemptionAmount(num);income = redemption - di;if(f.InputError()) {double net_1 = f.getPurNet();double net_2 = f.getRedNet();int day_1 = f.getDay_1();initA(num, redemption, income, net_1, net_2, di, day_1);}else {initB();}}});frame.setVisible(true); //设置窗体可见。如果不设置这一步那么窗体看不见。另外所有的组建都要加在这个方法之间,否则不可见。
    }public void initA(double n, double r, double i, double net_1, double net_2, double di, int day_1){//输出数据javax.swing.JFrame frame = new javax.swing.JFrame();frame.setTitle("结果");frame.setSize(450,450);frame.setDefaultCloseOperation(2);frame.setLocationRelativeTo(null);javax.swing.JPanel centerPanel = new javax.swing.JPanel();javax.swing.JLabel Lname_1 = new javax.swing.JLabel("  基金份额数:");Lname_1.setFont(new Font("楷体",Font.BOLD,25));centerPanel.add(Lname_1);javax.swing.JLabel Lresult_1 = new javax.swing.JLabel("  "+String.format("%.2f",n));Lresult_1.setFont(new Font("楷体",Font.PLAIN,20));centerPanel.add(Lresult_1);javax.swing.JLabel Lname_2 = new javax.swing.JLabel("  赎 回 金 额: ");Lname_2.setFont(new Font("楷体",Font.BOLD,25));centerPanel.add(Lname_2);javax.swing.JLabel Lresult_2 = new javax.swing.JLabel(String.format("%.2f",r));Lresult_2.setFont(new Font("楷体", Font.PLAIN,20));centerPanel.add(Lresult_2);javax.swing.JLabel Lname_3 = new javax.swing.JLabel("基 金 收 益: ");Lname_3.setFont(new Font("楷体",Font.BOLD,25));centerPanel.add(Lname_3);javax.swing.JLabel Lresult_3 = new javax.swing.JLabel(String.format("%.2f",i));Lresult_3.setFont(new Font("楷体", Font.PLAIN,20));centerPanel.add(Lresult_3);javax.swing.JButton Details = new javax.swing.JButton("详情"); //实例化一个按钮对象并调整字体、大小Details.setPreferredSize(new java.awt.Dimension(200,40));Details.setFont(new Font("楷体",Font.BOLD,20));centerPanel.add(Details);frame.add(centerPanel, java.awt.BorderLayout.CENTER);javax.swing.JPanel northPanel = new javax.swing.JPanel(); //设置上边的面板northPanel.setPreferredSize(new java.awt.Dimension(0,50));frame.add(northPanel, BorderLayout.NORTH);javax.swing.JPanel westPanel = new javax.swing.JPanel(); //设置左边的面板westPanel.setPreferredSize(new java.awt.Dimension(75,0));westPanel.setLayout(new java.awt.FlowLayout(java.awt.FlowLayout.RIGHT));//流式布局设置为靠右对齐frame.add(westPanel,java.awt.BorderLayout.WEST); //设置完成
javax.swing.JPanel eastPanel = new javax.swing.JPanel();eastPanel.setPreferredSize(new java.awt.Dimension(75,0));frame.add(eastPanel,java.awt.BorderLayout.EAST); //右边的面板
Details.addActionListener(new ActionListener() {@Overridepublic void actionPerformed(ActionEvent e) {javax.swing.JFrame frame = new javax.swing.JFrame();frame.setTitle("详情");frame.setSize(700,600);frame.setDefaultCloseOperation(2);frame.setLocationRelativeTo(null);javax.swing.JPanel centerPanel = new javax.swing.JPanel();javax.swing.JLabel Lname_1 = new javax.swing.JLabel("基金份额数=购买金额/(1+申购费率)/当天净值");Lname_1.setFont(new Font("楷体",Font.BOLD,21));centerPanel.add(Lname_1);javax.swing.JLabel Lname_2 = new javax.swing.JLabel("当天净值:"+net_1);Lname_2.setFont(new Font("楷体",Font.PLAIN,18));centerPanel.add(Lname_2);javax.swing.JLabel Lname_3 = new javax.swing.JLabel();if( di<1000000 ){Lname_3.setText("因为购买金额小于100万所以  申购率:0.15%");}else if( di<5000000){Lname_3.setText("因为购买金额大于等于100万,小于500万所以  申购率:0.10%");}else if( di<10000000){Lname_3.setText("因为购买金额大于等于500万,小于1000万所以  申购率:0.03%");}else{Lname_3.setText("因为购买金额大于等于1000万  申购率:1000元/笔");}Lname_3.setFont(new Font("楷体",Font.PLAIN,18));centerPanel.add(Lname_3);javax.swing.JLabel Lname_4 = new javax.swing.JLabel("赎回金额=赎回份额数*当天净值*(1-赎回费率)");Lname_4.setFont(new Font("楷体",Font.BOLD,21));centerPanel.add(Lname_4);javax.swing.JLabel Lname_5 = new javax.swing.JLabel("当天净值:"+net_2);Lname_5.setFont(new Font("楷体",Font.PLAIN,18));centerPanel.add(Lname_5);javax.swing.JLabel Lname_6 = new javax.swing.JLabel();if( day_1<7 ){Lname_6.setText("因为持有期限小于7天  赎回费率:1.5%");}else if( di<5000000){Lname_6.setText("因为持有期限大于等于7天,小于30天  赎回费率:0.75%");}else if( di<10000000){Lname_6.setText("因为持有期限大于等于30天,小于180天  赎回费率:0.50%");}else{Lname_6.setText("因为持有期限大于等于180天  赎回费率:0.00%");}Lname_6.setFont(new Font("楷体",Font.PLAIN,18));centerPanel.add(Lname_6);frame.add(centerPanel, java.awt.BorderLayout.CENTER);javax.swing.JPanel northPanel = new javax.swing.JPanel(); //设置上边的面板northPanel.setPreferredSize(new java.awt.Dimension(0,50));frame.add(northPanel, BorderLayout.NORTH);javax.swing.JPanel westPanel = new javax.swing.JPanel(); //设置左边的面板westPanel.setPreferredSize(new java.awt.Dimension(75,0));westPanel.setLayout(new java.awt.FlowLayout(java.awt.FlowLayout.RIGHT));//流式布局设置为靠右对齐frame.add(westPanel,java.awt.BorderLayout.WEST); //设置完成
javax.swing.JPanel eastPanel = new javax.swing.JPanel();eastPanel.setPreferredSize(new java.awt.Dimension(75,0));frame.add(eastPanel,java.awt.BorderLayout.EAST); //右边的面板frame.setVisible(true);}});frame.setVisible(true);}public void initB(){javax.swing.JFrame frame = new javax.swing.JFrame();frame.setTitle("结果");frame.setSize(350,200);frame.setDefaultCloseOperation(2);frame.setLocationRelativeTo(null);javax.swing.JPanel centerPanel = new javax.swing.JPanel();javax.swing.JLabel Lname_1 = new javax.swing.JLabel("输入时间错误!");Lname_1.setFont(new Font("楷体",Font.BOLD,25));centerPanel.add(Lname_1);frame.add(centerPanel, java.awt.BorderLayout.CENTER);javax.swing.JPanel northPanel = new javax.swing.JPanel(); //设置上边的面板northPanel.setPreferredSize(new java.awt.Dimension(0,50));frame.add(northPanel, BorderLayout.NORTH);javax.swing.JPanel westPanel = new javax.swing.JPanel(); //设置左边的面板westPanel.setPreferredSize(new java.awt.Dimension(75,0));westPanel.setLayout(new java.awt.FlowLayout(java.awt.FlowLayout.RIGHT));//流式布局设置为靠右对齐frame.add(westPanel,java.awt.BorderLayout.WEST); //设置完成
javax.swing.JPanel eastPanel = new javax.swing.JPanel();eastPanel.setPreferredSize(new java.awt.Dimension(75,0));frame.add(eastPanel,java.awt.BorderLayout.EAST); //右边的面板
frame.setVisible(true);}
}

 

FundProfit.java

这里的代码主要实现 互联股票的算法

 

package FundProfit;import java.util.*;
import java.io.*;
import java.util.regex.Matcher;
import java.util.regex.Pattern;public class FundProfit {TreeMap NetWorth = new TreeMap();double InvestmentAmount;String PurchaseTime;String RedeemTime;double net_1;double net_2;int day_1;public double getPurNet(){return net_1;}public double getRedNet(){return net_2;}//int flag=0;public int getDay_1(){return day_1;}public boolean InputError(){if( Integer.parseInt(PurchaseTime.substring(0,2)) > Integer.parseInt(RedeemTime.substring(0,2)) ){return false;}else if( Integer.parseInt(PurchaseTime.substring(0,2)) == Integer.parseInt(RedeemTime.substring(0,2)) ){if( Integer.parseInt(PurchaseTime.substring(3)) > Integer.parseInt(RedeemTime.substring(3)) ){return false;}else{return true;}}else{return true;}/*if(flag!=0) return false;else return true;*/}public void setInvestmentAmount(double d){ //设置获取投资基金的方法InvestmentAmount = d;}public void setPurchaseTime(String s){ //设置获取投资时间的方法PurchaseTime = s;}public void setRedeemTime(String s){ //设置赎回时间的方法RedeemTime = s;}/*从data.txt中读取数据*/public void readTxt() throws IOException{FileReader fr = new FileReader("data.txt");BufferedReader br = new BufferedReader(fr);String line;while( (line=br.readLine())!=null){String m=line.substring(5,10);NetWorth.put(m,line.substring(11,16)); //构造TreeMap取 0~9位为日期定为key 11~15为净值定位value
        }}/*通过日期得到净值*/public double getNetWorth(String Time){Iterator iter = NetWorth.keySet().iterator(); // keySet() 集合试图 然后利用迭代器遍历TreeMap
String str1 = Time.substring(0,2)+"-"+Time.substring(3);//年月日String str2 = Time.substring(2,3); // hourdouble net=0; //净值int hour;hour = Integer.valueOf(str2).intValue(); //String->int/*不断遍历TreeMap得到相应日期的净值跳出*/Object key;while(iter.hasNext()){key = iter.next();if(key.toString().compareTo(str1) == 0){ //如果日期相同if( hour==1 ){ //判断是不是在工作日的工作时段中key = iter.next();net = Double.parseDouble(NetWorth.get(key).toString()); // object->String->int
                }else{net = Double.parseDouble(NetWorth.get(key).toString()); // object->String->int
                }break;}else if(key.toString().compareTo(str1) > 0){ //如果不在工作日,则算到下一个工作日的净值net = Double.parseDouble(NetWorth.get(key).toString()); // object->String->int
            }}/**********如果找到相应的日期则输出 输入日期错误,但这里有做到用户交互界面这是接下来我要做的**********//*if(net==0){flag = 1;}*/return net;}/*申购日期和赎回日期相差几天*/public int getDay(){int day=0;int p_month = Integer.parseInt(PurchaseTime.substring(0,2)); //申购日期月份int p_day = Integer.parseInt(PurchaseTime.substring(3)); //申购日期的dayint r_month = Integer.parseInt(RedeemTime.substring(0,2));  //赎回日期的月份int r_day = Integer.parseInt(RedeemTime.substring(3)); //赎回日期的day/*如果月份不相同,则先算申购时间到下一个月的天数。然后如此遍历,直到到赎回约分为止。如果是同约分则直接相减*/if(p_month!=r_month) {switch (p_month) {case 1: case 3: case 5: case 7:case 8: case 10:day = 31 - p_day + 1;break;case 4: case 6: case 9:day = 30 - p_day + 1;break;case 2:day = 29 - p_day + 1;break;}for (int i = p_month+1; i < r_month; i++) {switch (i){case 2:day+=29;break;case 3: case 5: case 7: case 8:day+=31;break;case 4: case 6: case 9:day+=30;break;}}day+=r_day;}else{day = r_day - p_day+1;}day_1 = day;return day;}/*计算基金份额数*/public double NumberOfFundShares(){double net = getNetWorth(PurchaseTime);net_1 = net;double num;if(InvestmentAmount < 1000000) num = InvestmentAmount/(1+0.0015)/net;else if(InvestmentAmount < 5000000) num = InvestmentAmount/(1+0.001)/net;else if(InvestmentAmount < 10000000) num = InvestmentAmount/(1+0.0003)/net;else num = (InvestmentAmount-1000)/net;return num;}/*计算赎回金额*/public double RedemptionAmount(double num){double net = getNetWorth(RedeemTime);net_2 = net;int day = getDay();double amount=0;if(day<7) amount = num*net*(1-0.0015);else if(day<30) amount = num*net*(1-0.0075);else if(day<180) amount = num*net*(1-0.005);else amount = num*net;return amount;}
}

 

Test.java

package Test;import UI.*;public class Test {public static void main(String[] args){UI u = new UI();u.initUI();}
}

 

关于基础界面

 

 

当输入时间正常(即赎回时间大于申购时间

点击确定

 

点击 详情

 

当输入时间错误(即赎回时间小于申购时间

 

点击 确定

 

 

基金收益程序
购买基金是人们常用的投资理财方式之一,投资者可以通过基金公司、天天基金网、蚂蚁聚宝、合作银行等渠道购买基金,实现金融资产的稳健增值。汇添富移动互联股票型证券投资基金(简称汇添富移动互联股票,基金代码为000697)是汇添富基金管理股份有限公司的一个股票型的基金理财产品。该基金基金的投资范围为具有良好流动性的金融工具,包括国内依法发行上市的股票(含中小板、创业板及其他经中国证监会核准上市的股票)、债券、货币市场工具、股指期货、权证、资产支持证券、银行存款以及法律法规或中国证监会允许基金投资的其他金融工具。
通过网络在线购买该基金的前端申购费率如下:
序号    购买金额X    申购费率
1    X<100万    0.15%
2    100万<=X<500万    0.10%
3    500万<=X<1000万    0.03%
4    X>=1000万    1000元/笔通过网络在线赎回该基金的赎回购费率如下:
序号    持有期限D    赎回费率
1    D<7天    1.5%
2    7天<=D<30天    0.75%
3    30天<=D<180天    0.50%
4    D>=180天    0.00%申购基金的原则:投资者在开放期(每个工作日的9:00~15:00)购买基金的,则以该基金当天的净值计算申购的份额数(份额数=购买金额/(1+申购费率)/当天净值),否则以下一个工作日的净值来计算申购的份额数。比如汇添富移动互联股票(000697)在2016年10月26日的净值1.606,而2016年10月27日的净值是1.602,如果投资者在2016年10月26日在9:00~15:00时间段申购了10000元,则他申购该基金的确认份额数为10000/(1+0.15%)/1.606=6217.32份;若在2016年10月26日15点至2016年10月27日9点期间申购的,则申购该基金的确认份额数为10000/(1+0.15%)/1.602=6232.85份;以此类推。
赎回基金的原则:投资者在开放时间(每个工作日的9:00~15:00)赎回基金的,则以该基金当天的净值计算赎回金额,其中赎回金额=赎回份额数*当天净值*(1-赎回费率),0<赎回份额数<=拥有的份额数,否则以下一个工作日的净值来计算赎回金额。比如汇添富移动互联股票(000697)在2016年10月26日的净值1.606,而2016年10月27日的净值是1.602,如果投资者(假设他/她持有该基金的时间为23天)在2016年10月26日在9:00~15:00时间段赎回10000份,则赎回该基金的确认金额10000*(1-0.75%)*1.606=15939.55元;若在2016年10月26日15点至2016年10月27日9点期间赎回的,则赎回该基金的确认金额10000*(1-0.75%)*1.602=15899.85元;以此类推。
投资基金收益=赎回基金确认金额-申购基金金额。请您以汇添富移动互联股票(000697)2016年以来的历史净值情况为例(见附件),编写一个基金收益程序。要求输入任意的投资基金金额、申购时间和赎回时间,输出基金份额数、赎回金额和基金收益。要求申购时间比赎回时间早,申购时间和赎回时间在2016年1月1日至2016年10月31日之间。要求申购或赎回时间格式为“年-月-日 时:分:秒”,如:2016-10-30 21:32:15提示:可将汇添富移动互联股票(000697)今年以来的历史净值以二维数组或TreeMap初始化(日期和净值即可)或通过txt文件读取。附件
汇添富移动互联股票(000697)历史净值
(来源:http://finance.sina.com.cn/fund/quotes/000697/bc.shtml)
日期    单位净值(元)    累计净值(元)    净值增长率
2016-10-28    1.596    1.596    -0.375%
2016-10-27    1.602    1.602    -0.249%
2016-10-26    1.606    1.606    -0.864%
2016-10-25    1.620    1.620    0.310%
2016-10-24    1.615    1.615    0.937%
2016-10-21    1.600    1.600    -0.559%
2016-10-20    1.609    1.609    0.815%
2016-10-19    1.596    1.596    -0.063%
2016-10-18    1.597    1.597    1.397%
2016-10-17    1.575    1.575    -1.068%
2016-10-14    1.592    1.592    -0.188%
2016-10-13    1.595    1.595    0%
2016-10-12    1.595    1.595    -0.188%
2016-10-11    1.598    1.598    0%
2016-10-10    1.598    1.598    2.699%
2016-09-30    1.556    1.556    0.712%
2016-09-29    1.545    1.545    0.260%
2016-09-28    1.541    1.541    -0.259%
2016-09-27    1.545    1.545    0.849%
2016-09-26    1.532    1.532    -1.983%
2016-09-23    1.563    1.563    -0.319%
2016-09-22    1.568    1.568    0.320%
2016-09-21    1.563    1.563    0.128%
2016-09-20    1.561    1.561    -0.256%
2016-09-19    1.565    1.565    1.294%
2016-09-14    1.545    1.545    -0.194%
2016-09-13    1.548    1.548    0.324%
2016-09-12    1.543    1.543    -3.199%
2016-09-09    1.594    1.594    -1.300%
2016-09-08    1.615    1.615    0.498%
2016-09-07    1.607    1.607    -0.310%
2016-09-06    1.612    1.612    1.832%
2016-09-05    1.583    1.583    0.253%
2016-09-02    1.579    1.579    -0.316%
2016-09-01    1.584    1.584    -0.440%
2016-08-31    1.591    1.591    -0.500%
2016-08-30    1.599    1.599    0%
2016-08-29    1.599    1.599    0.125%
2016-08-26    1.597    1.597    0.188%
2016-08-25    1.594    1.594    -0.561%
2016-08-24    1.603    1.603    0.945%
2016-08-23    1.588    1.588    0.189%
2016-08-22    1.585    1.585    -1.614%
2016-08-19    1.611    1.611    0.187%
2016-08-18    1.608    1.608    -0.372%
2016-08-17    1.614    1.614    0.498%
2016-08-16    1.606    1.606    0%
2016-08-15    1.606    1.606    3.147%
2016-08-12    1.557    1.557    0.777%
2016-08-11    1.545    1.545    -1.967%
2016-08-10    1.576    1.576    -0.442%
2016-08-09    1.583    1.583    0.828%
2016-08-08    1.570    1.570    1.095%
2016-08-05    1.553    1.553    -1.209%
2016-08-04    1.572    1.572    1.223%
2016-08-03    1.553    1.553    0%
2016-08-02    1.553    1.553    0.975%
2016-08-01    1.538    1.538    -0.966%
2016-07-29    1.553    1.553    -1.146%
2016-07-28    1.571    1.571    -1.443%
2016-07-27    1.594    1.594    -5.680%
2016-07-26    1.690    1.690    1.137%
2016-07-25    1.671    1.671    -0.476%
2016-07-22    1.679    1.679    -1.002%
2016-07-21    1.696    1.696    -0.059%
2016-07-20    1.697    1.697    0.059%
2016-07-19    1.696    1.696    0.713%
2016-07-18    1.684    1.684    -0.237%
2016-07-15    1.688    1.688    -1.055%
2016-07-14    1.706    1.706    0.059%
2016-07-13    1.705    1.705    1.067%
2016-07-12    1.687    1.687    0.897%
2016-07-11    1.672    1.672    -0.358%
2016-07-08    1.678    1.678    0.239%
2016-07-07    1.674    1.674    -0.594%
2016-07-06    1.684    1.684    0.238%
2016-07-05    1.680    1.680    0.119%
2016-07-04    1.678    1.678    1.574%
2016-07-01    1.652    1.652    -0.840%
2016-06-30    1.666    1.666    0.361%
2016-06-29    1.660    1.660    -0.180%
2016-06-28    1.663    1.663    0.666%
2016-06-27    1.652    1.652    2.672%
2016-06-24    1.609    1.609    -0.740%
2016-06-23    1.621    1.621    0.247%
2016-06-22    1.617    1.617    2.536%
2016-06-21    1.577    1.577    -0.942%
2016-06-20    1.592    1.592    0.569%
2016-06-17    1.583    1.583    0.444%
2016-06-16    1.576    1.576    -0.505%
2016-06-15    1.584    1.584    3.462%
2016-06-14    1.531    1.531    -0.584%
2016-06-13    1.540    1.540    -5.810%
2016-06-08    1.635    1.635    -0.487%
2016-06-07    1.643    1.643    -0.061%
2016-06-06    1.644    1.644    0.305%
2016-06-03    1.639    1.639    0.862%
2016-06-02    1.625    1.625    1.057%
2016-06-01    1.608    1.608    0.878%
2016-05-31    1.594    1.594    5.354%
2016-05-30    1.513    1.513    -0.198%
2016-05-27    1.516    1.516    -0.720%
2016-05-26    1.527    1.527    0.792%
2016-05-25    1.515    1.515    -0.329%
2016-05-24    1.520    1.520    -0.848%
2016-05-23    1.533    1.533    1.322%
2016-05-20    1.513    1.513    1.340%
2016-05-19    1.493    1.493    0.674%
2016-05-18    1.483    1.483    -2.818%
2016-05-17    1.526    1.526    1.127%
2016-05-16    1.509    1.509    1.616%
2016-05-13    1.485    1.485    -0.802%
2016-05-12    1.497    1.497    0.335%
2016-05-11    1.492    1.492    -1.971%
2016-05-10    1.522    1.522    -0.588%
2016-05-09    1.531    1.531    -3.650%
2016-05-06    1.589    1.589    -4.162%
2016-05-05    1.658    1.658    0.974%
2016-05-04    1.642    1.642    0.061%
2016-05-03    1.641    1.641    3.598%
2016-04-29    1.584    1.584    -0.189%
2016-04-28    1.587    1.587    0%
2016-04-27    1.587    1.587    -0.251%
2016-04-26    1.591    1.591    1.016%
2016-04-25    1.575    1.575    -0.881%
2016-04-22    1.589    1.589    1.404%
2016-04-21    1.567    1.567    -1.632%
2016-04-20    1.593    1.593    -5.066%
2016-04-19    1.678    1.678    0.299%
2016-04-18    1.673    1.673    -1.819%
2016-04-15    1.704    1.704    -0.409%
2016-04-14    1.711    1.711    0.944%
2016-04-13    1.695    1.695    1.497%
2016-04-12    1.670    1.670    -0.713%
2016-04-11    1.682    1.682    1.631%
2016-04-08    1.655    1.655    -0.958%
2016-04-07    1.671    1.671    -1.416%
2016-04-06    1.695    1.695    -0.118%
2016-04-05    1.697    1.697    3.287%
2016-04-01    1.643    1.643    -0.725%
2016-03-31    1.655    1.655    -0.241%
2016-03-30    1.659    1.659    4.669%
2016-03-29    1.585    1.585    -1.858%
2016-03-28    1.615    1.615    -0.859%
2016-03-25    1.629    1.629    -0.489%
2016-03-24    1.637    1.637    -2.269%
2016-03-23    1.675    1.675    2.761%
2016-03-22    1.630    1.630    -0.488%
2016-03-21    1.638    1.638    2.825%
2016-03-18    1.593    1.593    5.079%
2016-03-17    1.516    1.516    4.913%
2016-03-16    1.445    1.445    -1.027%
2016-03-15    1.460    1.460    -0.748%
2016-03-14    1.471    1.471    5.222%
2016-03-11    1.398    1.398    -0.356%
2016-03-10    1.403    1.403    -2.162%
2016-03-09    1.434    1.434    -2.515%
2016-03-08    1.471    1.471    1.239%
2016-03-07    1.453    1.453    2.541%
2016-03-04    1.417    1.417    -4.963%
2016-03-03    1.491    1.491    0.134%
2016-03-02    1.489    1.489    4.272%
2016-03-01    1.428    1.428    1.854%
2016-02-29    1.402    1.402    -6.032%
2016-02-26    1.492    1.492    -1.257%
2016-02-25    1.511    1.511    -7.357%
2016-02-24    1.631    1.631    -1.865%
2016-02-23    1.662    1.662    0%
2016-02-22    1.662    1.662    2.403%
2016-02-19    1.623    1.623    0.682%
2016-02-18    1.612    1.612    -1.044%
2016-02-17    1.629    1.629    2.647%
2016-02-16    1.587    1.587    5.449%
2016-02-15    1.505    1.505    1.142%
2016-02-05    1.488    1.488    -2.490%
2016-02-04    1.526    1.526    2.210%
2016-02-03    1.493    1.493    0.606%
2016-02-02    1.484    1.484    5.323%
2016-02-01    1.409    1.409    -1.675%
2016-01-29    1.433    1.433    4.142%
2016-01-28    1.376    1.376    -6.267%
2016-01-27    1.468    1.468    -0.542%
2016-01-26    1.476    1.476    -7.286%
2016-01-25    1.592    1.592    1.144%
2016-01-22    1.574    1.574    1.877%
2016-01-21    1.545    1.545    -5.273%
2016-01-20    1.631    1.631    -1.271%
2016-01-19    1.652    1.652    4.030%
2016-01-18    1.588    1.588    3.520%
2016-01-15    1.534    1.534    -3.034%
2016-01-14    1.582    1.582    5.396%
2016-01-13    1.501    1.501    -4.880%
2016-01-12    1.578    1.578    -0.316%
2016-01-11    1.583    1.583    -7.535%
2016-01-08    1.712    1.712    0.058%
2016-01-07    1.711    1.711    -8.356%
2016-01-06    1.867    1.867    2.695%
2016-01-05    1.818    1.818    -3.143%
2016-01-04    1.877    1.877    -7.945%

 

转载于:https://www.cnblogs.com/fitzroy343/p/10167564.html


http://www.ppmy.cn/news/888646.html

相关文章

highstock实现股票分时

highchart学习网站 www.highcharts.com http://www.hcharts.cn/docs/index.php http://www.hcharts.cn/api/highstock.php 实现效果: //谷歌手机浏览器酷似有bug&#xff0c;不过在iPhone5上图正确显示 传入数据&#xff1a;股票交易的时间早上9:30-11:30 下午13:00-15:00 对…

股票成交量预测(Pytorch基础练习)

题目 现有一个csv关于2012-2018的股票交易数据文件&#xff0c;有五列数据&#xff1a;开盘价&#xff0c;最高价&#xff0c;最低价&#xff0c;收盘价&#xff0c;成交量&#xff0c;现在训练一个逻辑回归&#xff0c;预测判断次日的股市升还是降。 示例 csv文件下载&#…

数据分析实例(股票分析实例)

import numpy as np import pandas as pd import matplotlib.pyplot as plt %matplotlib inline使用pandas的内建函数DataReader从雅虎财经网站读取股价数据 import tushare as tspingan ts.get_k_data(601318,start2011-01-01)pingan.head()dateopenclosehighlowvolumecode0…

知识关联视角下金融证券知识图谱构建与相关股票发现

摘要 【目的】 基于知识关联的研究视角构建领域知识图谱发现行业特征和相关股票,为投资者的组合交易决策提供新的视角和依据。【方法】 首先构建以股票数据为核心的种子知识图谱,对非结构化的文本数据基于FinBERT预训练模型进行实体抽取和关系分类形成三元组,并将二者进行知识…

一个爬取股票信息的爬虫程序

1 # * coding:utf-8 * 2 3 import requests,re,json,time,os 4 import heapq 5 from bs4 import BeautifulSoup 6 7 class GPINFO(object): 8 “”“docstring for GPINFO”"" 9 def init(self): 10 self.Url ‘http://http://xcjcy.org/’ 11 self.BaseData [] 12…

股票k线

与上一篇文章相比k线图主要的难点 1.tooltip的定制化显示&#xff1a; 当手指触摸手机屏幕上下拖动可能会手指的事件陷入图表无法进行上下拖动 tooltip:{followMouseMove} followMouseMove为true的话手指左右移动框中数据会发生改变但是无法上下移动&#xff0c;false的话图表框…

Codeforces Round #556 (Div. 2)

A. Stock Arbitraging 签到题&#xff0c;买股票&#xff0c;就是买的价格分别为si&#xff0c;卖的价格分别为bi&#xff0c;用最少的钱买进&#xff0c;用最大的价格卖出&#xff0c;还有别忘记加上买股票是剩下的钱。 # include <bits/stdc.h> using namespace std;…

使用PyQt绘制精美的股票行情分时线图

# -*- coding: utf-8 -*- # !/usr/bin/pythonimport sys import tushare as ts import pandas as pd import os from PyQt4 import QtGui, QtCore, Qtreload(sys) sys.setdefaultencoding(utf8)class report_painter:绘制行情类def __init__(self, parent):# 初始化self.parent…