小程序.MoneyMenagement

 

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);
  
  
 }
 
 

}

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值