Example #1
0
function getEMA($company, $from = "1900-01-01 00:00:00", $to = null, $dataorg = "json", $samplePeriod = 15, $enSignals = false, $enJsonEncode = "false", $host, $db, $user, $pass)
{
    $dbreturn = getEMA_sub_real($company, $from, $to, $dataorg, $samplePeriod, $enSignals, $host, $db, $user, $pass);
    if ($dataorg == "json") {
        $ema = codesword_ema($dbreturn, $samplePeriod);
    } elseif ($dataorg == "highchart") {
        $ema = codesword_ema($dbreturn, $samplePeriod);
    } elseif ($dataorg == "array") {
        //TODO: create code for organizing an array data output
    } else {
        //json
        $ema = codesword_ema($dbreturn, $samplePeriod);
    }
    if ($enSignals) {
        $buysellSignals = codesword_emaBuySellSignal($dbreturn, $ema);
    } else {
        $buysellSignals = 0;
    }
    if ($enJsonEncode) {
        $allData = [];
        $allData[0] = $ema;
        $allData[1] = $buysellSignals;
        echo json_encode($allData);
    } else {
        return $ema;
    }
}
Example #2
0
function codesword_rsi($real, $period = 14)
{
    //echo json_encode($real) . "<Br><Br>";
    // Calculate change in closing prices
    $priceChange = [];
    for ($i = 0; $i < count($real) - 1; $i++) {
        // Get timestamp
        $priceChange[$i][0] = $real[$i + 1][0];
        // Get price change
        $priceChange[$i][1] = $real[$i + 1][1] - $real[$i][1];
    }
    // Segregate Gains and Losses
    $listGains = [];
    $listLosses = [];
    $ctrDays = 0;
    foreach ($priceChange as $tradeDay) {
        $listGains[$ctrDays][0] = $tradeDay[0];
        $listLosses[$ctrDays][0] = $tradeDay[0];
        if ($tradeDay[1] > 0) {
            $listGains[$ctrDays][1] = $tradeDay[1];
            $listLosses[$ctrDays][1] = 0;
        } else {
            $listGains[$ctrDays][1] = 0;
            $listLosses[$ctrDays][1] = abs($tradeDay[1]);
        }
        $ctrDays += 1;
    }
    // Calculate Average Gain 14 day default period EMA
    $ema_gains = codesword_ema($listGains, $period);
    // Calculate Average Loss 14 day default period EMA
    $ema_losses = codesword_ema($listLosses, $period);
    $rsi = [];
    for ($i = 0; $i < count($ema_gains); $i++) {
        // Get timestamp
        $rsi[$i][0] = $ema_gains[$i][0];
        // Calculate RS = Ave Gain / Ave Loss
        $rs = $ema_gains[$i][1] / $ema_losses[$i][1];
        // RSI = 100 - (100 / (1 + RS))
        $rsi[$i][1] = 100 - 100 / (1 + $rs);
        // echo "date: ".$rsi[$i][0].", ave gain: ".$ema_gains[$i][1].", ave loss: ".
        // 	$ema_losses[$i][1].", rs: $rs, rsi: ".$rsi[$i][1]."<Br>";
    }
    return $rsi;
}
Example #3
0
function codesword_macd($real, $fastPeriod = 12, $slowPeriod = 26)
{
    $fastEma = codesword_ema($real, $fastPeriod);
    $slowEma = codesword_ema($real, $slowPeriod);
    $ctrFastOffset = 0;
    $macd = [];
    for ($i = 0; $i < count($slowEma); $i++) {
        if ($i == 0) {
            for ($j = 0; $j < $slowPeriod; $j++) {
                if ($fastEma[$j][0] == $slowEma[0][0]) {
                    $ctrFastOffset = $j;
                    debug_print("start of comparison: {$ctrFastOffset} <Br>");
                    break;
                }
            }
        }
        $macd[$i][0] = $slowEma[$i][0];
        $macd[$i][1] = $fastEma[$i + $ctrFastOffset][1] - $slowEma[$i][1];
    }
    // The signal is a 9-day EMA
    $signal = codesword_ema($macd, 9);
    $ctrMacdOffset = 0;
    $histogram = [];
    $macdFull = [];
    for ($i = 0; $i < count($signal); $i++) {
        if ($i == 0) {
            for ($j = 0; $j < $slowPeriod; $j++) {
                if ($macd[$j][0] == $signal[0][0]) {
                    $ctrMacdOffset = $j;
                    debug_print("start of comparison: {$ctrMacdOffset} <Br>");
                    break;
                }
            }
        }
        $histogram[$i][0] = $signal[$i][0];
        $histogram[$i][1] = $macd[$i + $ctrMacdOffset][1] - $signal[$i][1];
        $macdFull[$i][0] = $signal[$i][0];
        $macdFull[$i][1] = $macd[$i + $ctrMacdOffset][1];
        $macdFull[$i][2] = $signal[$i][1];
        $macdFull[$i][3] = $macd[$i + $ctrMacdOffset][1] - $signal[$i][1];
    }
    return $macdFull;
}