Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- <?php
- set_time_limit(0);
- function trader($id,$data)
- {
- $ch = curl_init( 'http://investor.moex.com/ru/statistics/2016/portfolio.aspx/GetPortfolioData' );
- $payload = json_encode( array( "traderId"=> $id, "date"=> $data, "tableId"=>"6" ) );
- curl_setopt( $ch, CURLOPT_POSTFIELDS, $payload );
- curl_setopt( $ch, CURLOPT_HTTPHEADER, array('Content-Type:application/json'));
- curl_setopt( $ch, CURLOPT_RETURNTRANSFER, true );
- $result = curl_exec($ch);
- curl_close($ch);
- $dec=json_decode($result);
- return json_decode($dec->d);
- }
- function post($url,$data,$cookies=FALSE)
- {
- $ch = curl_init();
- curl_setopt($ch, CURLOPT_URL, $url);
- if ($cookies!==FALSE) curl_setopt($ch, CURLOPT_COOKIE, $cookies);
- curl_setopt($ch, CURLOPT_POST, 1);
- curl_setopt($ch, CURLOPT_POSTFIELDS, $data);
- curl_setopt($ch, CURLOPT_HEADER, 1);
- curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
- curl_setopt($ch, CURLOPT_TIMEOUT, 0);
- curl_setopt($ch, CURLOPT_CONNECTTIMEOUT, 0);
- curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, 0);
- curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, 0);
- $result = curl_exec($ch);
- if (!$result) return curl_error($ch);
- return $result;
- }
- $data=array();
- $date='20161116';
- $date2='2016-11-16';
- $page=1;
- $traders=array();
- while (true)
- {
- echo "page $page\n";
- $tmp=post('http://investor.moex.com/ru/statistics/2016/default.aspx','act=&sby=8&nick=&data-contype-id-1=&data-contype-id-2=&data-contype-id-3=&pge='.$page.'&type=1&date='.$date.'&gr=12&snick=');
- if (!preg_match_all('#trader2016\?user\=(\d+)#',$tmp,$tt)) break;
- $page++;
- $traders=array_unique(array_merge($traders,$tt[1]));
- echo "count ".count($traders)."\n";
- //var_dump($traders);
- //break;
- }
- foreach ($traders as $trader)
- {
- echo "Trader: $trader\n";
- $tdata=trader($trader,$date2);
- foreach ($tdata as $td)
- {
- if (empty($data[trim($td->seccode)]))
- {
- $data[trim($td->seccode)]['plus']=0;
- $data[trim($td->seccode)]['minus']=0;
- }
- $pos=substr($td->pos,0,strpos($td->pos,' ('));
- if ($pos>0) $data[trim($td->seccode)]['plus']+=$pos;
- elseif ($pos<0) $data[trim($td->seccode)]['minus']+=$pos;
- echo $td->seccode.": ".$pos."\n";
- }
- }
- echo "\n-----------------------------\n";
- foreach ($data as $s=>$v)
- {
- echo "$s\t".$v['plus']."\t".$v['minus']."\n";
- }
- ?>
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement