Example #1
0
function getSMA_sub_real($company, $from = "1900-01-01 00:00:00", $to = null, $dataorg = "json", $samplePeriod = 15, $enSignals = false, $host, $db, $user, $pass)
{
    $intervalPeriod = $samplePeriod * 1.5;
    //from date has to be adjusted for the bollinger bands
    $date = date_create($from);
    date_add($date, date_interval_create_from_date_string("-{$intervalPeriod} days"));
    $fromAdjusted = date_format($date, "Y-m-d");
    $dataOhlc = [];
    //OHLC data format [timestamp,open,high,low,close,volume]
    if ($dataorg == "highchart") {
        $dataOhlc = getOHLC($company, $fromAdjusted, $to, "array2", $host, $db, $user, $pass);
    } else {
        $dataOhlc = getOHLC($company, $fromAdjusted, $to, "array", $host, $db, $user, $pass);
    }
    //Return if $dataOhlc is null
    if ($dataOhlc == [] || $dataOhlc == 0) {
        return 0;
    }
    //Input for SMA functions should be [timestamp,close]
    $ctr = 0;
    foreach ((array) $dataOhlc as $ohlc) {
        $dbreturn[$ctr][0] = $ohlc[0];
        //timestamp
        $dbreturn[$ctr++][1] = $ohlc[4];
        //close
    }
    return $dbreturn;
}
Example #2
0
function getMACD($company, $from = "1900-01-01 00:00:00", $to = null, $dataorg = "json", $host, $db, $user, $pass)
{
    $macd = [];
    $intervalPeriod = 55;
    //from date has to be adjusted for the bollinger bands
    $date = date_create($from);
    date_add($date, date_interval_create_from_date_string("-{$intervalPeriod} days"));
    $fromAdjusted = date_format($date, "Y-m-d");
    $dataOhlc = [];
    //OHLC data format [timestamp,open,high,low,close,volume]
    if ($dataorg == "highchart") {
        $dataOhlc = getOHLC($company, $fromAdjusted, $to, "array2", $host, $db, $user, $pass);
    } else {
        $dataOhlc = getOHLC($company, $fromAdjusted, $to, "array", $host, $db, $user, $pass);
    }
    //Return if $dataOhlc is null
    if ($dataOhlc == [] || $dataOhlc == 0) {
        return 0;
    }
    //Input for SMA functions should be [timestamp,close]
    $ctr = 0;
    foreach ($dataOhlc as $ohlc) {
        if ($dataorg == "json") {
            $dbreturn[$ctr][0] = $ohlc[0];
            //timestamp
            $dbreturn[$ctr][1] = $ohlc[4];
            //close
        } elseif ($dataorg == "highchart") {
            $dbreturn[$ctr][0] = $ohlc[0];
            //timestamp
            $dbreturn[$ctr][1] = $ohlc[4];
            //close
        } elseif ($dataorg == "array") {
            //TODO: create code for organizing an array data output
        } else {
            $dbreturn[$ctr][0] = $ohlc[0];
            //timestamp
            $dbreturn[$ctr][1] = $ohlc[4];
            //close
        }
        $ctr++;
    }
    if ($dataorg == "json") {
        //echo json_encode($dbreturn);
        $macd = codesword_macd($dbreturn);
        //echo json_encode($ema);
    } elseif ($dataorg == "highchart") {
        $macd = codesword_macd($dbreturn);
    } elseif ($dataorg == "array") {
        //TODO: create code for organizing an array data output
    } else {
        //json
        $macd = codesword_macd($dbreturn);
    }
    echo json_encode($macd);
}
Example #3
0
 debug_print("Date range: from {$fromDate} to {$toDate}<Br>");
 switch ($chartDataType) {
     case 'close':
         getClose($company, $fromDate, $toDate, $dataorg, $mysql_host, $mysql_database, $mysql_user, $mysql_password);
         break;
     case 'current':
         getCurrentDayPrices($company, $dataorg, $mysql_host, $mysql_database, $mysql_user, $mysql_password);
         break;
     case 'volume':
         getVolume($company, $fromDate, $toDate, $dataorg, $mysql_host, $mysql_database, $mysql_user, $mysql_password);
         break;
     case 'ohlcur':
         getOHLCurrent($company, $dataorg, $mysql_host, $mysql_database, $mysql_user, $mysql_password);
         break;
     case 'ohlc':
         getOHLC($company, $fromDate, $toDate, $dataorg, $mysql_host, $mysql_database, $mysql_user, $mysql_password);
         break;
     case 'ohlcha':
         getOHLCHA($company, $fromDate, $toDate, $dataorg, $mysql_host, $mysql_database, $mysql_user, $mysql_password);
         break;
     case 'sohlcavv':
         $targetDate = null;
         if (isset($_GET['targetdate'])) {
             $targetDate = isset($_GET['targetdate']) ? $_GET['targetdate'] : null;
         }
         getSingleOHLCAVV($company, $targetDate, $dataorg, $mysql_host, $mysql_database, $mysql_user, $mysql_password);
         break;
     case 'macd':
         getMACD($company, $fromDate, $toDate, $dataorg, $mysql_host, $mysql_database, $mysql_user, $mysql_password);
         break;
     case 'rsi':
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);
    }
}
Example #5
0
function getBollingerBands3($company, $from = "1900-01-01 00:00:00", $to = null, $dataorg = "json", $enSignals = false, $host, $db, $user, $pass)
{
    $studyPeriod = 20;
    $offsetPeriod = $studyPeriod * 1;
    //from date has to be adjusted for the bollinger bands
    $date = date_create($from);
    date_add($date, date_interval_create_from_date_string("-{$offsetPeriod} days"));
    $fromAdjusted = date_format($date, "Y-m-d");
    //echo "fromAdjusted: $fromAdjusted<Br>";
    $dataOhlc = [];
    //OHLC data format [timestamp,open,high,low,close,volume]
    if ($dataorg == "highchart") {
        $dataOhlc = getOHLC($company, $fromAdjusted, $to, "array2", $host, $db, $user, $pass);
    } else {
        $dataOhlc = getOHLC($company, $fromAdjusted, $to, "array", $host, $db, $user, $pass);
    }
    //Return if $dataOhlc is null
    if ($dataOhlc == [] || $dataOhlc == 0) {
        return 0;
    }
    //Input for bollinger bands should be [timestamp,open,high,low,close]
    $ctr = 0;
    foreach ((array) $dataOhlc as $ohlc) {
        $dbreturn[$ctr][0] = $ohlc[0];
        //timestamp
        $dbreturn[$ctr][1] = $ohlc[1];
        //high
        $dbreturn[$ctr][2] = $ohlc[2];
        //low
        $dbreturn[$ctr][3] = $ohlc[3];
        //low
        $dbreturn[$ctr++][4] = $ohlc[4];
        //close
    }
    if ($dataorg == "json") {
        $bbohlc = codesword_bollinger_bands3($dbreturn, $studyPeriod);
        if (count($bbohlc) <= 1) {
            //No Data
            return 0;
        }
        $returnBB = $bbohlc;
    } elseif ($dataorg == "highchart") {
        $returnBB = codesword_bollinger_bands3($dbreturn, $studyPeriod);
        if ($returnBB == 0) {
            //No Data
            return 0;
        }
    } elseif ($dataorg == "array") {
        //TODO: create code for organizing an array data output
    } else {
        //json
        $returnBB = codesword_bollinger_bands3($dbreturn, $studyPeriod);
        if ($returnBB == 0) {
            //No Data
            return 0;
        }
    }
    $allData = [];
    if (strcasecmp($enSignals, "latest") == 0) {
        //return only the latest signal
        // [timestamp,trade signal,... other info...]
        $lastSignal = codesword_bbTrendDetectorLatests($returnBB);
        return $lastSignal;
    } elseif ($enSignals) {
        $allData[0] = $returnBB;
        $allData[1] = codesword_bbTrendDetector($returnBB);
        echo json_encode($allData);
    } else {
        $allData = $returnBB;
        echo json_encode($allData);
    }
}
Example #6
0
function getSMAentryATRstop($company, $from = "1900-01-01 00:00:00", $to = null, $dataorg = "json", $samplePeriod = 15, $enSignals = false, $enJsonEncode = "false", $enProfitComputation = true, $host, $db, $user, $pass)
{
    // TODO: Get OHLC data
    $intervalPeriod = $samplePeriod * 1.5;
    //from date has to be adjusted for the bollinger bands
    $date = date_create($from);
    date_add($date, date_interval_create_from_date_string("-{$intervalPeriod} days"));
    $fromAdjusted = date_format($date, "Y-m-d");
    $dataOhlc = [];
    //OHLC data format [timestamp,open,high,low,close,volume]
    if ($dataorg == "highchart") {
        $dataOhlc = getOHLC($company, $fromAdjusted, $to, "array2", $host, $db, $user, $pass);
    } else {
        $dataOhlc = getOHLC($company, $fromAdjusted, $to, "array", $host, $db, $user, $pass);
    }
    //Return if $dataOhlc is null
    if ($dataOhlc == [] || $dataOhlc == 0) {
        return 0;
    }
    //Tailor data for the SMA input
    //Input for SMA functions should be [timestamp,close]
    $ctr = 0;
    $dataOhlcForSMA = [];
    foreach ((array) $dataOhlc as $ohlc) {
        $dataOhlcForSMA[$ctr][0] = $ohlc[0];
        //timestamp
        $dataOhlcForSMA[$ctr++][1] = $ohlc[4];
        //close
    }
    //Get SMA Signal
    $sma = codesword_sma($dataOhlcForSMA, $samplePeriod);
    //Get SMA Buy Signals
    $smaBuy = [];
    $ctrBuy = 0;
    $buysellSignals = codesword_smaBuySellSignal($dataOhlcForSMA, $sma);
    foreach ($buysellSignals as $signal) {
        if ($signal[1] == "buy") {
            $smaBuy[$ctrBuy++] = $signal;
        }
    }
    // echo json_encode($smaBuy);
    //Tailor data for the ATR input
    $ctr = 0;
    $dataOhlcForATR = [];
    foreach ((array) $dataOhlc as $ohlc) {
        $dataOhlcForATR[$ctr][0] = $ohlc[0];
        //timestamp
        $dataOhlcForATR[$ctr][1] = $ohlc[2];
        //high
        $dataOhlcForATR[$ctr][2] = $ohlc[3];
        //low
        $dataOhlcForATR[$ctr][3] = $ohlc[4];
        //close
        $ctr = $ctr + 1;
    }
    // echo json_encode($dataOhlcForATR);
    // Compute the ATR
    $atr = codesword_atr($dataOhlcForATR);
    // echo json_encode($atr);
    // TODO: Get ATR Stop/Sell Signals
    //		the stop signal is based on the entry price that we'll get from
    //		the SMA Buy Signal
    // Inputs:
    //		1. Data OHLC for ATR 	(ts,open,high,low,close)
    //		2. SMA Buy Signals 		(ts, buy)
    //		3. ATR Values 			(ts, atr)
    $smaEntryAtrStopSignals = codesword_smaEntryATRstopTradeDetector($company, $dataOhlc, $smaBuy, $atr, 2, 4, $enProfitComputation);
}