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; }
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); }
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); } }
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); } }
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); }