wsDemo.php 6.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177
  1. <?php
  2. /**
  3. * Created by PhpStorm.
  4. * User: hengliu
  5. * Date: 2019/5/10
  6. * Time: 8:22 PM
  7. */
  8. //namespace okv5;
  9. require './vendor/autoload.php';
  10. require './Config.php';
  11. use okv5\Config;
  12. use okv5\PrivateChannels;
  13. use okv5\PublicChannels;
  14. use okv5\TradeChannels;
  15. use okv5\Websocket;
  16. $obj = new PublicChannels(Config::$config);
  17. $callbackTrade = function ($data) use ($obj) {
  18. $dataArr = json_decode($data, true);
  19. $ntime = $obj->getTimestamp();
  20. $otime = $obj -> oldTime;
  21. // print_r($dataArr);
  22. if (!empty($dataArr["table"])){
  23. $key = substr($dataArr["data"][0]["timestamp"], 0,-8);
  24. // print_r($key."\n");
  25. // 第一次,分钟线的初始化
  26. if (empty($obj->tradeVolumn[$key]))
  27. {
  28. print_r($ntime." tradeVolumn ".json_encode($obj->tradeVolumn));
  29. print_r("\n");
  30. $obj->tradeVolumn[$key] = $dataArr["data"][0]["qty"];
  31. // 分钟线成交量的累加
  32. }else{
  33. $obj->tradeVolumn[$key] += $dataArr["data"][0]["qty"];
  34. }
  35. }
  36. print_r($ntime." ".$data);
  37. print_r("\n");
  38. };
  39. // 回调函数
  40. $callback = function ($data) use ($obj){
  41. $ntime = $obj->getTimestamp();
  42. $otime = $obj -> oldTime;
  43. print_r($ntime." ".$data);
  44. print_r("\n");
  45. };
  46. $callbackTime = function ($data) use ($obj){
  47. $dataArr = json_decode($data, true);
  48. $ntime = $obj->getTimestamp();
  49. // $key = $dataArr
  50. // print_r($dataArr["op"]);
  51. // die();
  52. if (!empty($dataArr["table"]))
  53. $key = $dataArr["table"];
  54. elseif(!empty($dataArr["op"]))
  55. $key = $dataArr["op"];
  56. else
  57. $key = "else";
  58. // 上一次时间
  59. if (!empty($key) && !empty($obj -> oldTime[$key]))
  60. $otime = $obj -> oldTime[$key];
  61. else
  62. $otime = $ntime;
  63. // 上次与本次推送时间差,
  64. $lastDiff = $obj->dateToTimestamp($ntime)-$obj->dateToTimestamp($otime);
  65. // print_r($ntime." ($diff) ".$data);
  66. // print_r("\n");
  67. // 本次,本地时间戳与推送数据时间戳的差
  68. if (!empty($dataArr["data"][0]["timestamp"])){
  69. $timestamp = $dataArr["data"][0]["timestamp"];
  70. // if (!empty($dataArr["data"][0]["last_fill_time"])){
  71. // $timestamp = $dataArr["data"][0]["last_fill_time"];
  72. @$diff = $obj->dateToTimestamp($ntime)-$obj->dateToTimestamp($timestamp);
  73. print_r($ntime." ($lastDiff)"." ($diff) ".$data);
  74. print_r("\n");
  75. }else{
  76. print_r($obj->getTimestamp()." ".$data);
  77. print_r("\n");
  78. }
  79. // if (!empty($key) && !empty($obj -> oldTime[$key]))
  80. $obj -> oldTime[$key] = $ntime;
  81. };
  82. /**
  83. * 公共频道 Public Channel
  84. */
  85. $obj = new PublicChannels(Config::$config);
  86. $instrumentId = "BTC-USDC";
  87. $coin = "EOS";
  88. //产品频道
  89. //$obj->subscribe($callbackTime,'{"channel":"instruments","instType":"SPOT"}');
  90. //行情频道
  91. //$obj->subscribe($callbackTime,'{"channel":"tickers","instId":"OKT-USDT"}');
  92. //持仓总理频道
  93. //$obj->subscribe($callbackTime,'{"channel":"open-interest","instId":"ADA-USDT-SWAP"}');
  94. //k线频道
  95. //$obj->subscribe($callbackTime,'{"channel" :"candle1m","instId" :"BTC-USDT"}');
  96. //交易频道
  97. //$obj->subscribe($callbackTime,'{"channel":"trades","instId":"PEOPLE-USDT-SWAP"}');
  98. //预估交割/行权价格频道
  99. //$obj->subscribe($callbackTime,'{"channel":"estimated-price","instType":"FUTURES","uly":"BTC-USD"}');
  100. //标记价格频道
  101. //$obj->subscribe($callbackTime,'{"channel":"mark-price","instId":"ETH-USDT-SWAP"}');
  102. //标记价格K线频道
  103. //$obj->subscribe($callbackTime,'{"channel":"mark-price-candle1D","instId":"BTC-USD-SWAP"}');
  104. //限价频道
  105. //$obj->subscribe($callbackTime,'{"channel":"price-limit","instId":"BTC-USD-SWAP"}');
  106. //深度频道
  107. // $obj->subscribe($callbackTime,'{"channel":"bbo-tbt","instId":"CSPR-USDT"}');
  108. //期权定价频道
  109. //$obj->subscribe($callbackTime,'{"channel":"opt-summary","uly":"BTC-USD"}');
  110. //资金费率频道
  111. //$obj->subscribe($callbackTime,'{"channel":"funding-rate","instId":"BTC-USD-SWAP"}');
  112. //指数K线频道
  113. //$obj->subscribe($callbackTime,'{"channel":"index-candle1m","instId":"BTC-USDT"}');
  114. //指数行情频道
  115. //$obj->subscribe($callbackTime,'{"channel":"index-tickers","instId":"BTC-USD"}');
  116. //Status 频道
  117. //$obj->subscribe($callbackTime,'{"channel":"status"}');
  118. /**
  119. * 私有频道 Private Channel
  120. */
  121. $obj = new PrivateChannels(Config::$config);
  122. //账户频道
  123. //$obj->subscribe($callbackTime,'{"channel":"account","ccy":"OP"}');
  124. //持仓频道
  125. // $obj->subscribe($callbackTime,'{"channel":"positions","instType":"ANY"}');
  126. //账户余额和持仓频道
  127. //$obj->subscribe($callbackTime,'{"channel":"balance_and_position"}');
  128. //订单频道
  129. $obj->subscribe($callbackTime,'{"channel":"orders","instType":"SWAP","instId":"SHIB-USDT-SWAP"}');
  130. //策略委托订单频道
  131. //$obj->subscribe($callbackTime,'{"channel":"orders-algo","instType":"SWAP","uly":"BTC-USDT","instId":"BTC-USDT-SWAP"}');
  132. //$obj->subscribe($callbackTime,'{"channel":"algo-advance","instType":"SWAP","instId":"","algoId":""}');
  133. /**
  134. * 交易 Trade
  135. */
  136. $obj = new TradeChannels(Config::$config);
  137. //下单
  138. //$obj->subscribe($callbackTime,'{"id": "2095109", "op": "order", "args": [{"side": "buy", "instId": "SHIB-USDT","ccy":"", "tdMode": "cash", "ordType": "limit", "px": "0.00001474", "sz": "1000000","clOrdId":"","posSide":""}]}');
  139. //批量下单
  140. //$obj->subscribe($callbackTime,'{"id": "1512", "op": "batch-orders", "args": [{"side": "buy", "instId": "BTC-USDT", "tdMode": "isolated", "ordType": "limit", "px": "19777", "sz": "1"},{"side": "buy", "instId": "BTC-USDT", "tdMode": "isolated", "ordType": "limit", "px": "19778", "sz": "1"}]}');
  141. //撤单
  142. //$obj->subscribe($callbackTime,'{"id": "1512", "op": "cancel-order", "args": [{"instId": "BTC-USDT", "ordId": "260420821332664322"}]}');
  143. //批量撤单
  144. //$obj->subscribe($callbackTime,'{"id": "1512", "op": "batch-cancel-orders", "args": [{"instId": "BTC-USD-SWAP", "ordId": "298142095416631303"},{"instId": "BTC-USD-SWAP", "clOrdId": "MUMU123"}]}');
  145. //改单
  146. //$obj->subscribe($callbackTime,'{"id": "1512", "op": "amend-order", "args": [{"instId": "LTC-BTC", "ordId": "302766903026655232","newSz":"4","newPx":""}]}');
  147. //批量改单
  148. //$obj->subscribe($callbackTime,'{"id": "1512", "op": "amend-order", "args": [{"instId": "BTC-USDT", "ordId": "260420821332664322","newSz":"2"},{"instId": "BTC-USDT", "ordId": "260420821332664323","newSz":"2"}]}');