/**
 * 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 />";
        }
    }
}
Exemple #2
0
/**
 * 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 "";
}