/** * Use this method to update our master list of stocks. The file supplied should * have one stock name per separator. * @param String $filename The filename including location * @param String $separator The separator used between each stock. * @return void Return nothing. **/ function update_stocks($filename, $separator) { $file = file_get_contents($filename); $sArray = explode($separator, $file); //Lets first populate an array with all stocks from DB so we don't //have to make a DB call for each stock in file. $query = mysql_query("SELECT * FROM stocks"); $current_stocks = array(); while ($array = mysql_fetch_array($query)) { $current_stocks[$array['name']] = true; } //Now lets cycle through ones to add foreach ($sArray as $i => $value) { if (array_key_exists($value, $current_stocks) == false && $value != "") { echo "Adding " . $value . " <br />"; $stock = new Stock(null); $stock->setName($value); $stock->persist(); } else { echo "Skipped " . $value . "<br />"; } } }
/** * Will only deactivate if latest trade was 0 and last 5 days was also 0. */ function deactivateStock($stock_id) { $stock = new Stock($stock_id, false); //Make sure stock exists. if ($stock->getId() < 0) { return ""; } //Don't do anything if already inactive if ($stock->getStatus() == STATUS_INACTIVE) { return $stock->getTicker() . "(" . $stock->getId() . ") was already inactive."; } if (update_stock_info($stock->getTicker())) { //Only need to get new data if was updated. $stock = new Stock($stock_id, false); } if ($stock->getLastTrade() > 0.05) { return ""; } update_stock_daily($stock->getTicker()); $stock = new Stock($stock_id, true); $arr = $stock->getDailyData(); if (sizeof($arr) < 5) { //If in here, we don't have enough data which means stock is probably a weird derivative. $stock->setStatus(STATUS_INACTIVE); $stock->persist(); return "Removed Stock " . $stock->getTicker() . " (" . $stock->getId() . ") due to not enough daily data."; } //Make sure has been less than 0.05 for quite some time. if ($arr[0]->getClose() < 0.05 && $arr[1]->getClose() < 0.05 && $arr[2]->getClose() < 0.05 && $arr[3]->getClose() < 0.05) { $stock->setStatus(STATUS_INACTIVE); $stock->persist(); return "Removed Stock " . $stock->getTicker() . " (" . $stock->getId() . ") due to a last closing price of \$" . $stock->getLastTrade(); } return ""; }