package math;
import java.awt.List;
import java.util.ArrayList;
public class MoneyMenagement {
private double remainMoney=0;
private double totleMoney=0;
private double imagineStocksMoney=0;
private double realityStocksMoney=0;
private int imagineStocks=0;
private int realityStocks=0;
public void setRemainMoney(double remainMoney){this.remainMoney=remainMoney;}
public void setTotleMoney(double totleMoney){this.totleMoney=totleMoney;}
public void setImagineStocksMoney(double imagineStocksMoney){this.imagineStocksMoney=imagineStocksMoney;}
public void setRealityStocksMoney(double realityStocksMoney){this.realityStocksMoney=realityStocksMoney;}
public void setRealityStocks(int realityStocks){this.realityStocks=realityStocks;}
public double getRemainMoney(){return this.remainMoney;}
public double getTotleMoney(){return this.totleMoney;}
public double getImagineStocksMoney(){return this.imagineStocksMoney;}
public double getRealityStocksMoney(){return this.realityStocksMoney;}
public int getRealityStocks(){return this.realityStocks;}
MoneyMenagement()
{
}
MoneyMenagement(double totleMoney)
{
this.totleMoney=totleMoney;
}
public void moneyMenagementInit(Percentage percentage)
{
this.imagineStocksCount(percentage);
this.realityStocksCount(percentage);
this.imagineStocksMoneyCount(percentage);
this.realityStocksMoneyCount(percentage);
this.remainMoneyCount(percentage);
this.realityStocksMoneyCount(percentage);
}
static public MoneyMenagement moneyMenagementRecount(MoneyMenagement a,Percentage percentage)
{
MoneyMenagement b=new MoneyMenagement();
b.setTotleMoney(a.getRealityStocks()*percentage.getNowPrice()+a.getRemainMoney());
return b;
}
static public MoneyMenagement moneyMenagementRecount_N(double[] list,double highest,double lowest ,double ratio,double totelmoney)
{
int sum=0;
ArrayList<Percentage> tempPercentageList=new ArrayList<Percentage>(list.length);
for(int i=0;i<list.length;i++)
{
tempPercentageList.add(new Percentage(highest,lowest,list[i],ratio));
}
ArrayList<MoneyMenagement> tempMoneyMenagementList=new ArrayList<MoneyMenagement>(list.length);
tempMoneyMenagementList.add(new MoneyMenagement(totelmoney));
tempMoneyMenagementList.get(0).moneyMenagementInit(tempPercentageList.get(0));
tempMoneyMenagementList.get(0).showMoneyMenagement();
for(int i=0;i<list.length-1;i++)
{
System.out.println("price:"+tempPercentageList.get(i).getNowPrice());
tempMoneyMenagementList.add(MoneyMenagement.moneyMenagementRecount(tempMoneyMenagementList.get(i), tempPercentageList.get(i+1)));
tempMoneyMenagementList.get(i+1).moneyMenagementInit(tempPercentageList.get(i+1));
sum+=Math.abs(tempMoneyMenagementList.get(i).realityStocks-tempMoneyMenagementList.get(i+1).realityStocks);
System.out.println("buy:"+Math.abs(tempMoneyMenagementList.get(i).realityStocks-tempMoneyMenagementList.get(i+1).realityStocks));
System.out.println("\n");
tempMoneyMenagementList.get(i+1).showMoneyMenagement();
}
MoneyMenagement b=new MoneyMenagement();
System.out.println("sum:"+sum);
//b.setTotleMoney(a.getRealityStocks()*percentage.getNowPrice()+a.getRemainMoney());
return b;
}
static public MoneyMenagement moneyMenagementRecount_N2(double[] list,double highest,double lowest ,double ratio,double totelmoney)
{
int sum=0;
ArrayList<Percentage> tempPercentageList=new ArrayList<Percentage>(list.length);
for(int i=0;i<list.length;i++)
{
if(list[i]<lowest){lowest=list[i];}
tempPercentageList.add(new Percentage(highest,lowest,list[i],ratio));
}
ArrayList<MoneyMenagement> tempMoneyMenagementList=new ArrayList<MoneyMenagement>(list.length);
tempMoneyMenagementList.add(new MoneyMenagement(totelmoney));
tempMoneyMenagementList.get(0).moneyMenagementInit(tempPercentageList.get(0));
tempMoneyMenagementList.get(0).showMoneyMenagement();
for(int i=0;i<list.length-1;i++)
{
System.out.println("price:"+tempPercentageList.get(i).getNowPrice());
tempMoneyMenagementList.add(MoneyMenagement.moneyMenagementRecount(tempMoneyMenagementList.get(i), tempPercentageList.get(i+1)));
tempMoneyMenagementList.get(i+1).moneyMenagementInit(tempPercentageList.get(i+1));
sum+=Math.abs(tempMoneyMenagementList.get(i).realityStocks-tempMoneyMenagementList.get(i+1).realityStocks);
System.out.println("buy:"+Math.abs(tempMoneyMenagementList.get(i).realityStocks-tempMoneyMenagementList.get(i+1).realityStocks));
System.out.println("\n");
tempMoneyMenagementList.get(i+1).showMoneyMenagement();
}
System.out.println("price:"+tempPercentageList.get(list.length-1).getNowPrice());
MoneyMenagement b=new MoneyMenagement();
System.out.println("sum:"+sum);
//b.setTotleMoney(a.getRealityStocks()*percentage.getNowPrice()+a.getRemainMoney());
return b;
}
static public MoneyMenagement moneyMenagementRecount_N3(ArrayList<PriceNow> Array_list,double highest,double lowest ,double ratio,double totelmoney,double difference,ArrayList<PriceNow> out)
{
double beginTotelMoney=totelmoney;
ArrayList<PriceNow> list=new ArrayList<PriceNow>();
for(int i=0;i<Array_list.size();i++)
{
list.add(new PriceNow());
list.get(i).value=Array_list.get(i).value;
list.get(i).deleteFlag=Array_list.get(i).deleteFlag;
}
boolean flagX[]=new boolean[list.size()-1];
//boolean flagX[0]=list[1]-list[0]>=0?true:false;
double levelKeep=difference/2; //2分之1的差值
//double UP_levelKeepHigh=difference/2; //2分之1的差值
double UP_levelPrice=list.get(0).value+list.get(0).value*levelKeep;
double LevelPrice=list.get(0).value;
double DOWN_levelPrice=list.get(0).value-list.get(0).value*levelKeep;
String direction[]=new String[list.size()-1];
double deleteList[];
//boolean [] x=new boolean [list.length-1];
//boolean turn=false;
for(int i=0;i<list.size()-1;i++)
{
if(list.get(i+1).value-list.get(i).value>=0)
direction[i]="up";
else
direction[i]="down";
}
for(int i=0;i<direction.length-1;i++)
{
if(direction[i]==direction[i+1])
flagX[i+1]=true;
else
flagX[i+1]=false;
}
flagX[0]=true; //INIT_flag
list.get(0).deleteFlag=true;//INIT_deleteFlag
boolean breakFlag=false;
boolean realBreakFlag=true;
for(int i=0;i<direction.length;i++)
{
if(flagX[i]==true) // (up/down) not change
{
if(direction[i]=="up") //up
{
if(list.get(i+1).value-list.get(i).value>=difference*list.get(i).value) //up > = difference
{
LevelPrice=list.get(i+1).value-list.get(i+1).value*levelKeep;
//DOWN_levelPrice=UP_levelPrice;
breakFlag=true;
}
else if(list.get(i+1).value-list.get(i).value<difference*list.get(i).value) //up < difference
{
list.get(i+1).deleteFlag=false;
list.get(i+1).value=list.get(i).value;
}
}
else if(direction[i]=="down") //down
{
if(Math.abs(list.get(i+1).value-list.get(i).value)>=difference*list.get(i).value) //down > = difference
{
LevelPrice=list.get(i+1).value+list.get(i+1).value*levelKeep;
//UP_levelPrice=DOWN_levelPrice;
breakFlag=true;
}
else if(Math.abs(list.get(i+1).value-list.get(i).value)<difference*list.get(i).value)//down < difference
{
list.get(i+1).deleteFlag=false;
list.get(i+1).value=list.get(i).value;
}
}
}
else if(flagX[i]==false) // (up/down) changed
{
if(breakFlag==true)
{
if(direction[i]=="up") //up
{
if(realBreakFlag==true && list.get(i+1).value>LevelPrice )
{
list.get(i+1).deleteFlag=true;
LevelPrice=list.get(i+1).value-list.get(i+1).value*levelKeep;
//DOWN_levelPrice=UP_levelPrice;
realBreakFlag=true;
}
else if(list.get(i+1).value<=LevelPrice)
{
list.get(i+1).deleteFlag=false;
list.get(i+1).value=list.get(i).value;
if(i<direction.length-1)
{
if(direction[i+1]=="up" && flagX[i+1]==true)
flagX[i+1]=false;
else if(direction[i+1]=="down" && flagX[i+1]==false)
flagX[i+1]=true;
}
}
}
else if(direction[i]=="down") //down
{
if(realBreakFlag==true && list.get(i+1).value<LevelPrice )
{
list.get(i+1).deleteFlag=true;
LevelPrice=list.get(i+1).value+list.get(i+1).value*levelKeep;
//UP_levelPrice=DOWN_levelPrice;
realBreakFlag=true;
}
else if(list.get(i+1).value>=LevelPrice)
{
list.get(i+1).deleteFlag=false;
list.get(i+1).value=list.get(i).value;
if(i<direction.length-1)
{
if(direction[i+1]=="down" && flagX[i+1]==true)
flagX[i+1]=false;
else if(direction[i+1]=="up" && flagX[i+1]==false)
flagX[i+1]=true;
}
}
}
}
else
{
list.get(i+1).deleteFlag=false;
list.get(i+1).value=list.get(i).value;
flagX[i+1]=true;
}
}
}
ArrayList<PriceNow> list_temp=new ArrayList<PriceNow>();
for(int i=0;i<list.size();i++)
{
if(list.get(i).deleteFlag==true)
{
list_temp.add(list.get(i));
}
out.add(list.get(i));
}
//huifu
list_temp.add(new PriceNow(Array_list.get(Array_list.size()-1).value,true));
out.add(new PriceNow(Array_list.get(Array_list.size()-1).value,true));
list=list_temp;
for(int i=0;i<list.size();i++)
{
System.out.print(list.get(i).value+" ");
}
System.out.println();
System.out.println("buy_time:"+list.size());
System.out.println();
///begin
int sum=0;
ArrayList<Percentage> tempPercentageList=new ArrayList<Percentage>(list.size());
for(int i=0;i<list.size();i++)
{
if(list.get(i).value<lowest){lowest=list.get(i).value;}
tempPercentageList.add(new Percentage(highest,lowest,list.get(i).value,ratio));
}
ArrayList<MoneyMenagement> tempMoneyMenagementList=new ArrayList<MoneyMenagement>(list.size());
tempMoneyMenagementList.add(new MoneyMenagement(totelmoney));
tempMoneyMenagementList.get(0).moneyMenagementInit(tempPercentageList.get(0));
tempMoneyMenagementList.get(0).showMoneyMenagement();
for(int i=0;i<list.size()-1;i++)
{
System.out.println("price:"+tempPercentageList.get(i).getNowPrice());
tempMoneyMenagementList.add(MoneyMenagement.moneyMenagementRecount(tempMoneyMenagementList.get(i), tempPercentageList.get(i+1)));
tempMoneyMenagementList.get(i+1).moneyMenagementInit(tempPercentageList.get(i+1));
sum+=Math.abs(tempMoneyMenagementList.get(i).realityStocks-tempMoneyMenagementList.get(i+1).realityStocks);
System.out.println("buy:"+Math.abs(tempMoneyMenagementList.get(i).realityStocks-tempMoneyMenagementList.get(i+1).realityStocks));
System.out.println("\n");
tempMoneyMenagementList.get(i+1).showMoneyMenagement();
System.out.println();
if(i==list.size()-2)
{
if(Array_list.get(Array_list.size()-1).value-Array_list.get(0).value>=0)
System.out.println("原利润:+"+(Array_list.get(Array_list.size()-1).value-Array_list.get(0).value)/Array_list.get(0).value*100+"%");
else
System.out.println("原利润:-"+(Array_list.get(0).value-Array_list.get(Array_list.size()-1).value)/Array_list.get(0).value*100+"%");
if(tempMoneyMenagementList.get(i+1).getTotleMoney()>=beginTotelMoney)
System.out.println("实际利润:+"+(tempMoneyMenagementList.get(i+1).getTotleMoney()-beginTotelMoney)/beginTotelMoney*100+"%");
else
System.out.println("实际利润:-"+(beginTotelMoney-tempMoneyMenagementList.get(i+1).getTotleMoney())/beginTotelMoney*100+"%");
}
}
System.out.println("开始价格(price):"+Array_list.get(0).value);
System.out.println("现价(price):"+tempPercentageList.get(list.size()-1).getNowPrice());
MoneyMenagement b=new MoneyMenagement();
System.out.println("交易总额(sum):"+sum);
System.out.println("交易次数:"+list.size());
//b.setTotleMoney(a.getRealityStocks()*percentage.getNowPrice()+a.getRemainMoney());
return b;
}
static public MoneyMenagement moneyMenagementRecount_N4(int fantancha ,ArrayList<PriceNow> Array_list,double highest,double lowest ,double ratio,double totelmoney,double difference,ArrayList<PriceNow> out)
{
double beginTotelMoney=totelmoney;
ArrayList<PriceNow> list=new ArrayList<PriceNow>();
for(int i=0;i<Array_list.size();i++)
{
list.add(new PriceNow());
list.get(i).value=Array_list.get(i).value;
list.get(i).deleteFlag=Array_list.get(i).deleteFlag;
}
boolean flagX[]=new boolean[list.size()-1];
//boolean flagX[0]=list[1]-list[0]>=0?true:false;
double levelKeep=difference/fantancha; //2分之1的差值
//double UP_levelKeepHigh=difference/2; //2分之1的差值
double UP_levelPrice=list.get(0).value+list.get(0).value*levelKeep;
double LevelPrice=list.get(0).value;
double DOWN_levelPrice=list.get(0).value-list.get(0).value*levelKeep;
String direction[]=new String[list.size()-1];
double deleteList[];
//boolean [] x=new boolean [list.length-1];
//boolean turn=false;
for(int i=0;i<list.size()-1;i++)
{
if(list.get(i+1).value-list.get(i).value>=0)
direction[i]="up";
else
direction[i]="down";
}
for(int i=0;i<direction.length-1;i++)
{
if(direction[i]==direction[i+1])
flagX[i+1]=true;
else
flagX[i+1]=false;
}
flagX[0]=true; //INIT_flag
list.get(0).deleteFlag=true;//INIT_deleteFlag
boolean breakFlag=false;
boolean realBreakFlag=true;
for(int i=0;i<direction.length;i++)
{
if(flagX[i]==true) // (up/down) not change
{
if(direction[i]=="up") //up
{
if(list.get(i+1).value-list.get(i).value>=difference*list.get(i).value) //up > = difference
{
LevelPrice=list.get(i+1).value-list.get(i+1).value*levelKeep;
//DOWN_levelPrice=UP_levelPrice;
breakFlag=true;
}
else if(list.get(i+1).value-list.get(i).value<difference*list.get(i).value) //up < difference
{
list.get(i+1).deleteFlag=false;
list.get(i+1).value=list.get(i).value;
}
}
else if(direction[i]=="down") //down
{
if(Math.abs(list.get(i+1).value-list.get(i).value)>=difference*list.get(i).value) //down > = difference
{
LevelPrice=list.get(i+1).value+list.get(i+1).value*levelKeep;
//UP_levelPrice=DOWN_levelPrice;
breakFlag=true;
}
else if(Math.abs(list.get(i+1).value-list.get(i).value)<difference*list.get(i).value)//down < difference
{
list.get(i+1).deleteFlag=false;
list.get(i+1).value=list.get(i).value;
}
}
}
else if(flagX[i]==false) // (up/down) changed
{
if(breakFlag==true)
{
if(direction[i]=="up") //up
{
if(realBreakFlag==true && list.get(i+1).value>LevelPrice )
{
list.get(i+1).deleteFlag=true;
LevelPrice=list.get(i+1).value-list.get(i+1).value*levelKeep;
//DOWN_levelPrice=UP_levelPrice;
realBreakFlag=true;
}
else if(list.get(i+1).value<=LevelPrice)
{
list.get(i+1).deleteFlag=false;
list.get(i+1).value=list.get(i).value;
if(i<direction.length-1)
{
if(direction[i+1]=="up" && flagX[i+1]==true)
flagX[i+1]=false;
else if(direction[i+1]=="down" && flagX[i+1]==false)
flagX[i+1]=true;
}
}
}
else if(direction[i]=="down") //down
{
if(realBreakFlag==true && list.get(i+1).value<LevelPrice )
{
list.get(i+1).deleteFlag=true;
LevelPrice=list.get(i+1).value+list.get(i+1).value*levelKeep;
//UP_levelPrice=DOWN_levelPrice;
realBreakFlag=true;
}
else if(list.get(i+1).value>=LevelPrice)
{
list.get(i+1).deleteFlag=false;
list.get(i+1).value=list.get(i).value;
if(i<direction.length-1)
{
if(direction[i+1]=="down" && flagX[i+1]==true)
flagX[i+1]=false;
else if(direction[i+1]=="up" && flagX[i+1]==false)
flagX[i+1]=true;
}
}
}
}
else
{
list.get(i+1).deleteFlag=false;
list.get(i+1).value=list.get(i).value;
flagX[i+1]=true;
}
}
}
ArrayList<PriceNow> list_temp=new ArrayList<PriceNow>();
for(int i=0;i<list.size();i++)
{
if(list.get(i).deleteFlag==true)
{
list_temp.add(list.get(i));
}
out.add(list.get(i));
}
//huifu
list_temp.add(new PriceNow(Array_list.get(Array_list.size()-1).value,true));
out.add(new PriceNow(Array_list.get(Array_list.size()-1).value,true));
list=list_temp;
for(int i=0;i<list.size();i++)
{
System.out.print(list.get(i).value+" ");
}
System.out.println();
System.out.println("buy_time:"+list.size());
System.out.println();
///begin
int sum=0;
ArrayList<Percentage> tempPercentageList=new ArrayList<Percentage>(list.size());
for(int i=0;i<list.size();i++)
{
if(list.get(i).value<lowest){lowest=list.get(i).value;}
//if(list.get(i).value>lowest+(highest-lowest)/2){highest=list.get(i).value; }
tempPercentageList.add(new Percentage(highest,lowest,list.get(i).value,ratio));
}
ArrayList<MoneyMenagement> tempMoneyMenagementList=new ArrayList<MoneyMenagement>(list.size());
tempMoneyMenagementList.add(new MoneyMenagement(totelmoney));
tempMoneyMenagementList.get(0).moneyMenagementInit(tempPercentageList.get(0));
tempMoneyMenagementList.get(0).showMoneyMenagement();
for(int i=0;i<list.size()-1;i++)
{
System.out.println("price:"+tempPercentageList.get(i).getNowPrice());
tempMoneyMenagementList.add(MoneyMenagement.moneyMenagementRecount(tempMoneyMenagementList.get(i), tempPercentageList.get(i+1)));
tempMoneyMenagementList.get(i+1).moneyMenagementInit(tempPercentageList.get(i+1));
sum+=Math.abs(tempMoneyMenagementList.get(i).realityStocks-tempMoneyMenagementList.get(i+1).realityStocks);
System.out.println("buy:"+Math.abs(tempMoneyMenagementList.get(i).realityStocks-tempMoneyMenagementList.get(i+1).realityStocks));
System.out.println("\n");
tempMoneyMenagementList.get(i+1).showMoneyMenagement();
System.out.println();
if(i==list.size()-2)
{
if(Array_list.get(Array_list.size()-1).value-Array_list.get(0).value>=0)
System.out.println("原利润:+"+(Array_list.get(Array_list.size()-1).value-Array_list.get(0).value)/Array_list.get(0).value*100+"%");
else
System.out.println("原利润:-"+(Array_list.get(0).value-Array_list.get(Array_list.size()-1).value)/Array_list.get(0).value*100+"%");
if(tempMoneyMenagementList.get(i+1).getTotleMoney()>=beginTotelMoney)
System.out.println("实际利润:+"+(tempMoneyMenagementList.get(i+1).getTotleMoney()-beginTotelMoney)/beginTotelMoney*100+"%");
else
System.out.println("实际利润:-"+(beginTotelMoney-tempMoneyMenagementList.get(i+1).getTotleMoney())/beginTotelMoney*100+"%");
}
}
System.out.println("开始价格(price):"+Array_list.get(0).value);
System.out.println("现价(price):"+tempPercentageList.get(list.size()-1).getNowPrice());
MoneyMenagement b=new MoneyMenagement();
System.out.println("交易总额(sum):"+sum);
System.out.println("交易次数:"+list.size());
//b.setTotleMoney(a.getRealityStocks()*percentage.getNowPrice()+a.getRemainMoney());
return b;
}
static public MoneyMenagement moneyMenagementRecount_N_xTEST(int fantancha ,ArrayList<PriceNow> Array_list,double highest,double lowest ,double ratio,double totelmoney,double difference,ArrayList<PriceNow> out)
{
double beginTotelMoney=totelmoney;
ArrayList<PriceNow> list=new ArrayList<PriceNow>();
for(int i=0;i<Array_list.size();i++)
{
list.add(new PriceNow());
list.get(i).value=Array_list.get(i).value;
list.get(i).deleteFlag=Array_list.get(i).deleteFlag;
}
boolean flagX[]=new boolean[list.size()-1];
//boolean flagX[0]=list[1]-list[0]>=0?true:false;
double levelKeep=difference/fantancha; //2分之1的差值
//double UP_levelKeepHigh=difference/2; //2分之1的差值
double UP_levelPrice=list.get(0).value+list.get(0).value*levelKeep;
double LevelPrice=list.get(0).value;
double DOWN_levelPrice=list.get(0).value-list.get(0).value*levelKeep;
String direction[]=new String[list.size()-1];
double deleteList[];
//boolean [] x=new boolean [list.length-1];
//boolean turn=false;
for(int i=0;i<list.size()-1;i++)
{
if(list.get(i+1).value-list.get(i).value>=0)
direction[i]="up";
else
direction[i]="down";
}
for(int i=0;i<direction.length-1;i++)
{
if(direction[i]==direction[i+1])
flagX[i+1]=true;
else
flagX[i+1]=false;
}
flagX[0]=true; //INIT_flag
list.get(0).deleteFlag=true;//INIT_deleteFlag
boolean breakFlag=false;
boolean realBreakFlag=true;
for(int i=0;i<direction.length;i++)
{
if(flagX[i]==true) // (up/down) not change
{
if(direction[i]=="up") //up
{
if(list.get(i+1).value-list.get(i).value>=difference*list.get(i).value) //up > = difference
{
LevelPrice=list.get(i+1).value-list.get(i+1).value*levelKeep;
//DOWN_levelPrice=UP_levelPrice;
breakFlag=true;
}
else if(list.get(i+1).value-list.get(i).value<difference*list.get(i).value) //up < difference
{
list.get(i+1).deleteFlag=false;
list.get(i+1).value=list.get(i).value;
}
}
else if(direction[i]=="down") //down
{
if(Math.abs(list.get(i+1).value-list.get(i).value)>=difference*list.get(i).value) //down > = difference
{
LevelPrice=list.get(i+1).value+list.get(i+1).value*levelKeep;
//UP_levelPrice=DOWN_levelPrice;
breakFlag=true;
}
else if(Math.abs(list.get(i+1).value-list.get(i).value)<difference*list.get(i).value)//down < difference
{
list.get(i+1).deleteFlag=false;
list.get(i+1).value=list.get(i).value;
}
}
}
else if(flagX[i]==false) // (up/down) changed
{
if(breakFlag==true)
{
if(direction[i]=="up") //up
{
if(realBreakFlag==true && list.get(i+1).value>LevelPrice )
{
list.get(i+1).deleteFlag=true;
LevelPrice=list.get(i+1).value-list.get(i+1).value*levelKeep;
//DOWN_levelPrice=UP_levelPrice;
realBreakFlag=true;
}
else if(list.get(i+1).value<=LevelPrice)
{
list.get(i+1).deleteFlag=false;
list.get(i+1).value=list.get(i).value;
if(i<direction.length-1)
{
if(direction[i+1]=="up" && flagX[i+1]==true)
flagX[i+1]=false;
else if(direction[i+1]=="down" && flagX[i+1]==false)
flagX[i+1]=true;
}
}
}
else if(direction[i]=="down") //down
{
if(realBreakFlag==true && list.get(i+1).value<LevelPrice )
{
list.get(i+1).deleteFlag=true;
LevelPrice=list.get(i+1).value+list.get(i+1).value*levelKeep;
//UP_levelPrice=DOWN_levelPrice;
realBreakFlag=true;
}
else if(list.get(i+1).value>=LevelPrice)
{
list.get(i+1).deleteFlag=false;
list.get(i+1).value=list.get(i).value;
if(i<direction.length-1)
{
if(direction[i+1]=="down" && flagX[i+1]==true)
flagX[i+1]=false;
else if(direction[i+1]=="up" && flagX[i+1]==false)
flagX[i+1]=true;
}
}
}
}
else
{
list.get(i+1).deleteFlag=false;
list.get(i+1).value=list.get(i).value;
flagX[i+1]=true;
}
}
}
ArrayList<PriceNow> list_temp=new ArrayList<PriceNow>();
for(int i=0;i<list.size();i++)
{
if(list.get(i).deleteFlag==true)
{
list_temp.add(list.get(i));
}
out.add(list.get(i));
}
//huifu
list_temp.add(new PriceNow(Array_list.get(Array_list.size()-1).value,true));
out.add(new PriceNow(Array_list.get(Array_list.size()-1).value,true));
list=list_temp;
for(int i=0;i<list.size();i++)
{
System.out.print(list.get(i).value+" ");
}
System.out.println();
System.out.println("buy_time:"+list.size());
System.out.println();
///begin
int sum=0;
ArrayList<Percentage> tempPercentageList=new ArrayList<Percentage>(list.size());
for(int i=0;i<list.size();i++)
{
if(list.get(i).value<lowest)
{
lowest=list.get(i).value;
//highest=highest-(lowest-list.get(i).value);
}
if(list.get(i).value<lowest+(highest-lowest)/2)
{
//highest=list.get(i).value;
//highest=highest+(list.get(i).value-lowest);
//lowest=list.get(i).value;
//highest=highest+(list.get(i).value-(lowest+(highest-lowest)/2;
//lowest=lowest+(highest-lowest)/4;
tempPercentageList.add(new Percentage(highest,lowest,list.get(i).value,ratio));
}
}
ArrayList<MoneyMenagement> tempMoneyMenagementList=new ArrayList<MoneyMenagement>(list.size());
tempMoneyMenagementList.add(new MoneyMenagement(totelmoney));
tempMoneyMenagementList.get(0).moneyMenagementInit(tempPercentageList.get(0));
tempMoneyMenagementList.get(0).showMoneyMenagement();
for(int i=0;i<tempPercentageList.size()-1;i++)
{
System.out.println("price:"+tempPercentageList.get(i).getNowPrice());
tempMoneyMenagementList.add(MoneyMenagement.moneyMenagementRecount(tempMoneyMenagementList.get(i), tempPercentageList.get(i+1)));
tempMoneyMenagementList.get(i+1).moneyMenagementInit(tempPercentageList.get(i+1));
sum+=Math.abs(tempMoneyMenagementList.get(i).realityStocks-tempMoneyMenagementList.get(i+1).realityStocks);
System.out.println("buy:"+Math.abs(tempMoneyMenagementList.get(i).realityStocks-tempMoneyMenagementList.get(i+1).realityStocks));
System.out.println("\n");
tempMoneyMenagementList.get(i+1).showMoneyMenagement();
System.out.println();
if(i==tempPercentageList.size()-2)
{
if(Array_list.get(Array_list.size()-1).value-Array_list.get(0).value>=0)
System.out.println("原利润:+"+(Array_list.get(Array_list.size()-1).value-Array_list.get(0).value)/Array_list.get(0).value*100+"%");
else
System.out.println("原利润:-"+(Array_list.get(0).value-Array_list.get(Array_list.size()-1).value)/Array_list.get(0).value*100+"%");
if(tempMoneyMenagementList.get(i+1).getTotleMoney()>=beginTotelMoney)
System.out.println("实际利润:+"+(tempMoneyMenagementList.get(i+1).getTotleMoney()-beginTotelMoney)/beginTotelMoney*100+"%");
else
System.out.println("实际利润:-"+(beginTotelMoney-tempMoneyMenagementList.get(i+1).getTotleMoney())/beginTotelMoney*100+"%");
}
}
System.out.println("开始价格(price):"+Array_list.get(0).value);
System.out.println("现价(price):"+tempPercentageList.get(tempPercentageList.size()-1).getNowPrice());
MoneyMenagement b=new MoneyMenagement();
System.out.println("交易总额(sum):"+sum);
System.out.println("交易次数:"+tempPercentageList.size());
//b.setTotleMoney(a.getRealityStocks()*percentage.getNowPrice()+a.getRemainMoney());
return b;
}
public double realityStocksMoneyCount(Percentage percentage)
{
this.realityStocksMoney=this.realityStocks*percentage.getNowPrice();
return this.realityStocksMoney;
}
public double remainMoneyCount(Percentage percentage)
{
this.remainMoney=this.totleMoney-this.realityStocksCount(percentage)*percentage.getNowPrice();
return this.remainMoney;
}
public int imagineStocksCount(Percentage percentage)
{
this.imagineStocks=(int)(imagineStocksMoneyCount(percentage)/percentage.getNowPrice());
return this.imagineStocks;
}
public int realityStocksCount(Percentage percentage)
{
this.realityStocks=(int)(imagineStocksMoneyCount(percentage)/percentage.getNowPrice())/100*100;
return this.realityStocks;
}
public double imagineStocksMoneyCount(Percentage percentage)
{
this.imagineStocksMoney=percentage.countPercentage()*this.totleMoney;
return this.imagineStocksMoney;
}
public void showMoneyMenagement()
{
System.out.println("totleMoney:"+this.totleMoney);
System.out.println("realityStocks:"+this.realityStocks);
System.out.println("realityStocksMoney:"+this.realityStocksMoney);
System.out.println("remainMoney:"+this.remainMoney);
// System.out.println("imagineStocks:"+this.imagineStocks);
// System.out.println("imagineStocksMoney:"+this.imagineStocksMoney);
}
}