topical media & game development

talk show tell print

lib-unity-future-HouseOfTheFuture-Assets-Scripts-StockImporter.js / js



  /* 
  * This file is part of the "House of the Future" showcase project by M2H (http://www.M2H.nl)
  *  The original author of this code Mike Hergaarden.
  *  Feel free to use this code for your own projects, drop me a line if you made something exciting! 
  */
  //Buy, sell, sell!
  #pragma strict
  
  import System.DateTime;
  import System.IO;
  
  private var monthStrings : String[] = new String[13];
  private var lineRenderer : LineRenderer;
  
  public var graphLB : Transform;
  public var graphTR : Transform;
  public var graphDummy : Transform;
  
  private var realMaxY : float;
  private var realMinY : float;
  private var realMaxX : float;
  private var realMinX : float;
  
  private var stockDataList : ArrayList = new ArrayList();
  private var maxStockY : float = 0;
  private var minStockY : float = 0;
  
  function Awake(){
          lineRenderer = GetComponent(LineRenderer);
          
          monthStrings[1]="Jan";
          monthStrings[3]="Feb";
          monthStrings[4]="Mar";
          monthStrings[4]="Apr";
          monthStrings[5]="May";
          monthStrings[6]="Jun";
          monthStrings[7]="Jul";
          monthStrings[8]="Aug";
          monthStrings[9]="Sep";
          monthStrings[10]="Oct";
          monthStrings[11]="Nov";
          monthStrings[12]="Dec";
          
          realMaxY = graphTR.position.y;
          realMinY = graphLB.position.y;
          realMaxX = graphTR.localPosition.x;
          realMinX = graphLB.localPosition.x;
  
          ReloadStocks();
  }
  
  public var stockName : String = "NASDAQ:GOOG";
  public var daysBack : int = 14;
  public var stockTitle : String = "NASDAQ:GOOG - Last 14 days - Latest: ";
  
  function ReloadStocks () {
          minStockY = maxStockY=0;
  
** DOWNLOAD STOCK DATA *

  //
          var now : System.DateTime = System.DateTime.Now;
          
          var dayStringNow : int  = now.Day; 
          var monthStringNow : int = now.Month; 
          var yearStringNow : int = now.Year; 
          
          var prev : System.DateTime = now.AddDays(-daysBack);
          
          var dayStringPrev : int  = prev.Day; 
          var monthStringPrev : int = prev.Month; 
          var yearStringPrev : int = prev.Year; 
          
          var url : String = "http://www.google.com/finance/historical?q="+stockName+"&startdate="+monthStrings[monthStringPrev]+"+"+dayStringPrev+","+yearStringPrev+"&enddate="+monthStrings[monthStringNow]+"+"+dayStringNow+","+yearStringNow+"&output=csv";
          //Debug.Log(url);
          
          var www : WWW = new WWW (url);
          yield www;
          var stockData : String = www.data;
          
          var i : int =0;
          var splitted : String[] = stockData.Split("\n"[0]);        
          for(var aLine  : String in splitted){
                  if(i==0){
                          i++;
                          continue;
                  }
                  if(i>14){
                          break;
                  }
                  var data : String[] = aLine.Split(","[0]);        
                  data[4] = data[4].Replace(".", ",");
                  var value : float =  parseFloat(data[4]);
                  if(value<minStockY || minStockY==0){
                          minStockY=value;
                  }
                  if(value>maxStockY){
                          maxStockY=value;
                  }                
                  stockDataList.Add(value);
                  i++;
          }
          
                  
          //GOT DATA, CREATE DISPLAY
          i = 0;
          
          for(var j = stockDataList.Count-1;j>=0;j--){
                  var valueX : float = stockDataList[j];
                  graphDummy.position = graphLB.position;                
                  graphDummy.localPosition.x += GetXPosOnChart((i+1), 14);
                  graphDummy.localPosition.y += GetYPosOnChart(valueX);                
                  lineRenderer.SetPosition(i, graphDummy.position);                
                  i++;
          }
          
          var textMesh : TextMesh = GetComponent(TextMesh);
          textMesh.text = stockTitle+""+stockDataList[stockDataList.Count-1]+"\nMin: "+minStockY+" Max: "+maxStockY;
                          
  }
  
  function GetXPosOnChart(item : int, totalitems: int) : float {
          return (((realMaxX-realMinX)/totalitems)*item);
  }
  function GetYPosOnChart(value : float) : float {
          var percent : float = ((value-minStockY)/(maxStockY-minStockY));
          return ((realMaxY-realMinY) * percent);
  }
  


(C) Æliens 04/09/2009

You may not copy or print any of this material without explicit permission of the author or the publisher. In case of other copyright issues, contact the author.