AjaxtradeController.class.php 44 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091929394959697989910010110210310410510610710810911011111211311411511611711811912012112212312412512612712812913013113213313413513613713813914014114214314414514614714814915015115215315415515615715815916016116216316416516616716816917017117217317417517617717817918018118218318418518618718818919019119219319419519619719819920020120220320420520620720820921021121221321421521621721821922022122222322422522622722822923023123223323423523623723823924024124224324424524624724824925025125225325425525625725825926026126226326426526626726826927027127227327427527627727827928028128228328428528628728828929029129229329429529629729829930030130230330430530630730830931031131231331431531631731831932032132232332432532632732832933033133233333433533633733833934034134234334434534634734834935035135235335435535635735835936036136236336436536636736836937037137237337437537637737837938038138238338438538638738838939039139239339439539639739839940040140240340440540640740840941041141241341441541641741841942042142242342442542642742842943043143243343443543643743843944044144244344444544644744844945045145245345445545645745845946046146246346446546646746846947047147247347447547647747847948048148248348448548648748848949049149249349449549649749849950050150250350450550650750850951051151251351451551651751851952052152252352452552652752852953053153253353453553653753853954054154254354454554654754854955055155255355455555655755855956056156256356456556656756856957057157257357457557657757857958058158258358458558658758858959059159259359459559659759859960060160260360460560660760860961061161261361461561661761861962062162262362462562662762862963063163263363463563663763863964064164264364464564664764864965065165265365465565665765865966066166266366466566666766866967067167267367467567667767867968068168268368468568668768868969069169269369469569669769869970070170270370470570670770870971071171271371471571671771871972072172272372472572672772872973073173273373473573673773873974074174274374474574674774874975075175275375475575675775875976076176276376476576676776876977077177277377477577677777877978078178278378478578678778878979079179279379479579679779879980080180280380480580680780880981081181281381481581681781881982082182282382482582682782882983083183283383483583683783883984084184284384484584684784884985085185285385485585685785885986086186286386486586686786886987087187287387487587687787887988088188288388488588688788888989089189289389489589689789889990090190290390490590690790890991091191291391491591691791891992092192292392492592692792892993093193293393493593693793893994094194294394494594694794894995095195295395495595695795895996096196296396496596696796896997097197297397497597697797897998098198298398498598698798898999099199299399499599699799899910001001100210031004100510061007100810091010101110121013101410151016101710181019102010211022102310241025102610271028102910301031103210331034103510361037103810391040104110421043104410451046104710481049105010511052105310541055105610571058105910601061106210631064106510661067106810691070107110721073107410751076107710781079108010811082108310841085
  1. <?php
  2. namespace Home\Controller;
  3. class AjaxtradeController extends HomeController
  4. {
  5. //获取当前最新价格
  6. public function getcoinprice($symbol = null){
  7. if($symbol == '' || $symbol == null){
  8. $this->ajaxReturn(['code'=>0]);
  9. }
  10. if($symbol == "UKB/USDT"){
  11. $symbol = "ukb_usdt";
  12. $mlist = M("market")->where(array('name'=>$symbol))->field("new_price,min_price,max_price,faxingjia,volume")->find();
  13. $num = 0.001 * rand(1,9);
  14. $open = $mlist['min_price'];//开盘价
  15. $close = $mlist['new_price'] + $num;//现价
  16. $lowhig = $close - $open; //涨跌
  17. $high =
  18. $low =
  19. $change = round(($lowhig / $open * 100),2); //涨跌幅
  20. if($change >= 0){
  21. $change = '<span class="green" style="font-size:18px;font-weight: 500;">+' .$change. '%</span>';
  22. }else{
  23. $change = '<span class="red" style="font-size:18px;font-weight: 500;">' .$change. '%</span>';
  24. }
  25. if($close >= $open){
  26. $close = '<span class="green" style="font-size:18px;font-weight: 500;">'.$close.'</span>';
  27. }else{
  28. $close = '<span class="red" style="font-size:18px;font-weight: 500;">'.$close.'</span>';
  29. }
  30. $data['code']=1;
  31. $data['price'] = $close;
  32. $data['change']= $change;
  33. $data['high'] = $mlist['max_price'];
  34. $data['low'] = $mlist['min_price'];
  35. $data['amount'] = $mlist['volume'];//量
  36. $this->ajaxReturn($data);
  37. }else{
  38. $arr = explode('/',$symbol);
  39. $coinname = strtolower($arr[0]).strtolower($arr[1]);
  40. $url = "https://api.huobi.pro/market/history/kline?period=1day&size=1&symbol=".$coinname;
  41. $result = $this->get_maket_api($url);
  42. $pdata = $result['data'][0];
  43. $open = $pdata['open'];//开盘价
  44. $close = $pdata['close'];//现价
  45. $lowhig = $close - $open; //涨跌
  46. $change = round(($lowhig / $open * 100),2); //涨跌幅
  47. if($change >= 0){
  48. $change = '<span class="green" style="font-size:18px;font-weight: 500;">+' .$change. '%</span>';
  49. }else{
  50. $change = '<span class="red" style="font-size:18px;font-weight: 500;">' .$change. '%</span>';
  51. }
  52. if($close >= $open){
  53. $close = '<span class="green" style="font-size:18px;font-weight: 500;">'.$close.'</span>';
  54. }else{
  55. $close = '<span class="red" style="font-size:18px;font-weight: 500;">'.$close.'</span>';
  56. }
  57. $data['code']=1;
  58. $data['price'] = $close;
  59. $data['change']= $change;
  60. $data['high'] = $pdata['high'];//最高
  61. $data['low'] = $pdata['low'];//最高
  62. $data['amount'] = $pdata['amount'];//量
  63. $this->ajaxReturn($data);
  64. }
  65. }
  66. //获取当前最新价格
  67. public function getnewprice($symbol = null){
  68. if($symbol == '' || $symbol == null){
  69. $this->ajaxReturn(['code'=>0]);
  70. }
  71. if($symbol == "UKB/USDT"){
  72. $symbol = "ukb_usdt";
  73. $mlist = M("market")->where(array('name'=>$symbol))->field("new_price")->find();
  74. $num = 0.001 * rand(1,9);
  75. $close = $mlist['new_price'] + $num;//现价
  76. $data['code']=1;
  77. $data['price']=$close;
  78. $this->ajaxReturn($data);
  79. }else{
  80. $arr = explode('/',$symbol);
  81. $coinname = strtolower($arr[0]).strtolower($arr[1]);
  82. $url = "https://api.huobi.pro/market/history/kline?period=1day&size=1&symbol=".$coinname;
  83. $result = $this->get_maket_api($url);
  84. $pdata = $result['data'][0];
  85. $price = $pdata['close'];
  86. $data['code']=1;
  87. $data['price']=$price;
  88. $this->ajaxReturn($data);
  89. }
  90. }
  91. //获取10条卖出记录
  92. public function gettradbuyten($symbol = null){
  93. if($symbol == "UKB/USDT"){
  94. $market = "ukb_usdt";
  95. $list = M("trade")->where(array('market'=>$market))->order("id desc")->limit(40)->select();
  96. foreach($list as $key=>$vo){
  97. if($vo['type'] == 1){
  98. $ajdata[$key]['amount'] = sprintf("%.4f",$vo['num']);
  99. $ajdata[$key]['price'] = sprintf("%.4f",$vo['price']);
  100. }
  101. }
  102. $this->ajaxReturn(['code'=>1,'data'=>$ajdata]);
  103. }else{
  104. $arr = explode('/',$symbol);
  105. $coinname = strtolower($arr[0]).strtolower($arr[1]);
  106. $url = "https://api.huobi.pro/market/history/trade?symbol=".$coinname."&size=40";
  107. $result = $this->get_maket_api($url);
  108. $data = $result['data'];
  109. $ajdata = array();
  110. foreach($data as $key=>$vo){
  111. $direction = $vo['data'][0]['direction'];
  112. if($direction == "buy"){
  113. $ajdata[$key]['amount'] = sprintf("%.4f",$vo['data'][0]['amount']);
  114. $ajdata[$key]['price'] = sprintf("%.4f",$vo['data'][0]['price']);
  115. }
  116. }
  117. $this->ajaxReturn(['code'=>1,'data'=>$ajdata]);
  118. }
  119. }
  120. //获取10条购买记录
  121. public function gettradsellten($symbol = null){
  122. if($symbol == "UKB/USDT"){
  123. $market = "ukb_usdt";
  124. $list = M("trade")->where(array('market'=>$market))->order("id desc")->limit(40)->select();
  125. foreach($list as $key=>$vo){
  126. if($vo['type'] == 2){
  127. $ajdata[$key]['amount'] = sprintf("%.4f",$vo['num']);
  128. $ajdata[$key]['price'] = sprintf("%.4f",$vo['price']);
  129. }
  130. }
  131. $this->ajaxReturn(['code'=>1,'data'=>$ajdata]);
  132. }else{
  133. $arr = explode('/',$symbol);
  134. $coinname = strtolower($arr[0]).strtolower($arr[1]);
  135. $url = "https://api.huobi.pro/market/history/trade?symbol=".$coinname."&size=40";
  136. $result = $this->get_maket_api($url);
  137. $data = $result['data'];
  138. $ajdata = array();
  139. foreach($data as $key=>$vo){
  140. $direction = $vo['data'][0]['direction'];
  141. if($direction == "sell"){
  142. $ajdata[$key]['amount'] = sprintf("%.4f",$vo['data'][0]['amount']);
  143. $ajdata[$key]['price'] = sprintf("%.4f",$vo['data'][0]['price']);
  144. }
  145. }
  146. $this->ajaxReturn(['code'=>1,'data'=>$ajdata]);
  147. }
  148. }
  149. //获取5条卖出记录
  150. public function gettradbuy($symbol = null){
  151. if($symbol == "UKB/USDT"){
  152. $market = "ukb_usdt";
  153. $list = M("trade")->where(array('market'=>$market))->order("id desc")->limit(20)->select();
  154. foreach($list as $key=>$vo){
  155. if($vo['type'] == 1){
  156. $ajdata[$key]['amount'] = sprintf("%.4f",$vo['num']);
  157. $ajdata[$key]['price'] = sprintf("%.4f",$vo['price']);
  158. }
  159. }
  160. $this->ajaxReturn(['code'=>1,'data'=>$ajdata]);
  161. }else{
  162. $arr = explode('/',$symbol);
  163. $coinname = strtolower($arr[0]).strtolower($arr[1]);
  164. $url = "https://api.huobi.pro/market/history/trade?symbol=".$coinname."&size=20";
  165. $result = $this->get_maket_api($url);
  166. $data = $result['data'];
  167. $ajdata = array();
  168. foreach($data as $key=>$vo){
  169. $direction = $vo['data'][0]['direction'];
  170. if($direction == "buy"){
  171. $ajdata[$key]['amount'] = sprintf("%.4f",$vo['data'][0]['amount']);
  172. $ajdata[$key]['price'] = sprintf("%.4f",$vo['data'][0]['price']);
  173. }
  174. }
  175. $this->ajaxReturn(['code'=>1,'data'=>$ajdata]);
  176. }
  177. }
  178. //获取5条购买记录
  179. public function gettradsell($symbol = null){
  180. if($symbol == "UKB/USDT"){
  181. $market = "ukb_usdt";
  182. $list = M("trade")->where(array('market'=>$market))->order("id desc")->limit(20)->select();
  183. foreach($list as $key=>$vo){
  184. if($vo['type'] == 2){
  185. $ajdata[$key]['amount'] = sprintf("%.4f",$vo['num']);
  186. $ajdata[$key]['price'] = sprintf("%.4f",$vo['price']);
  187. }
  188. }
  189. $this->ajaxReturn(['code'=>1,'data'=>$ajdata]);
  190. }else{
  191. $arr = explode('/',$symbol);
  192. $coinname = strtolower($arr[0]).strtolower($arr[1]);
  193. $url = "https://api.huobi.pro/market/history/trade?symbol=".$coinname."&size=40";
  194. $result = $this->get_maket_api($url);
  195. $data = $result['data'];
  196. $ajdata = array();
  197. foreach($data as $key=>$vo){
  198. $direction = $vo['data'][0]['direction'];
  199. if($direction == "sell"){
  200. $ajdata[$key]['amount'] = sprintf("%.4f",$vo['data'][0]['amount']);
  201. $ajdata[$key]['price'] = sprintf("%.4f",$vo['data'][0]['price']);
  202. }
  203. }
  204. $this->ajaxReturn(['code'=>1,'data'=>$ajdata]);
  205. }
  206. }
  207. //获取最新买卖记录
  208. public function gettradlist(){
  209. $coinname = trim(I('post.coinname'));
  210. if($coinname == "UKB"){
  211. $symbol = "ukb_usdt";
  212. $tlist = M("trade")->where(array("market"=>$symbol))->order("id desc")->limit(20)->select();
  213. $ajdata = array();
  214. foreach($tlist as $key=>$vo){
  215. if($vo['type'] == 1){
  216. $str = L('买入');
  217. $ajdata[$key]['strtype'] = '<span class="fzmm green">'. $str .'</span>';
  218. $ajdata[$key]['amount'] = '<span class="fzmm green">'. sprintf("%.4f",$vo['num']) .'</span>';
  219. $ajdata[$key]['price'] = '<span class="fzmm green">'. sprintf("%.4f",$vo['price']) .'</span>';
  220. }elseif($vo['type'] == 2){
  221. $str = L('卖出');
  222. $ajdata[$key]['strtype'] = '<span class="fzmm red">'. $str.'</span>';
  223. $ajdata[$key]['amount'] = '<span class="fzmm red">'. sprintf("%.4f",$vo['num']) .'</span>';
  224. $ajdata[$key]['price'] = '<span class="fzmm red">'. sprintf("%.4f",$vo['price']) .'</span>';
  225. }
  226. }
  227. $this->ajaxReturn(['code'=>1,'data'=>$ajdata]);
  228. }else{
  229. $symbol = strtolower($coinname).'usdt';
  230. $url = "https://api.huobi.pro/market/history/trade?symbol=".$symbol."&size=20";
  231. $result = $this->get_maket_api($url);
  232. $data = $result['data'];
  233. $ajdata = array();
  234. foreach($data as $key=>$vo){
  235. $direction = $vo['data'][0]['direction'];
  236. if($direction == "sell"){
  237. $str = L('卖出');
  238. $ajdata[$key]['strtype'] = '<span class="fzmm red">'. $str.'</span>';
  239. $ajdata[$key]['amount'] = '<span class="fzmm red">'. sprintf("%.4f",$vo['data'][0]['amount']) .'</span>';
  240. $ajdata[$key]['price'] = '<span class="fzmm red">'. sprintf("%.4f",$vo['data'][0]['price']) .'</span>';
  241. }elseif($direction == "buy"){
  242. $str = L('买入');
  243. $ajdata[$key]['strtype'] = '<span class="fzmm green">'. $str .'</span>';
  244. $ajdata[$key]['amount'] = '<span class="fzmm green">'. sprintf("%.4f",$vo['data'][0]['amount']) .'</span>';
  245. $ajdata[$key]['price'] = '<span class="fzmm green">'. sprintf("%.4f",$vo['data'][0]['price']) .'</span>';
  246. }
  247. }
  248. $this->ajaxReturn(['code'=>1,'data'=>$ajdata]);
  249. }
  250. }
  251. //获取主流货币详情
  252. public function get_market_one(){
  253. $btcapi = "https://api.huobi.pro/market/history/kline?period=1day&size=1&symbol=btcusdt";
  254. $ethapi = "https://api.huobi.pro/market/history/kline?period=1day&size=1&symbol=ethusdt";
  255. $bchapi = "https://api.huobi.pro/market/history/kline?period=1day&size=1&symbol=bchusdt";
  256. $btcresult = $this->get_maket_api($btcapi);
  257. $ethresult = $this->get_maket_api($ethapi);
  258. $bchresult = $this->get_maket_api($bchapi);
  259. $btcdata = $this->processing_onedata($btcresult);
  260. $ethdata = $this->processing_onedata($ethresult);
  261. $bchdata = $this->processing_onedata($bchresult);
  262. $market['btccoin'] = "BTC/USDT";
  263. $market['btcnewprice'] = $btcdata['open'];
  264. $market['btcchange'] = $btcdata['change'];
  265. $market['ethcoin'] = "ETH/USDT";
  266. $market['ethnewprice'] = $ethdata['open'];
  267. $market['ethchange'] = $ethdata['change'];
  268. $market['bchcoin'] = "BCH/USDT";
  269. $market['bchnewprice'] = $bchdata['open'];
  270. $market['bchchange'] = $bchdata['change'];
  271. $market['code'] = 1;
  272. $this->ajaxReturn($market);
  273. }
  274. //处理单个行情数理
  275. public function processing_onedata($array){
  276. $price_arr = $array['data'][0];
  277. $open = $price_arr['open'];//开盘价
  278. $close = $price_arr['close'];//现价
  279. $lowhig = $close - $open; //涨跌
  280. $change = round(($lowhig / $open * 100),2); //涨跌幅
  281. if($change >= 0){
  282. $change = '<span class="green" style="font-size:14px;font-weight: 500;">+' .$change. '%</span>';
  283. }else{
  284. $change = '<span class="red" style="font-size:14px;font-weight: 500;">' .$change. '%</span>';
  285. }
  286. if($close >= $open){
  287. $close = '<span class="green" style="font-size:16px;font-weight: 500;">'.$close.'</span>';
  288. }else{
  289. $close = '<span class="red" style="font-size:16px;font-weight: 500;">'.$close.'</span>';
  290. }
  291. $pdata['open'] = $close;
  292. $pdata['change'] = $change;
  293. return $pdata;
  294. }
  295. //获取行情单个行情数据
  296. public function obtain_btc($coin){
  297. $symbol = $coin."usdt";
  298. $cname = strtoupper($coin)."/USDT";
  299. $api = "https://api.huobi.pro/market/history/kline?period=1day&size=1&symbol=".$symbol;
  300. $data = $this->get_maket_api($api);
  301. if($data['status'] == 'ok'){
  302. $price_arr = $data['data'][0];
  303. $open = $price_arr['open'];//开盘价
  304. $close = $price_arr['close'];//现价
  305. $high = $price_arr['high'];//最高
  306. $low = $price_arr['low'];//最高
  307. $amount = $price_arr['amount'];//量
  308. $lowhig = $close - $open; //涨跌
  309. $change = round(($lowhig / $open * 100),2); //涨跌幅
  310. if($change >= 0){
  311. $changestr = "<span class='f14 fgreen fw'>+". $change ."%</span>";
  312. }else{
  313. $changestr = "<span class='f14 fred fw'>". $change ."%</span>";
  314. }
  315. if($close >= $open){
  316. $close = "<span class='f14 fgreen fw'>".$close."</span>";
  317. }else{
  318. $close = "<span class='f14 fred fw'>".$close."</span>";
  319. }
  320. $alldata['code'] = 1;
  321. $alldata['cname'] = $cname;
  322. $alldata['open'] = $close;
  323. $alldata['highlow'] = $high." / ".$low;
  324. $alldata['amount'] = $amount;
  325. $alldata['change'] = $changestr;
  326. $this->ajaxReturn($alldata);
  327. }else{
  328. $this->ajaxReturn(['code'=>0,'info'=>"error"]);
  329. }
  330. }
  331. //获取行情单个行情数据
  332. public function obtain_eth($coin){
  333. $symbol = $coin."usdt";
  334. $cname = strtoupper($coin)."/USDT";
  335. $api = "https://api.huobi.pro/market/history/kline?period=1day&size=1&symbol=".$symbol;
  336. $data = $this->get_maket_api($api);
  337. if($data['status'] == 'ok'){
  338. $price_arr = $data['data'][0];
  339. $open = $price_arr['open'];//开盘价
  340. $close = $price_arr['close'];//现价
  341. $high = $price_arr['high'];//最高
  342. $low = $price_arr['low'];//最高
  343. $amount = $price_arr['amount'];//最高
  344. $lowhig = $close - $open; //涨跌
  345. $change = round(($lowhig / $open * 100),2); //涨跌幅
  346. if($change >= 0){
  347. $changestr = "<span class='f14 fgreen fw'>+". $change ."%</span>";
  348. }else{
  349. $changestr = "<span class='f14 fred fw'>". $change ."%</span>";
  350. }
  351. if($close >= $open){
  352. $close = "<span class='f14 fgreen fw'>".$close."</span>";
  353. }else{
  354. $close = "<span class='f14 fred fw'>".$close."</span>";
  355. }
  356. $alldata['code'] = 1;
  357. $alldata['cname'] = $cname;
  358. $alldata['open'] = $close;
  359. $alldata['highlow'] = $high." / ".$low;
  360. $alldata['amount'] = $amount;
  361. $alldata['change'] = $changestr;
  362. $this->ajaxReturn($alldata);
  363. }else{
  364. $this->ajaxReturn(['code'=>0,'info'=>"error"]);
  365. }
  366. }
  367. //获取行情单个行情数据
  368. public function obtain_eos($coin){
  369. $symbol = $coin."usdt";
  370. $cname = strtoupper($coin)."/USDT";
  371. $api = "https://api.huobi.pro/market/history/kline?period=1day&size=1&symbol=".$symbol;
  372. $data = $this->get_maket_api($api);
  373. if($data['status'] == 'ok'){
  374. $price_arr = $data['data'][0];
  375. $open = $price_arr['open'];//开盘价
  376. $close = $price_arr['close'];//现价
  377. $high = $price_arr['high'];//最高
  378. $low = $price_arr['low'];//最高
  379. $amount = $price_arr['amount'];//最高
  380. $lowhig = $close - $open; //涨跌
  381. $change = round(($lowhig / $open * 100),2); //涨跌幅
  382. if($change >= 0){
  383. $changestr = "<span class='f14 fgreen fw'>+". $change ."%</span>";
  384. }else{
  385. $changestr = "<span class='f14 fred fw'>". $change ."%</span>";
  386. }
  387. if($close >= $open){
  388. $close = "<span class='f14 fgreen fw'>".$close."</span>";
  389. }else{
  390. $close = "<span class='f14 fred fw'>".$close."</span>";
  391. }
  392. $alldata['code'] = 1;
  393. $alldata['cname'] = $cname;
  394. $alldata['open'] = $close;
  395. $alldata['highlow'] = $high." / ".$low;
  396. $alldata['amount'] = $amount;
  397. $alldata['change'] = $changestr;
  398. $this->ajaxReturn($alldata);
  399. }else{
  400. $this->ajaxReturn(['code'=>0,'info'=>"error"]);
  401. }
  402. }
  403. //获取行情单个行情数据
  404. public function obtain_doge($coin){
  405. $symbol = $coin."usdt";
  406. $cname = strtoupper($coin)."/USDT";
  407. $api = "https://api.huobi.pro/market/history/kline?period=1day&size=1&symbol=".$symbol;
  408. $data = $this->get_maket_api($api);
  409. if($data['status'] == 'ok'){
  410. $price_arr = $data['data'][0];
  411. $open = $price_arr['open'];//开盘价
  412. $close = $price_arr['close'];//现价
  413. $high = $price_arr['high'];//最高
  414. $low = $price_arr['low'];//最高
  415. $amount = $price_arr['amount'];//最高
  416. $lowhig = $close - $open; //涨跌
  417. $change = round(($lowhig / $open * 100),2); //涨跌幅
  418. if($change >= 0){
  419. $changestr = "<span class='f14 fgreen fw'>+". $change ."%</span>";
  420. }else{
  421. $changestr = "<span class='f14 fred fw'>". $change ."%</span>";
  422. }
  423. if($close >= $open){
  424. $close = "<span class='f14 fgreen fw'>".$close."</span>";
  425. }else{
  426. $close = "<span class='f14 fred fw'>".$close."</span>";
  427. }
  428. $alldata['code'] = 1;
  429. $alldata['cname'] = $cname;
  430. $alldata['open'] = $close;
  431. $alldata['highlow'] = $high." / ".$low;
  432. $alldata['amount'] = $amount;
  433. $alldata['change'] = $changestr;
  434. $this->ajaxReturn($alldata);
  435. }else{
  436. $this->ajaxReturn(['code'=>0,'info'=>"error"]);
  437. }
  438. }
  439. //获取行情单个行情数据
  440. public function obtain_bch($coin){
  441. $symbol = $coin."usdt";
  442. $cname = strtoupper($coin)."/USDT";
  443. $api = "https://api.huobi.pro/market/history/kline?period=1day&size=1&symbol=".$symbol;
  444. $data = $this->get_maket_api($api);
  445. if($data['status'] == 'ok'){
  446. $price_arr = $data['data'][0];
  447. $open = $price_arr['open'];//开盘价
  448. $close = $price_arr['close'];//现价
  449. $high = $price_arr['high'];//最高
  450. $low = $price_arr['low'];//最高
  451. $amount = $price_arr['amount'];//最高
  452. $lowhig = $close - $open; //涨跌
  453. $change = round(($lowhig / $open * 100),2); //涨跌幅
  454. if($change >= 0){
  455. $changestr = "<span class='f14 fgreen fw'>+". $change ."%</span>";
  456. }else{
  457. $changestr = "<span class='f14 fred fw'>". $change ."%</span>";
  458. }
  459. if($close >= $open){
  460. $close = "<span class='f14 fgreen fw'>".$close."</span>";
  461. }else{
  462. $close = "<span class='f14 fred fw'>".$close."</span>";
  463. }
  464. $alldata['code'] = 1;
  465. $alldata['cname'] = $cname;
  466. $alldata['open'] = $close;
  467. $alldata['highlow'] = $high." / ".$low;
  468. $alldata['amount'] = $amount;
  469. $alldata['change'] = $changestr;
  470. $this->ajaxReturn($alldata);
  471. }else{
  472. $this->ajaxReturn(['code'=>0,'info'=>"error"]);
  473. }
  474. }
  475. //获取行情单个行情数据
  476. public function obtain_ltc($coin){
  477. $symbol = $coin."usdt";
  478. $cname = strtoupper($coin)."/USDT";
  479. $api = "https://api.huobi.pro/market/history/kline?period=1day&size=1&symbol=".$symbol;
  480. $data = $this->get_maket_api($api);
  481. if($data['status'] == 'ok'){
  482. $price_arr = $data['data'][0];
  483. $open = $price_arr['open'];//开盘价
  484. $close = $price_arr['close'];//现价
  485. $high = $price_arr['high'];//最高
  486. $low = $price_arr['low'];//最高
  487. $amount = $price_arr['amount'];//最高
  488. $lowhig = $close - $open; //涨跌
  489. $change = round(($lowhig / $open * 100),2); //涨跌幅
  490. if($change >= 0){
  491. $changestr = "<span class='f14 fgreen fw'>+". $change ."%</span>";
  492. }else{
  493. $changestr = "<span class='f14 fred fw'>". $change ."%</span>";
  494. }
  495. if($close >= $open){
  496. $close = "<span class='f14 fgreen fw'>".$close."</span>";
  497. }else{
  498. $close = "<span class='f14 fred fw'>".$close."</span>";
  499. }
  500. $alldata['code'] = 1;
  501. $alldata['cname'] = $cname;
  502. $alldata['open'] = $close;
  503. $alldata['highlow'] = $high." / ".$low;
  504. $alldata['amount'] = $amount;
  505. $alldata['change'] = $changestr;
  506. $this->ajaxReturn($alldata);
  507. }else{
  508. $this->ajaxReturn(['code'=>0,'info'=>"error"]);
  509. }
  510. }
  511. //获取行情单个行情数据
  512. public function obtain_iota($coin){
  513. $symbol = $coin."usdt";
  514. $cname = strtoupper($coin)."/USDT";
  515. $api = "https://api.huobi.pro/market/history/kline?period=1day&size=1&symbol=".$symbol;
  516. $data = $this->get_maket_api($api);
  517. if($data['status'] == 'ok'){
  518. $price_arr = $data['data'][0];
  519. $open = $price_arr['open'];//开盘价
  520. $close = $price_arr['close'];//现价
  521. $high = $price_arr['high'];//最高
  522. $low = $price_arr['low'];//最高
  523. $amount = $price_arr['amount'];//最高
  524. $lowhig = $close - $open; //涨跌
  525. $change = round(($lowhig / $open * 100),2); //涨跌幅
  526. if($change >= 0){
  527. $changestr = "<span class='f14 fgreen fw'>+". $change ."%</span>";
  528. }else{
  529. $changestr = "<span class='f14 fred fw'>". $change ."%</span>";
  530. }
  531. if($close >= $open){
  532. $close = "<span class='f14 fgreen fw'>".$close."</span>";
  533. }else{
  534. $close = "<span class='f14 fred fw'>".$close."</span>";
  535. }
  536. $alldata['code'] = 1;
  537. $alldata['cname'] = $cname;
  538. $alldata['open'] = $close;
  539. $alldata['highlow'] = $high." / ".$low;
  540. $alldata['amount'] = $amount;
  541. $alldata['change'] = $changestr;
  542. $this->ajaxReturn($alldata);
  543. }else{
  544. $this->ajaxReturn(['code'=>0,'info'=>"error"]);
  545. }
  546. }
  547. //获取行情单个行情数据
  548. public function obtain_fil($coin){
  549. $symbol = $coin."usdt";
  550. $cname = strtoupper($coin)."/USDT";
  551. $api = "https://api.huobi.pro/market/history/kline?period=1day&size=1&symbol=".$symbol;
  552. $data = $this->get_maket_api($api);
  553. if($data['status'] == 'ok'){
  554. $price_arr = $data['data'][0];
  555. $open = $price_arr['open'];//开盘价
  556. $close = $price_arr['close'];//现价
  557. $high = $price_arr['high'];//最高
  558. $low = $price_arr['low'];//最高
  559. $amount = $price_arr['amount'];//最高
  560. $lowhig = $close - $open; //涨跌
  561. $change = round(($lowhig / $open * 100),2); //涨跌幅
  562. if($change >= 0){
  563. $changestr = "<span class='f14 fgreen fw'>+". $change ."%</span>";
  564. }else{
  565. $changestr = "<span class='f14 fred fw'>". $change ."%</span>";
  566. }
  567. if($close >= $open){
  568. $close = "<span class='f14 fgreen fw'>".$close."</span>";
  569. }else{
  570. $close = "<span class='f14 fred fw'>".$close."</span>";
  571. }
  572. $alldata['code'] = 1;
  573. $alldata['cname'] = $cname;
  574. $alldata['open'] = $close;
  575. $alldata['highlow'] = $high." / ".$low;
  576. $alldata['amount'] = $amount;
  577. $alldata['change'] = $changestr;
  578. $this->ajaxReturn($alldata);
  579. }else{
  580. $this->ajaxReturn(['code'=>0,'info'=>"error"]);
  581. }
  582. }
  583. //获取行情单个行情数据
  584. public function obtain_flow($coin){
  585. $symbol = $coin."usdt";
  586. $cname = strtoupper($coin)."/USDT";
  587. $api = "https://api.huobi.pro/market/history/kline?period=1day&size=1&symbol=".$symbol;
  588. $data = $this->get_maket_api($api);
  589. if($data['status'] == 'ok'){
  590. $price_arr = $data['data'][0];
  591. $open = $price_arr['open'];//开盘价
  592. $close = $price_arr['close'];//现价
  593. $high = $price_arr['high'];//最高
  594. $low = $price_arr['low'];//最高
  595. $amount = $price_arr['amount'];//最高
  596. $lowhig = $close - $open; //涨跌
  597. $change = round(($lowhig / $open * 100),2); //涨跌幅
  598. if($change >= 0){
  599. $changestr = "<span class='f14 fgreen fw'>+". $change ."%</span>";
  600. }else{
  601. $changestr = "<span class='f14 fred fw'>". $change ."%</span>";
  602. }
  603. if($close >= $open){
  604. $close = "<span class='f14 fgreen fw'>".$close."</span>";
  605. }else{
  606. $close = "<span class='f14 fred fw'>".$close."</span>";
  607. }
  608. $alldata['code'] = 1;
  609. $alldata['cname'] = $cname;
  610. $alldata['open'] = $close;
  611. $alldata['highlow'] = $high." / ".$low;
  612. $alldata['amount'] = $amount;
  613. $alldata['change'] = $changestr;
  614. $this->ajaxReturn($alldata);
  615. }else{
  616. $this->ajaxReturn(['code'=>0,'info'=>"error"]);
  617. }
  618. }
  619. //获取行情单个行情数据
  620. public function obtain_jst($coin){
  621. $symbol = $coin."usdt";
  622. $cname = strtoupper($coin)."/USDT";
  623. $api = "https://api.huobi.pro/market/history/kline?period=1day&size=1&symbol=".$symbol;
  624. $data = $this->get_maket_api($api);
  625. if($data['status'] == 'ok'){
  626. $price_arr = $data['data'][0];
  627. $open = $price_arr['open'];//开盘价
  628. $close = $price_arr['close'];//现价
  629. $high = $price_arr['high'];//最高
  630. $low = $price_arr['low'];//最高
  631. $amount = $price_arr['amount'];//最高
  632. $lowhig = $close - $open; //涨跌
  633. $change = round(($lowhig / $open * 100),2); //涨跌幅
  634. if($change >= 0){
  635. $changestr = "<span class='f14 fgreen fw'>+". $change ."%</span>";
  636. }else{
  637. $changestr = "<span class='f14 fred fw'>". $change ."%</span>";
  638. }
  639. if($close >= $open){
  640. $close = "<span class='f14 fgreen fw'>".$close."</span>";
  641. }else{
  642. $close = "<span class='f14 fred fw'>".$close."</span>";
  643. }
  644. $alldata['code'] = 1;
  645. $alldata['cname'] = $cname;
  646. $alldata['open'] = $close;
  647. $alldata['highlow'] = $high." / ".$low;
  648. $alldata['amount'] = $amount;
  649. $alldata['change'] = $changestr;
  650. $this->ajaxReturn($alldata);
  651. }else{
  652. $this->ajaxReturn(['code'=>0,'info'=>"error"]);
  653. }
  654. }
  655. //获取行情单个行情数据
  656. public function obtain_itc($coin){
  657. $symbol = $coin."usdt";
  658. $cname = strtoupper($coin)."/USDT";
  659. $api = "https://api.huobi.pro/market/history/kline?period=1day&size=1&symbol=".$symbol;
  660. $data = $this->get_maket_api($api);
  661. if($data['status'] == 'ok'){
  662. $price_arr = $data['data'][0];
  663. $open = $price_arr['open'];//开盘价
  664. $close = $price_arr['close'];//现价
  665. $high = $price_arr['high'];//最高
  666. $low = $price_arr['low'];//最高
  667. $amount = $price_arr['amount'];//最高
  668. $lowhig = $close - $open; //涨跌
  669. $change = round(($lowhig / $open * 100),2); //涨跌幅
  670. if($change >= 0){
  671. $changestr = "<span class='f14 fgreen fw'>+". $change ."%</span>";
  672. }else{
  673. $changestr = "<span class='f14 fred fw'>". $change ."%</span>";
  674. }
  675. if($close >= $open){
  676. $close = "<span class='f14 fgreen fw'>".$close."</span>";
  677. }else{
  678. $close = "<span class='f14 fred fw'>".$close."</span>";
  679. }
  680. $alldata['code'] = 1;
  681. $alldata['cname'] = $cname;
  682. $alldata['open'] = $close;
  683. $alldata['highlow'] = $high." / ".$low;
  684. $alldata['amount'] = $amount;
  685. $alldata['change'] = $changestr;
  686. $this->ajaxReturn($alldata);
  687. }else{
  688. $this->ajaxReturn(['code'=>0,'info'=>"error"]);
  689. }
  690. }
  691. //获取行情单个行情数据
  692. public function obtain_ht($coin){
  693. $symbol = $coin."usdt";
  694. $cname = strtoupper($coin)."/USDT";
  695. $api = "https://api.huobi.pro/market/history/kline?period=1day&size=1&symbol=".$symbol;
  696. $data = $this->get_maket_api($api);
  697. if($data['status'] == 'ok'){
  698. $price_arr = $data['data'][0];
  699. $open = $price_arr['open'];//开盘价
  700. $close = $price_arr['close'];//现价
  701. $high = $price_arr['high'];//最高
  702. $low = $price_arr['low'];//最高
  703. $amount = $price_arr['amount'];//最高
  704. $lowhig = $close - $open; //涨跌
  705. $change = round(($lowhig / $open * 100),2); //涨跌幅
  706. if($change >= 0){
  707. $changestr = "<span class='f14 fgreen fw'>+". $change ."%</span>";
  708. }else{
  709. $changestr = "<span class='f14 fred fw'>". $change ."%</span>";
  710. }
  711. if($close >= $open){
  712. $close = "<span class='f14 fgreen fw'>".$close."</span>";
  713. }else{
  714. $close = "<span class='f14 fred fw'>".$close."</span>";
  715. }
  716. $alldata['code'] = 1;
  717. $alldata['cname'] = $cname;
  718. $alldata['open'] = $close;
  719. $alldata['highlow'] = $high." / ".$low;
  720. $alldata['amount'] = $amount;
  721. $alldata['change'] = $changestr;
  722. $this->ajaxReturn($alldata);
  723. }else{
  724. $this->ajaxReturn(['code'=>0,'info'=>"error"]);
  725. }
  726. }
  727. //获取行情单个行情数据
  728. public function obtain_usdz($coin){
  729. $symbol = "ukb_usdt";
  730. $mlist = M("market")->where(array('name'=>$symbol))->field("new_price,min_price,max_price,faxingjia,volume")->find();
  731. //$num = 0.001 * rand(1,9);
  732. $open = $mlist['min_price'];//开盘价
  733. $close = $mlist['new_price'];// + $num;//现价
  734. $high = $mlist['max_price'];//最高
  735. $low = $mlist['min_price'];//最高
  736. $amount = $mlist['volume'];//最高
  737. $lowhig = $close - $open; //涨跌
  738. $change = round(($lowhig / $open * 100),2); //涨跌幅
  739. if($change >= 0){
  740. $changestr = "<span class='f14 fgreen fw'>+". $change ."%</span>";
  741. }else{
  742. $changestr = "<span class='f14 fred fw'>". $change ."%</span>";
  743. }
  744. if($close >= $open){
  745. $close = "<span class='f14 fgreen fw'>".$close."</span>";
  746. }else{
  747. $close = "<span class='f14 fred fw'>".$close."</span>";
  748. }
  749. $alldata['code'] = 1;
  750. $alldata['cname'] = "UKB/USDT";
  751. $alldata['open'] = $close;
  752. $alldata['highlow'] = $high." / ".$low;
  753. $alldata['amount'] = $amount;
  754. $alldata['change'] = $changestr;
  755. $this->ajaxReturn($alldata);
  756. }
  757. //获取行情数据
  758. public function get_maket_api($api){
  759. $ch = curl_init();
  760. curl_setopt($ch, CURLOPT_IPRESOLVE, CURL_IPRESOLVE_V4);
  761. curl_setopt ($ch, CURLOPT_URL, $api );
  762. curl_setopt ($ch, CURLOPT_RETURNTRANSFER, 1);
  763. curl_setopt ($ch, CURLOPT_CONNECTTIMEOUT,10);
  764. $result = json_decode(curl_exec($ch),true);
  765. return $result;
  766. }
  767. //处理行情数理
  768. public function processing_data($array,$cname){
  769. $price_arr = $array['data'][0];
  770. $open = $price_arr['open'];//开盘价
  771. $close = $price_arr['close'];//现价
  772. $lowhig = $close - $open; //涨跌
  773. $change = round(($lowhig / $open * 100),2); //涨跌幅
  774. if($change >= 0){
  775. $changestr = "<span class='fzmm bgreen' style='color:#fff;border-radius: 2px;width:70px;height:35px;line-height:35px;text-align:center;display:inline-block;'>+". $change ."%</span>";
  776. }else{
  777. $changestr = "<span class='fzmm bred' style='color:#fff;border-radius: 2px;width:70px;height:35px;line-height:35px;text-align:center;display:inline-block;'>". $change ."%</span>";
  778. }
  779. if($close >= $open){
  780. $close = "<span class='fzmmm green'>".$close."</span>";
  781. }else{
  782. $close = "<span class='fzmmm red'>".$close."</span>";
  783. }
  784. $pdata['open'] = $close;
  785. $pdata['cname'] = $cname;
  786. $pdata['change'] = $changestr;
  787. return $pdata;
  788. }
  789. //获取市场行情
  790. public function getallsymbol(){
  791. $list = M("ctmarket")->where(array('status'=>1))->field("coinname,id")->select();
  792. if(!empty($list)){
  793. foreach($list as $k=>$v){
  794. $symbol = $v['coinname']."usdt";
  795. $cname = strtoupper($v['coinname'])."/USDT";
  796. $sid = $v['id'];
  797. $api = "https://api.huobi.pro/market/history/kline?period=1day&size=1&symbol=".$symbol;
  798. $data = $this->get_maket_api($api);
  799. // print_r($data);die;
  800. $price_arr = $data['data'][0];
  801. $open = $price_arr['open'];//开盘价
  802. $close = $price_arr['close'];//现价
  803. $lowhig = $close - $open; //涨跌
  804. $change = round(($lowhig / $open * 100),2); //涨跌幅
  805. if($change >= 0){
  806. $changestr = "<span class='fzmm bgreen' style='color:#fff;border-radius: 2px;width:70px;height:35px;line-height:35px;text-align:center;display:inline-block;'>+". $change ."%</span>";
  807. }else{
  808. $changestr = "<span class='fzmm bred' style='color:#fff;border-radius: 2px;width:70px;height:35px;line-height:35px;text-align:center;display:inline-block;'>". $change ."%</span>";
  809. }
  810. if($close >= $open){
  811. $close = "<span class='fzmmm green'>".$close."</span>";
  812. }else{
  813. $close = "<span class='fzmmm red'>".$close."</span>";
  814. }
  815. $alldata[$k]['sid'] = $sid;
  816. $alldata[$k]['cname'] = $cname;
  817. $alldata[$k]['open'] = $close;
  818. $alldata[$k]['change'] = $changestr;
  819. }
  820. $this->ajaxReturn(['code'=>1,'data'=>$alldata]);
  821. }else{
  822. $this->ajaxReturn(['code'=>0]);
  823. }
  824. }
  825. //处理合约页面交易对数据
  826. public function hydata($array,$cname){
  827. $price_arr = $array['data'][0];
  828. $open = $price_arr['open'];//开盘价
  829. $close = $price_arr['close'];//现价
  830. $lowhig = $close - $open; //涨跌
  831. $change = round(($lowhig / $open * 100),2); //涨跌幅
  832. if($change >= 0){
  833. $changestr = "<span class='fzmm green'>+".$change."%</span>";
  834. }else{
  835. $changestr = "<span class='fzmm red'>".$change."%</span>";
  836. }
  837. if($close >= $open){
  838. $close = "<span class='fzmm green'>".$close."</span>";
  839. }else{
  840. $close = "<span class='fzmm red'>".$close."</span>";
  841. }
  842. $pdata['open'] = $close;
  843. $pdata['cname'] = $cname;
  844. $pdata['change'] = $changestr;
  845. return $pdata;
  846. }
  847. //合约页面获取所有交易对
  848. public function getallcoin(){
  849. $where['status'] = 1;
  850. //$where['coinname'] = array('neq','ukb');
  851. $list = M("ctmarket")->where($where)->field("coinname,id")->select();
  852. if(!empty($list)){
  853. foreach($list as $k=>$v){
  854. if($v['coinname'] == "ukb"){
  855. $cname = "UKB/USDT";
  856. $sid = $v['id'];
  857. $symbol = "ukb_usdt";
  858. $mlist = M("market")->where(array('name'=>$symbol))->field("new_price,min_price,max_price,faxingjia,volume")->find();
  859. //$num = 0.001 * rand(1,9);
  860. $open = $mlist['min_price'];//开盘价
  861. $close = $mlist['new_price']; //+ $num;//现价
  862. $lowhig = $close - $open; //涨跌
  863. $change = round(($lowhig / $open * 100),2); //涨跌幅
  864. if($change >= 0){
  865. $changestr = "<span class='fzmm green'>+".$change."%</span>";
  866. }else{
  867. $changestr = "<span class='fzmm red'>".$change."%</span>";
  868. }
  869. if($close >= $open){
  870. $close = "<span class='fzmm green'>".$close."</span>";
  871. }else{
  872. $close = "<span class='fzmm red'>".$close."</span>";
  873. }
  874. $alldata[$k]['sid'] = $sid;
  875. $alldata[$k]['coin'] = strtoupper($v['coinname']);
  876. $alldata[$k]['cname'] = $cname;
  877. $alldata[$k]['symbol'] = $v['coinname'];
  878. $alldata[$k]['open'] = $close;
  879. $alldata[$k]['change'] = $changestr;
  880. }else{
  881. $symbol = $v['coinname']."usdt";
  882. $cname = strtoupper($v['coinname'])."/USDT";
  883. $sid = $v['id'];
  884. $api = "https://api.huobi.pro/market/history/kline?period=1day&size=1&symbol=".$symbol;
  885. $data = $this->get_maket_api($api);
  886. $result = $this->hydata($data,$cname);
  887. $alldata[$k]['sid'] = $sid;
  888. $alldata[$k]['coin'] = strtoupper($v['coinname']);
  889. $alldata[$k]['cname'] = $result['cname'];
  890. $alldata[$k]['symbol'] = $v['coinname'];
  891. $alldata[$k]['open'] = $result['open'];
  892. $alldata[$k]['change'] = $result['change'];
  893. }
  894. }
  895. $this->ajaxReturn(['code'=>1,'data'=>$alldata]);
  896. }else{
  897. $this->ajaxReturn(['code'=>0]);
  898. }
  899. }
  900. //获取交易对数据
  901. public function getcoin_data(){
  902. $coinname = trim($_POST['coinname']);
  903. if($coinname == "ukb"){
  904. $symbol = "ukb_usdt";
  905. $mlist = M("market")->where(array('name'=>$symbol))->field("new_price,min_price,max_price,faxingjia,volume")->find();
  906. $num = 0.001 * rand(1,9);
  907. $open = $mlist['min_price'];//开盘价
  908. $close = $mlist['new_price'] + $num;//现价
  909. $lowhig = $close - $open; //涨跌
  910. $change = round(($lowhig / $open * 100),2); //涨跌幅
  911. if($change >= 0){
  912. $changestr = "<span class='green' style='font-size:16px;'>+". $change ."%</span>";
  913. }else{
  914. $changestr = "<span class='red' style='font-size:16px;'>". $change ."%</span>";
  915. }
  916. if($close >= $open){
  917. $close = "<span class='green' style='font-size:22px;'>".$close."</span>";
  918. }else{
  919. $close = "<span class='red' style='font-size:22px;'>".$close."</span>";
  920. }
  921. $high = $mlist['max_price'];
  922. $low = $mlist['min_price'];
  923. $amount = $mlist['volume'];
  924. $result['close'] = $close;
  925. $result['change'] = $changestr;
  926. $result['high'] = $high;
  927. $result['low'] = $low;
  928. $result['amount'] = sprintf("%.6f",$amount);
  929. $result['code'] = 1;
  930. $this->ajaxReturn($result);
  931. }else{
  932. $symbol = strtolower($coinname)."usdt";
  933. $cname = strtoupper($coinname)."/USDT";
  934. $api = "https://api.huobi.pro/market/history/kline?period=1day&size=1&symbol=".$symbol;
  935. $data = $this->get_maket_api($api);
  936. $price_arr = $data['data'][0];
  937. $open = $price_arr['open'];//开盘价
  938. $close = $price_arr['close'];//现价
  939. $lowhig = $close - $open; //涨跌
  940. $change = round(($lowhig / $open * 100),2); //涨跌幅
  941. $change = 0;
  942. if($change >= 0){
  943. $changestr = "<span class='green' style='font-size:16px;'>+". $change ."%</span>";
  944. }else{
  945. $changestr = "<span class='red' style='font-size:16px;'>". $change ."%</span>";
  946. }
  947. if($close >= $open){
  948. $close = "<span class='green' style='font-size:22px;'>".$close."</span>";
  949. }else{
  950. $close = "<span class='red' style='font-size:22px;'>".$close."</span>";
  951. }
  952. $high = $price_arr['high'];
  953. $low = $price_arr['low'];
  954. $amount = $price_arr['amount'];
  955. $result['close'] = $close;
  956. $result['change'] = $changestr;
  957. $result['high'] = $high;
  958. $result['low'] = $low;
  959. $result['amount'] = sprintf("%.6f",$amount);
  960. $result['code'] = 1;
  961. $this->ajaxReturn($result);
  962. }
  963. }
  964. }
  965. ?>