调用Yahoo API监控外汇汇率
參考鏈接:?
1, http://kuppalli.wordpress.com/2008/11/15/get-live-currency-value-using-yahoo-api/
2, http://www.gummy-stuff.org/Yahoo-data.htm
剛到墨爾本時(shí), 我壯了壯膽子, 在 Subway 吃了一頓, 然后用我招商銀行的信用卡結(jié)了賬. 感覺(jué)還不錯(cuò), 心想至少拿著人民幣也餓不著了. 但回家一看賬單, 招行先把賬單上的澳元換美元, 再換人民幣, 最后算給我的匯率就比當(dāng)時(shí)的澳元/人民幣匯率高的多了. 還是找個(gè)匯率低的時(shí)候多換點(diǎn)吧.
Yahoo! 上提供了各種金融數(shù)據(jù)的接口, 有股票/能源/期貨自然也有外匯匯率. 我參考了一下API, 查詢澳幣/人民幣匯率的方法是:
http://download.finance.yahoo.com/d/quotes.csv?e=.csv&f=sl1d1t1&s=AUDCNY=x
上面的鏈接在瀏覽器中可以得到如下數(shù)據(jù):
"AUDCNY=X",6.7402,"3/5/2012","3:40am"
其實(shí)就是CSV格式了, 所以可以看出在URL里的"f=sl1d1t1"就分別指定了代號(hào), 匯率, 日期, 時(shí)間這四個(gè)字段. 再往下就很簡(jiǎn)單了. 用 curl 獲取數(shù)據(jù), 再寫入 MySQL 數(shù)據(jù)庫(kù)就完成了采集功能. 而對(duì)比最近的幾次匯率, 如果突破閾值就發(fā)送郵件, 也就完成了基本的監(jiān)控功能了.
下面是我寫的 PHP 文件, 用 Cron 設(shè)定間隔執(zhí)行即可, 例如5分鐘一次:
*/5? *? *? *? *? /usr/bin/php /home/raymond/path/to/cron-task.php
PHP 源碼(寫的很原始 ^o^):
<?php
$url = "http://download.finance.yahoo.com/d/quotes.csv?e=.csv&f=sl1d1t1&s=AUDCNY=x+AUDUSD=x";
$trigger_low = 6.68;
$trigger_high = 6.93;
$dbc = mysql_connect("localhost", "root", "blizzard");
if(!$dbc):
die("Error connecting to DB." . mysql_error());
endif;
?>
<?php
$handle = curl_init($url);
curl_setopt($handle, CURLOPT_RETURNTRANSFER, true);
$result = curl_exec($handle);
if(curl_errno($handle)):
echo "CURL Error: " . curl_error($handle);
else:
$sql = "insert into `forexrates` (`currencypair`, `rate`, `source-time`) values ";
$values = array();
$rows = explode("\n", $result); //echo print_r($rows); echo print_r($result);
foreach($rows as $row):
//"AUDCNY=X",6.8059,"2/29/2012","7:54pm"
$cols = explode(",", $row);
if(count($cols) < 4):
continue;
endif;
$currency_pair = substr($cols[0], 1, 6);
$rate = $cols[1];
$t = trim($cols[2], '" ') . ' ' . trim(trim($cols[3]), '"'); //echo $t;
$source_date = new DateTime($t);
$source_date_str = $source_date->format('Y-m-d H:i:s');
$values[] = " ('$currency_pair', '$rate', '$source_date_str')";
endforeach;
mysql_selectdb('falcon', $dbc);
$sql .= implode(',', $values); //echo $sql;
mysql_query($sql, $dbc);
if(mysql_errno($dbc)):
echo mysql_error($dbc);
endif;
endif;
curl_close($handle);
?>
<?php //notification for AUDCNY high and low rates
$sql = "select rate from forexrates where currencypair='AUDCNY' order by id desc limit 2";
$query = mysql_query($sql, $dbc);
$rate1 = (double)mysql_result($query, 0, 'rate');
$rate2 = (double)mysql_result($query, 1, 'rate'); echo $rate2 . ' --> ' . $rate1;
$subject = '';
$to = 'raynix@gmail.com';
$body = (string)$rate1;
if($rate1 > $rate2 && $rate2 > $trigger_high):
$subject = 'The rate is getting HIGH!';
mail($to, $subject, $body);
elseif($rate1 < $rate2 && $rate2 < $trigger_low):
$subject = 'The rate is getting LOW!';
mail($to, $subject, $body);
endif;
mysql_close($dbc);
?>
轉(zhuǎn)載于:https://www.cnblogs.com/phpxuetang/p/4607978.html
總結(jié)
以上是生活随笔為你收集整理的调用Yahoo API监控外汇汇率的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: 今天带软测2班学员做面试前的试题(每天几
- 下一篇: 打造自己的域名转向