erstkSearchTicker

query($statement);
$erDate=NULL;
if (!$selection) {
echo $statement.”\n”;
trigger_error(‘Wrong SQL: ‘ . $statement . ‘ Error: ‘ . $conn->error, E_USER_ERROR);
}
else
{

if ( $selection->num_rows)
{
$row = $selection->fetch_assoc();
$erDate = $row[‘erdate’];
$selection->free();
}
else
return NULL;
}
return $erDate;
}

function getLatestERChange($conn, $ticker)
{
$statement =”select erChange from erstks where tick=’$ticker’ order by erDate desc limit 1″;
$selection=$conn->query($statement);
$erDate=NULL;
if (!$selection) {
// echo $statement.”\n”;
trigger_error(‘Wrong SQL: ‘ . $statement . ‘ Error: ‘ . $conn->error, E_USER_ERROR);
}
else
{

if ( $selection->num_rows)
{
$row = $selection->fetch_assoc();
$erChange = $row[‘erChange’];
$selection->free();
}
}
return $erChange;
}

function predictER($conn, $ticker,$erDate,$cutoff_date)
{
$today = date(“Y-m-d”);

$weekday = date(‘w’);
if ($erDate== $today.” 06:30:00″)
{
$preERDate = getLastClosedTradingdate($erDate);
$searchDate = date(“Y-m-d”, strtotime($preERDate));

}
else
if (in_array($today, $GLOBALS[‘marketHoliday’]) OR $weekday ==0 OR date(‘w’) ==6 )
{

$searchDate=getLastClosedTradingdate($today);
}
else
$searchDate= $today;

if (0 == getLastQuoteFromDB($conn,$ticker,$prePrice))
{
echo “$ticker, $searchDate, price = $prePrice”;
if (0==getHistPriceFromDB($conn,$ticker, $searchDate, $prePrice) AND 0==getHistPriceFromG($ticker, ‘NYSE’, $searchDate, $prePrice) ) //getHistPriceFromG($ticker, ‘NASDAQ’, $searchDate, $prePrice)
{
echo “Can’t get current price “;
return;
}
}
if ($erDate>= $today.” 06:30:00″)

{

$statement=”update erstks AS t1 set preERrun=(SELECT ($prePrice-t2.close)*100/t2.close FROM tastk AS t2 WHERE ((DATEDIFF(‘$today’, t2.date) = 8 and weekday(‘$today’)>0) OR (DATEDIFF(‘$today’, t2.date) = 10 and weekday(‘$today’)=0)) and t2.tick=t1.tick) where tick=’$ticker’ and erDate >= ‘$today’ “;
// echo $statement;
$ret=$conn->query($statement);
echo ” $conn->affected_rows “;

}
//, s.indexMember,stddev(erChange) as sd
if (NULL == $prePrice )
$statement= “SELECT tick,max(erDate) as erDate,industry, avg(preERrun),avg(postERrun),s.cScore as competitive,s.lscore as value, s.trend as TA, s.FA, s.MFI,s.price as lastPrice,erMove as erRange,round(s.price*(100+avg(erChange)+1.28*stddev(erChange))/100,2) as UpTarget, round(s.price*(100+avg(erChange)-1.28*stddev(erChange))/100,2) as DownTarget,round(s.price*(100+median(erChange))/100,2) as expectERClose,round(s.price*(100+max(HighChg))/100,2) as UpLimit, round(s.price*(100+min(lowChg))/100,2) as DownLimit,
round(s.price*(100+avg(OpenChg))/100,2) as expectEROpen,round(s.price*(100+avg(HighChg))/100,2) as expectERHigh,round(s.price*(100+avg(LowChg))/100,2) as expectERLow, s.indexMember,stddev(erChange) as sd from sstk as s inner join erstks as e using (tick) WHERE FIND_IN_SET(tick,’$ticker’) and erDate>’$cutoff_date’ and erDate<='$erDate' "; else $statement= "SELECT tick,max(erDate) as erDate,industry, avg(preERrun) as avgPreER,avg(postERrun) as avgPostER,s.cScore as competitive,s.lscore as value, s.trend as TA, s.FA,s.MFI,$prePrice as lastPrice,erMove as erRange,round($prePrice*(100+avg(erChange)+1.28*stddev(erChange))/100,2) as UpTarget, round($prePrice*(100+avg(erChange)-1.28*stddev(erChange))/100,2) as DownTarget, round($prePrice*(100+avg(erChange))/100,2) as expectERClose, round($prePrice*(100+max(HighChg))/100,2) as UpLimit, round($prePrice*(100+min(lowChg))/100,2) as DownLimit, round($prePrice*(100+avg(OpenChg))/100,2) as expectEROpen,round($prePrice*(100+avg(HighChg))/100,2) as expectERHigh,round($prePrice*(100+avg(LowChg))/100,2) as expectERLow,s.indexMember,stddev(erChange) as sd from sstk as s inner join erstks as e using (tick) WHERE tick='$ticker' and erDate>‘$cutoff_date’ and erDate<='$erDate' "; $selection=$conn->query($statement);
// $erDate=NULL;
if (!$selection) {
trigger_error(‘Wrong SQL: ‘ . $statement . ‘ Error: ‘ . $conn->error, E_USER_ERROR);
}
else
{

if ( $selection->num_rows)
{
$row = $selection->fetch_assoc();
$openPrice = $row[‘expectEROpen’];
$closePrice = $row[‘expectERClose’];
$highPrice = $row[‘expectERHigh’];
$lowPrice = $row[‘expectERLow’];
$UpTarget=$row[‘UpTarget’];
$DownTarget=$row[‘DownTarget’];
$UpLimit=$row[‘UpLimit’];
$DownLimit=$row[‘DownLimit’];
$selection->free();
$table = $ticker.” ER estimates”;
if (NULL == $prePrice )
$prePrice = $row[‘lastPrice’];
$url = basename(__FILE__);
$url = $url.”?tickName=$ticker”;
// $statement= “SELECT tick, (erDate) as erDate,industry, (preERrun) , (postERrun),s.indexMember from sstk as s inner join erstks as e using (tick) WHERE tick=’$ticker’ and erDate>’$cutoff_date’ and erDate<='$erDate' "; queryDB($url,$statement, $table); echo "

Based on $ticker latest PRE-ER price of $prePrice, We expect $ticker $erDate ER result as follow:

“;
echo ” If meet ER & Revenue,Neutraul bias: ER Open Price $openPrice, Close Price $closePrice, High:$highPrice, LOW:$lowPrice

“;
echo ” If miss expectation: $DownTarget , If beat: $UpTarget

“;
echo ” If extremely bad guidance: $DownLimit If Short Squeez: $UpLimit

“;
echo “

How to use this information:

“;
echo ”

Estimated After ER Open Price & after ER Close Price:

If you have no bias about ER result, you can use this as estimates for price range after ER

“;
echo ”

UpTarget and DownTarget:

The probability that ER price fall into this range is about 80%, if you have an up(or down) side view about this paticular ER, you can use the UpTarget (or DownTarget) to plan your ER directional trade.

“;
echo ”

UpLimit and DownLimit:

These are price range under the extreme case , use these numbers to calcualte your risk exposure and establish the size of your trade.

“;
echo ”

Value, TA, FA:

These are the quantified numbers between -10 to 10 to represent the current stock price to value, Financial Analysis, and Technical Analysis scores. Please note there is no direct correlation between those values and Post ER day price range. There are listed for your long term holding reference, also note post ER shocks may dramatically changes a stock’s Value, FA, and TA scores.

“;
}
else
echo “nothing selected \n”;
}
}

function checkERResult($conn, $ticker,$erDate, $cutoff_date)
{
$preERDate = getLastClosedTradingdate($erDate);
$searchDate = date(“Y-m-d”, strtotime($preERDate));
if (0 == getHistPriceFromDB($conn,$ticker, $searchDate, $prePrice))
{
echo “$ticker, $searchDate, price = $prePrice”;
if (0==getHistPriceFromG($ticker, ‘NASDAQ’, $searchDate, $prePrice) AND 0==getHistPriceFromG($ticker, ‘NYSE’, $searchDate, $prePrice) );
return;
// getHistPriceFromG($ticker,’NYSE’, $searchDate, $prePrice);
}
$today = date(“Y-m-d”);
if ($erDate<$today) $erChange = getLatestERChange($conn, $ticker); else { $tag ='l1'; $curPrice =getYahooDataByTag($ticker,$tag); $erChange = $curPrice*100/$prePrice -100; } $statement= "SELECT tick,max(erDate) as erDate,$prePrice as preERPrice,erMove as erRange,round($prePrice*(100+max(HighChg))/100,2) as UpLimit, round($prePrice*(100+min(lowChg))/100,2) as DownLimit,round($prePrice*(100+avg(OpenChg))/100,2) as expectEROpen,round($prePrice*(100+avg(HighChg))/100,2) as expectERHigh,round($prePrice*(100+avg(LowChg))/100,2) as expectERLow,round($prePrice*(100+avg(erChange))/100,2) as expectERClose,round($prePrice*(100+($erChange))/100,2) as ERClose, round($prePrice*(100+avg(erChange)+1.28*stddev(erChange))/100,2) as UpTarget, round($prePrice*(100+avg(erChange)-1.28*stddev(erChange))/100,2) as DownTarget, stddev(erChange) as sd from sstk as s inner join erstks as e using (tick) WHERE FIND_IN_SET(tick,'$ticker') and erDate>‘$cutoff_date’ and erDate<='$erDate' "; $table = $ticker."Latest ER Result: "; $selection=$conn->query($statement);
// $erDate=NULL;
if (!$selection) {
trigger_error(‘Wrong SQL: ‘ . $statement . ‘ Error: ‘ . $conn->error, E_USER_ERROR);
}
else
{

if ( $selection->num_rows)
{
$row = $selection->fetch_assoc();
$openPrice = $row[‘expectEROpen’];
$closePrice = $row[‘expectERClose’];
$ERClose =$row[‘ERClose’];
$UpTarget=$row[‘UpTarget’];
$DownTarget=$row[‘DownTarget’];
$UpLimit=$row[‘UpLimit’];
$DownLimit=$row[‘DownLimit’];
$selection->free();
$table = $ticker.” ER estimates”;

$url = basename(__FILE__);
$url = $url.”?tickName=$ticker”;
$table = $ticker.”Latest ER Result: “;
queryDB($url,$statement, $table);
/*
echo ” Expected Up side Target: $UpTarget, Expected Down Side Target: $DownTarget

“;
echo ” Expected After ER Open Price $openPrice, Close Price $closePrice

“;
echo ” Expected Extreme Case range: from $DownLimit to $UpLimit

“;
*/
echo ”

$ticker ER result as follow:

“;
if ($ERClose>$DownLimit && $ERClose<$UpLimit) Echo "ER Close price $ERClose is within predicted extreme Range: ($DownLimit, $UpLimit )

“;
else
Echo “ER Close price $ERClose is out of predicted extreme Range: ($DownLimit, $UpLimit )

“;

$predError = abs(round(($ERClose-$DownTarget)*100/$DownTarget,2));
if ($predError <1.5) Echo "ER Close price $ERClose is within $predError% of predicted DownTarget Price: ($DownTarget )

“;
else
{
$predError = abs(round(($ERClose-$UpTarget)*100/$UpTarget,2));
if ($predError <1.5) Echo "ER Close price $ERClose is within $predError% of predicted UpTarget Price: ($UpTarget )

“;
else
if ($ERClose > $DownTarget and $ERClose<$UpTarget) Echo "ER Close price $ERClose is within predicted Target Range: ($DownTarget, $UpTarget )

“;
else
{
Echo “ER Close price $ERClose is out of predicted Target Range: ($DownTarget, $UpTarget )

“;

}
}
$predError = round(($ERClose-$closePrice)*100/$closePrice,2);
if ($predError <2.5 and $predError >-2.5)
Echo “ER Close price $ERClose is within $predError% of predicted Close Price: ($closePrice )

“;
else
Echo “ER Close price $ERClose had an error of $predError% to predicted price ($closePrice )

“;
}
}
return $erDate;
}

//$ticker =”AAPL,GOOGL, TSLA, FSLR, VLP”;
function updQueryCnt($conn, $ticker, $today)
{
$updated = $inserted =0;
$statement = “select totQuery,lastIP from lifan.sstkquery where tick=’$ticker’ and date=’$today'”;
$selection=$conn->query($statement);
if (!$selection) {
trigger_error(‘Wrong SQL: ‘ . $statement . ‘ Error: ‘ . $conn->error, E_USER_ERROR);
}
else
{
$fromIP = get_the_user_ip() ;
if ( $selection->num_rows)
{
$row = $selection->fetch_assoc();
$lastIP=$row[‘lastIP’];
$selection->free();
if ($lastIP != $fromIP)
{
$statement = “update lifan.sstkquery set totQuery=totQuery+1,lastIP=’$fromIP’ where tick=’$ticker’ and date=’$today'”;
$result =$conn->query($statement);
if (!$result)
{
trigger_error(‘Wrong SQL: ‘ . $statement . ‘ Error: ‘ . $conn->error, E_USER_ERROR);
}
else
$updated +=$conn->affected_rows;
}

}
else
{

$statement = “Insert into lifan.sstkquery (`tick`,`date`,`totQuery`,`lastIP`) VALUES (‘$ticker’,’$today’,1,’$fromIP’) “;
$result =$conn->query($statement);
if (!$result)
{
echo “Warning: failed to insert updQ(), $conn->error, E_USER_ERROR”;
}
else
$inserted += $conn->affected_rows;

}
$conn->commit();
}
// echo “inserted $inserted; updated $updated “;
}

if ($orderby)
{
if ($orderby == ‘ERDate’ OR $orderby == ‘acqOPrice’)
$orderby = $orderby.” desc”;
else
{
$myrand = rand ();
if ($myrand % 2 ==1)
$orderby = $orderby.” desc”;
}
}
else
$orderby = ” erdate desc, (erstks.cScore+erstks.lscore) DESC, erstks.tick “;

//echo $ticker;
$ticker = preg_replace(“/[\s,]+/”,”,”,$ticker);
echo “[“.$ticker.”]\n”;
// $ticks = preg_split(“/[\s,]+/”,$ticker);

// $ticks = explode(” “,$ticker);

// $count = count($ticks);
$today = date(“Y-m-d”);
$now = date(“Y-m-d H:i”);
$hour = date(“H:i”);
echo “$today\n”;
$cutoff_date= date(‘Y-m-d’, strtotime(“- 821 days”, strtotime($today))); //Calculate only latest ER result

if (1)
{
$url = basename(__FILE__);
$url = $url.”?tickName=$ticker”;

$conn=open_db();
$erDate = getLatestERDate($conn, $ticker);
if (NULL==$erDate)
{
echo “ER Date for ticker $ticker not found\n”;
$conn->close();
return;

}
echo “[finviz ticker=$ticker]”;
$erHour = date(“H:i”,strtotime($erDate));
if ($erDate > $now OR ($erDate >$today and $erHour>=’16:30′ ) OR ($erDate >$today and $erDate<$now and $hour <"16:30")) { predictER($conn, $ticker,$erDate,$cutoff_date); } else { // echo "$erDate > $now $erDate>$today $erHour>’16:30′ \n\n”;
checkERResult($conn, $ticker,$erDate,$cutoff_date);
/*
$preERDate = getLastClosedTradingdate($erDate);
getHistPriceFromG($ticker, $preERDate, $curPrice);
$statement= “SELECT tick,max(erDate) as erDate,$curPrice as preERPrice,erMove as erRange,round($curPrice*(100+max(HighChg))/100,2) as UpLimit, round($curPrice*(100+min(lowChg))/100,2) as DownLimit,round($curPrice*(100+avg(erChange))/100,2) as expectERClose,round($curPrice*(100+(erChange))/100,2) as ERClose, round($curPrice*(100+avg(OpenChg))/100,2) as expectEROpen,round($curPrice*(100+avg(erChange)+1.28*stddev(erChange))/100,2) as UpTarget, round($curPrice*(100+avg(erChange)-1.28*stddev(erChange))/100,2) as DownTarget, stddev(erChange) as sd from sstk as s inner join erstks as e using (tick) WHERE FIND_IN_SET(tick,’$ticker’) and erDate>’$cutoff_date’ “;
$table = $ticker.”Latest ER Result: “;
queryDB($url,$statement, $table);
*/
}

$statement= “SELECT tick,erDate,price,marketcapM,outstandM,floatM,lscore as value, trend as TA, FA, MFI,shortRatio,shortScore,erShtScore,institution,erstks.avgVol,erstks.vol,erstks.pctChange,avgChg as estChg,erChange,preERrun,postERrun,openChg,highChg,lowChg,topOwner,pctOwned,optPain,cest-sdest,callVal,putVal FROM erstks WHERE FIND_IN_SET(erstks.tick,’$ticker’) ORDER BY “.$orderby;

$table =”ERbyTick”;
// queryDB($url,$statement, $table);
$selection=$conn->query($statement);
$num = $selection->num_rows;
if ($num <8) echo "

NOTE: $ticker has limited ER history, thus statistic based on history data may not be as useful as other cases. Please reference this information with caution!

“;

}
if ($updateQuery)
updQueryCnt($conn, $ticker, $today);
$date8= date(‘Y-m-d’, strtotime(“-8 days”, strtotime($today)));
$statement= “SELECT tick, sum(totQuery) as totalCnt from lifan.sstkquery WHERE date>’$date8′ group by (tick) order by totalCnt desc limit 10”;
// echo $statement;
$table = “Currenty Hot Stocks: “;
// queryDB($url,$statement, $table);

$conn->close();
?>

季报追踪网 ERTrack.com
滚动至顶部