moneyMenagementRecount_forFrame

 static public MoneyMenagement moneyMenagementRecount_forFrame(int fantancha ,ArrayList<PriceNow> Array_list,double highest,double lowest ,double ratio,double totelmoney,double difference,ArrayList<PriceNow> out,StringObj doc_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+"%");
     doc_out.doc_out+="原利润:+"+(Array_list.get(Array_list.size()-1).value-Array_list.get(0).value)/Array_list.get(0).value*100+"%"+ "\n";
    }
    else
    {
     System.out.println("原利润:-"+(Array_list.get(0).value-Array_list.get(Array_list.size()-1).value)/Array_list.get(0).value*100+"%");
     doc_out.doc_out+="原利润:-"+(Array_list.get(0).value-Array_list.get(Array_list.size()-1).value)/Array_list.get(0).value*100+"%"+ "\n";
    }
    
    if(tempMoneyMenagementList.get(i+1).getTotleMoney()>=beginTotelMoney)
    {
     System.out.println("实际利润:+"+(tempMoneyMenagementList.get(i+1).getTotleMoney()-beginTotelMoney)/beginTotelMoney*100+"%");
     doc_out.doc_out+="实际利润:+"+(tempMoneyMenagementList.get(i+1).getTotleMoney()-beginTotelMoney)/beginTotelMoney*100+"%"+ "\n";
    }
    else
    {
     System.out.println("实际利润:-"+(beginTotelMoney-tempMoneyMenagementList.get(i+1).getTotleMoney())/beginTotelMoney*100+"%");
     doc_out.doc_out+="实际利润:-"+(beginTotelMoney-tempMoneyMenagementList.get(i+1).getTotleMoney())/beginTotelMoney*100+"%"+ "\n";
    }
   }
   
  
  }
  System.out.println("开始价格(price):"+Array_list.get(0).value);
  doc_out.doc_out+="开始价格(price):"+Array_list.get(0).value+ "\n";
  System.out.println("现价(price):"+tempPercentageList.get(list.size()-1).getNowPrice());
  doc_out.doc_out+="现价(price):"+tempPercentageList.get(list.size()-1).getNowPrice()+ "\n";
  MoneyMenagement b=new MoneyMenagement();
  System.out.println("交易总额(sum):"+sum);
  doc_out.doc_out+="交易总额(sum):"+sum+ "\n";
  System.out.println("交易次数:"+list.size());
  doc_out.doc_out+="交易次数:"+list.size()+ "\n";
  //b.setTotleMoney(a.getRealityStocks()*percentage.getNowPrice()+a.getRemainMoney());
  return b;
 }
 
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值