Example #1
0
function turtle_portfolio_buy($date, $breakOutSignal, $ADX_filter, $breakOutOrderBy)
{
    global $max_num_holdings;
    global $max_risk;
    global $risk_factor;
    //$breakOutSignal = "55_DAY_HIGH";
    ### get list of breakout stocks
    //$breakOutStockArray = array();
    $breakOutStockArray = getBreakoutStock5($date, $breakOutSignal, $breakOutOrderBy);
    //		echo json_decode($breakOutStockArray);
    // set how many breakout stocks to buy
    //$len_array = count($breakOutStockArray);
    $len_array = count($breakOutStockArray);
    $risk_factor = 1 / $max_num_holdings;
    $portfolio_value = 0;
    $current_pos = 0;
    $next_buy_point = 100000;
    $stop_loss = 0;
    $num_shares = 0;
    $current_N = 0;
    $risk_value = 0;
    $purchase_value = 0;
    $sim_start_day = 55;
    $pyramid_mode = 0;
    $stop_loss = 0;
    //		$ADX_filter = "Off";
    $current_trade_date_id = 0;
    $workingArray = $breakOutStockArray;
    $adxArray = "";
    $adxCount = 1;
    // check if ADX check if turned on
    if ($ADX_filter == "On") {
        for ($x = 1; $x < $len_array; $x++) {
            $current_trade_date_id = getTradeDateID($workingArray[$x]['symbol'], $date);
            $returnADX = calculate_ADX($workingArray[$x]['symbol'], $current_trade_date_id, 14);
            if ($returnADX["plusDI14"] > $returnADX["negDI14"] && $returnADX["ADX"] < 30) {
                //if ($returnADX["plusDI14"] < $returnADX["negDI14"])  {
                //array_delete ($breakOutStockArray[$x]);
                //unset ($breakOutStockArray[$x]);
                if ($returnADX["changeADX"] > 5) {
                    $adxArray[$adxCount] = $workingArray[$x];
                    $adxCount++;
                }
            }
        }
        $breakOutStockArray = $adxArray;
    }
    $len_array = count($breakOutStockArray);
    for ($x = 1; $x < $len_array; $x++) {
        ### get portfolio value
        $portfolio_value = get_historical_turtle_portfolio_value($date);
        ### get current available cash
        $query = "select shares from turtle_portfolio where portfolio_id = 1 and symbol = 'CASH'";
        $result = queryMysql($query);
        while ($data = mysql_fetch_row($result)) {
            $cash = $data[0];
        }
        $risk_value = $portfolio_value * $risk_factor / 100;
        $current_N = $breakOutStockArray[$x]['ATR'];
        if ($current_N > 0) {
            $num_shares = floor($risk_value / (2 * $current_N));
        }
        /*				$purchase_value = $num_shares * $breakOutStockArray[$x][$breakOutSignal];
        				$stop_loss = $breakOutStockArray[$x][$breakOutSignal] - (2*$current_N);
        				$stop_buy = $breakOutStockArray[$x][$breakOutSignal] + $current_N;
        */
        $purchase_value = $num_shares * $breakOutStockArray[$x]['purchase_price'];
        $stop_loss = $breakOutStockArray[$x]['purchase_price'] - 2 * $current_N;
        $stop_buy = $breakOutStockArray[$x]['purchase_price'] + $current_N;
        $current_risk = get_current_risk();
        if ($cash > $purchase_value && $current_risk < $max_risk) {
            $cash = $cash - $purchase_value;
            $risk_dollar = $num_shares * (2 * $current_N);
            $risk_pct = $risk_dollar / $portfolio_value * 100;
            // insert into turtle_portfolio
            $my_sql = "insert into turtle_portfolio (portfolio_id, symbol, last_price, shares, cost_basis, stop_loss, stop_buy, risk, risk_pct) ";
            $my_sql .= "values (1, '" . $breakOutStockArray[$x]['symbol'] . "', ";
            $my_sql .= $breakOutStockArray[$x]['close'] . ", ";
            $my_sql .= $num_shares . ", ";
            //					$my_sql .= $breakOutStockArray[$x][$breakOutSignal].", ";
            $my_sql .= $breakOutStockArray[$x]['purchase_price'] . ", ";
            $my_sql .= $stop_loss . ", ";
            $my_sql .= $stop_buy . ", ";
            $my_sql .= $risk_dollar . ", ";
            $my_sql .= $risk_pct . " )";
            //print $my_sql;
            //print "\n";
            $result = queryMysql($my_sql);
            // insert into transaction history table
            $my_sql = "insert into turtle_portfolio_transaction (portfolio_id, symbol, trade_type, trade_date, shares, price, risk, risk_pct) ";
            $my_sql .= "values (1, '" . $breakOutStockArray[$x]['symbol'] . "', ";
            $my_sql .= "'BUY', ";
            $my_sql .= "'" . $date . "', ";
            $my_sql .= $num_shares . ", ";
            //					$my_sql .= $breakOutStockArray[$x][$breakOutSignal].", ";
            $my_sql .= $breakOutStockArray[$x]['purchase_price'] . ", ";
            $my_sql .= $risk_dollar . ", ";
            $my_sql .= $risk_pct . " )";
            //print "tranx: $my_sql";
            $result = queryMysql($my_sql);
            // update cash position
            $my_sql = "update turtle_portfolio set shares = " . $cash . " where symbol = 'CASH'";
            $result = queryMysql($my_sql);
            //print "update: $my_sql";
        }
        $pyramid_mode++;
    }
    populateDailyBuyList($date, $breakOutSignal, $rankAndWeightArray);
}
Example #2
0
 $ADX_filter = "On";
 $current_trade_date_id = 0;
 $workingArray = $breakOutStockArray;
 $tmpArray = "";
 $breakOutCount = 1;
 print "original leng: ";
 print $len_array;
 // check if ADX check if turned on
 if ($ADX_filter == "On") {
     for ($x = 1; $x < $len_array; $x++) {
         $symbol = $workingArray[$x]['symbol'];
         $current_trade_date_id = getTradeDateID($workingArray[$x]['symbol'], $date);
         print "symbol: ";
         print $workingArray[$x]['symbol'];
         print " ";
         $returnADX = calculate_ADX($workingArray[$x]['symbol'], $current_trade_date_id, 14);
         print " plus DI 14: ";
         print $returnADX["plusDI14"];
         print " neg DI 14: ";
         print $returnADX["negDI14"];
         print " ADX: ";
         print $returnADX["ADX"];
         if ($returnADX["plusDI14"] > $returnADX["negDI14"] && $returnADX["ADX"] > 25) {
             //					array_delete ($breakOutStockArray[$x]);
             print "Meet Requirement :";
             print $x;
             print " ";
             //array_diff($breakOutStockArray, $breakOutStockArray[$x]['symol']);
             //unset ($breakOutStockArray[$x]);
             $tmpArray[$breakOutCount] = $symbol;
             $breakOutCount++;
Example #3
0
function live_turtle_portfolio_buy($date, $breakOutSignal, $ADX_filter, $breakOutOrderBy, $portfolioID, $dailyBuyList)
{
    global $max_num_holdings;
    global $max_risk;
    global $risk_factor;
    if (!$portfolioID) {
        $portfolioID = 2;
    }
    if (!$dailyBuyList) {
        $dailyBuyList = "turtle_daily_buy_list_live";
    }
    //$breakOutSignal = "55_DAY_HIGH";
    ### get list of breakout stocks
    //$breakOutStockArray = array();
    $breakOutStockArray = live_get_breakout_stock($breakOutSignal, $breakOutOrderBy, $portfolioID, $dailyBuyList);
    // set how many breakout stocks to buy
    //$len_array = count($breakOutStockArray);
    $len_array = count($breakOutStockArray);
    $risk_factor = 1 / $max_num_holdings;
    $portfolio_value = 0;
    $current_pos = 0;
    $next_buy_point = 100000;
    $stop_loss = 0;
    $num_shares = 0;
    $current_N = 0;
    $risk_value = 0;
    $purchase_value = 0;
    $sim_start_day = 55;
    $pyramid_mode = 0;
    $stop_loss = 0;
    //		$ADX_filter = "Off";
    $current_trade_date_id = 0;
    $workingArray = $breakOutStockArray;
    $adxArray = "";
    $adxCount = 1;
    // check if ADX check if turned on
    if ($ADX_filter == "On") {
        for ($x = 1; $x < $len_array; $x++) {
            $current_trade_date_id = getTradeDateID($workingArray[$x]['symbol'], $date);
            $returnADX = calculate_ADX($workingArray[$x]['symbol'], $current_trade_date_id, 14);
            if ($returnADX["plusDI14"] > $returnADX["negDI14"] && $returnADX["ADX"] < 30) {
                //if ($returnADX["plusDI14"] < $returnADX["negDI14"])  {
                //array_delete ($breakOutStockArray[$x]);
                //unset ($breakOutStockArray[$x]);
                if ($returnADX["changeADX"] > 5) {
                    $adxArray[$adxCount] = $workingArray[$x];
                    $adxCount++;
                }
            }
        }
        $breakOutStockArray = $adxArray;
    }
    $len_array = count($breakOutStockArray);
    for ($x = 1; $x < $len_array; $x++) {
        ### get portfolio value
        $portfolio_value = get_realtime_turtle_portfolio_value($portfolioID);
        ### get current available cash
        $query = "select shares from turtle_portfolio where symbol = 'CASH' and portfolio_id = " . $portfolioID;
        $result = queryMysql($query);
        while ($data = mysql_fetch_row($result)) {
            $cash = $data[0];
        }
        $risk_value = $portfolio_value * $risk_factor / 100;
        ### get yesterday's ATR
        $query = "select ATR from price_history where symbol = '" . $breakOutStockArray[$x]['symbol'] . "' and trade_date_id = (select max(trade_date_id) from price_history where symbol = '" . $breakOutStockArray[$x]['symbol'] . "')";
        $result3 = queryMysql($query);
        while ($data3 = mysql_fetch_row($result3)) {
            $this_ATR = $data3[0];
        }
        $current_N = $this_ATR;
        if ($current_N > 0) {
            $num_shares = floor($risk_value / (2 * $current_N));
        }
        /*				$purchase_value = $num_shares * $breakOutStockArray[$x][$breakOutSignal];
        				$stop_loss = $breakOutStockArray[$x][$breakOutSignal] - (2*$current_N);
        				$stop_buy = $breakOutStockArray[$x][$breakOutSignal] + $current_N;
        */
        $purchase_value = $num_shares * $breakOutStockArray[$x]['purchase_price'];
        $stop_loss = $breakOutStockArray[$x]['purchase_price'] - 2 * $current_N;
        $stop_buy = $breakOutStockArray[$x]['purchase_price'] + $current_N;
        $current_risk = get_current_risk($portfolioID);
        if ($cash > $purchase_value && $current_risk < $max_risk) {
            $cash = $cash - $purchase_value;
            $risk_dollar = $num_shares * (2 * $current_N);
            $risk_pct = $risk_dollar / $portfolio_value * 100;
            // insert into turtle_portfolio
            $my_sql = "insert into turtle_portfolio (portfolio_id, symbol, last_price, shares, cost_basis, stop_loss, stop_buy, risk, risk_pct) ";
            $my_sql .= "values (" . $portfolioID . ", '" . $breakOutStockArray[$x]['symbol'] . "', ";
            $my_sql .= $breakOutStockArray[$x]['last_price'] . ", ";
            $my_sql .= $num_shares . ", ";
            $my_sql .= $breakOutStockArray[$x]['purchase_price'] . ", ";
            $my_sql .= $stop_loss . ", ";
            $my_sql .= $stop_buy . ", ";
            $my_sql .= $risk_dollar . ", ";
            $my_sql .= $risk_pct . " )";
            $result = queryMysql($my_sql);
            // insert into transaction history table
            $my_sql = "insert into turtle_portfolio_transaction (portfolio_id, symbol, trade_type, trade_date, shares, price, risk, risk_pct) ";
            $my_sql .= "values (" . $portfolioID . ", '" . $breakOutStockArray[$x]['symbol'] . "', ";
            $my_sql .= "'BUY', ";
            $my_sql .= "'" . $date . "', ";
            $my_sql .= $num_shares . ", ";
            $my_sql .= $breakOutStockArray[$x]['purchase_price'] . ", ";
            $my_sql .= $risk_dollar . ", ";
            $my_sql .= $risk_pct . " )";
            $result = queryMysql($my_sql);
            // update cash position
            $my_sql = "update turtle_portfolio set shares = " . $cash . " where symbol = 'CASH' and portfolio_id = " . $portfolioID;
            $result = queryMysql($my_sql);
            $email_subject = $breakOutStockArray[$x]['last_trade_date'] . " " . $breakOutStockArray[$x]['last_trade_price'] . " Buy " . $breakOutStockArray[$x]['symbol'] . " " . $num_shares . " shares at \$" . $breakOutStockArray[$x]['purchase_price'];
            $email_body = "";
            sendemail($email_subject, $email_body);
        }
        $pyramid_mode++;
    }
    //populateDailyBuyList ($date, $breakOutSignal, $rankAndWeightArray, $portfolioID, $dailyBuyList);
}