Exemplo n.º 1
0
function getStochasticOscillator($company, $from = "1900-01-01 00:00:00", $to = null, $dataorg = "json", $host, $db, $user, $pass)
{
    // Create connection
    $con = mysqli_connect($host, $user, $pass, $db);
    // Check connection
    if (mysqli_connect_errno()) {
        echo "Failed to connect to MySQL: " . mysqli_connect_error();
        return;
    }
    $studyPeriod = 14;
    $smoothingPeriod = 3;
    $offsetPeriod = $studyPeriod + $smoothingPeriod;
    if ($dataorg == "highchart") {
        //Added 8 hours to timestamp because of the Philippine Timezone WRT GMT (+8:00)
        $sql = "SELECT (UNIX_TIMESTAMP(DATE_ADD(timestamp, INTERVAL 8 HOUR)) * 1000) as timestamp, \n\t\t\t\t\thigh, low, close\n\t\t\t\t\tFROM {$company} \n\t\t\t\t\tWHERE timestamp >= DATE_ADD('" . $from . "', INTERVAL -{$offsetPeriod} DAY) \n\t\t\t\t\tAND timestamp <= '" . $to . "' ORDER BY timestamp ASC";
    } else {
        $sql = "SELECT DATE_FORMAT(timestamp, '%Y-%m-%d') as timestamp, high, low, close \n\t\t\t\t\tFROM {$company} \n\t\t\t\t\tWHERE timestamp >= DATE_ADD('" . $from . "', INTERVAL -{$offsetPeriod} DAY) \n\t\t\t\t\tAND timestamp <= '" . $to . "' ORDER BY timestamp ASC";
    }
    $result = mysqli_query($con, $sql);
    $dbreturn = "";
    $ctr = 0;
    $temp;
    $returnStochastic;
    while ($row = mysqli_fetch_array($result)) {
        if ($dataorg == "json") {
            $dbreturn[$ctr][0] = $row['timestamp'];
            $dbreturn[$ctr][1] = floatval($row['high']);
            $dbreturn[$ctr][2] = floatval($row['low']);
            $dbreturn[$ctr][3] = floatval($row['close']);
        } elseif ($dataorg == "highchart") {
            $dbreturn[$ctr][0] = doubleval($row['timestamp']);
            $dbreturn[$ctr][1] = floatval($row['high']);
            $dbreturn[$ctr][2] = floatval($row['low']);
            $dbreturn[$ctr][3] = floatval($row['close']);
        } elseif ($dataorg == "array") {
            //TODO: create code for organizing an array data output
        } else {
            $dbreturn[$ctr][0] = $row['timestamp'];
            $dbreturn[$ctr][1] = floatval($row['high']);
            $dbreturn[$ctr][2] = floatval($row['low']);
            $dbreturn[$ctr][3] = floatval($row['close']);
        }
        $ctr = $ctr + 1;
    }
    if ($dataorg == "json") {
        $returnStochastic = codesword_stochastic($dbreturn, $studyPeriod, $smoothingPeriod);
    } elseif ($dataorg == "highchart") {
        $returnStochastic = codesword_stochastic($dbreturn, $studyPeriod, $smoothingPeriod);
    } elseif ($dataorg == "array") {
        //TODO: create code for organizing an array data output
    } else {
        //json
        $returnStochastic = codesword_stochastic($dbreturn, $studyPeriod, $smoothingPeriod);
    }
    echo json_encode($returnStochastic);
    mysqli_close($con);
}
Exemplo n.º 2
0
function getStoMACD($company, $from = "1900-01-01 00:00:00", $to = null, $dataorg = "json", $ensig = false, $host, $db, $user, $pass)
{
    $thlc = [];
    //[timestamp,high,low,close]
    $stoch = [];
    //[timestamp,%K,%D]
    $stochSignals = [];
    //[timestamp,signal,desc]
    $stochSmaSignals = [];
    //[timestamp,signal,desc]
    $isCloseHigherThanSMA = [];
    //[timestamp,boolean]
    $dataOhlc = [];
    //OHLC data format [timestamp,open,high,low,close,volume]
    if ($dataorg == "highchart") {
        $dataOhlc = getOHLC($company, $from, $to, "array2", $host, $db, $user, $pass);
    } else {
        $dataOhlc = getOHLC($company, $from, $to, "array", $host, $db, $user, $pass);
    }
    //echo json_encode($dataOhlc);
    //Return if $dataOhlc is null
    if ($dataOhlc == [] || $dataOhlc == 0) {
        return 0;
    }
    //Input for stochastic convestion should be [timestamp,high,low,close]
    $ctr = 0;
    foreach ((array) $dataOhlc as $ohlc) {
        $thlc[$ctr][0] = $ohlc[0];
        //timestamp
        $thlc[$ctr][1] = $ohlc[2];
        //high
        $thlc[$ctr][2] = $ohlc[3];
        //low
        $thlc[$ctr++][3] = $ohlc[4];
        //close
    }
    //echo json_encode($thlc);
    //generate stochastic values
    $stoch = codesword_stochastic($thlc);
    //echo json_encode($stoch);
    //find out if the close/current price > sma
    $isCloseHigherThanSMA = codesword_isHigherThanSMA($thlc);
    //echo json_encode($isCloseHigherThanSMA);
    //generate trade signals from stochastic values
    $stochSignals = codesword_stochTradeDetector($stoch);
    //do some more filtering
    $stochSmaSignals = codesword_stochSmaTradeDetector($stochSignals, $isCloseHigherThanSMA);
    if (strcasecmp($ensig, "latest") == 0) {
        //return only the latest signal
        // [timestamp,trade signal,... other info...]
        if (count($stochSmaSignals) > 0) {
            $lastSignal = $stochSmaSignals[count($stochSmaSignals) - 1];
            //echo json_encode($lastSignal);
            return $lastSignal;
        } else {
            return 0;
        }
    } elseif ($ensig) {
        //echo json_encode($stochSignals);
        $allData[0] = $stoch;
        $allData[1] = $stochSmaSignals;
        echo json_encode($allData);
    } else {
        echo json_encode($stoch);
    }
}