海龟交易代码java_海龟交易算法,实现量化交易(1)数据获取
今天看到一篇雪球文章叫海龜交易法
大概思路是通過回看20天的盤中最高和10天內盤中最低,結合前一天收盤價制定的交易策略。
想自己編程試試看。
第一步是取得數據,因為一直用雪球,感覺上可以從雪球上獲取數據。于是打開chrome用F12找到雪球日K里面的數據源,和我預期的一致,是JSON格式的。那就好辦了,把URL粘貼出來
https://xueqiu.com/stock/forchartk/stocklist.json?symbol=SH600000&period=1day&type=after&begin=1434173957486&end=1465709957486&_=1465709957486
一開始想要用linux shell直接執行wget獲取,但發現不行,雪球設置了必須登錄才能獲取數據。
Linux shell顯然是不支持登錄后下載的,必須考慮用其他語言實現,找了一圈,php似乎是最簡單的,利用CURL包可以模擬瀏覽器操作。
檢查了雪球的登錄界面,找到了登錄的URL https://xueqiu.com/user/login , 登錄需要提供參數,參數名稱花了一段時間,一開始直接用username和password,發現不行,于是去截包,發現用手機登錄應該是telephone和password,登錄代碼如下
$curl = curl_init();
$cookie_jar = tempnam('./tmp','cookie');
curl_setopt($curl, CURLOPT_URL,'https://xueqiu.com/user/login');
curl_setopt($curl, CURLOPT_POST, 1);
$request = 'telephone=$phoneno&password=$password';
curl_setopt($curl, CURLOPT_POSTFIELDS, $request);
curl_setopt($curl, CURLOPT_COOKIEJAR, $cookie_jar);
curl_setopt($curl, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($curl, CURLOPT_HEADER, false);
curl_setopt($curl, CURLOPT_NOBODY, false);
curl_setopt($curl, CURLOPT_FOLLOWLOCATION, 1);
$content = curl_exec($curl);
print($cookie_jar);
print($content);
Bingo 登錄成功>接下來用Curl取剛才的那個URL順利獲得的JSON.
接下來是處理URL動態參數,分析這個URL:https://xueqiu.com/stock/forchartk/stocklist.json?symbol=SH600000&period=1day&type=after&begin=1434173957486&end=1465709957486&_=1465709957486
可以看到前面https://xueqiu.com/stock/forchartk/stocklist.json?symbol=SH600000 這一段大概是取SH600000這個股票,后面的period=1day 就是按天取數據,type=after 默認應該是后復權,begin end 和&_參數看起來像是unix 時間戳。但仔細一看好像后面多了3位數字,不知道是干什么的,試試都加上000看看
于是有了這段代碼:
$ts=time();
$start_date=strtotime("-1 week");
$url='https://xueqiu.com/stock/forchartk/stocklist.json?symbol='.$stockno.'&period='.$period.'&type='.$type.'&begin='.$start_date.'000&end='.$ts.'000'.'&_='.$ts.'000';
把這兩段代碼略作整合,得到了一個function 如下,默認取當前日期一周內的數據。
Function getStock($stockno,$type,$period){
print('printing:'.$stockno);
$curl = curl_init();
$cookie_jar = tempnam('./tmp','cookie');
curl_setopt($curl, CURLOPT_URL,'https://xueqiu.com/user/login');
curl_setopt($curl, CURLOPT_POST, 1);
$request = 'telephone=$phoneno&password=$password';
curl_setopt($curl, CURLOPT_POSTFIELDS, $request);
curl_setopt($curl, CURLOPT_COOKIEJAR, $cookie_jar);
curl_setopt($curl, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($curl, CURLOPT_HEADER, false);
curl_setopt($curl, CURLOPT_NOBODY, false);
curl_setopt($curl, CURLOPT_FOLLOWLOCATION, 1);
$content = curl_exec($curl);
//print($cookie_jar);
//print($content);
curl_close($curl);
$curl2 = curl_init();
$ts=time();
$start_date=strtotime("-1 week");
$url='https://xueqiu.com/stock/forchartk/stocklist.json?symbol='.$stockno.'&period='.$period.'&type='.$type.'&begin='.$start_date.'000&end='.$ts.'000'.'&_='.$ts.'000';
curl_setopt($curl2, CURLOPT_URL, $url);
curl_setopt($curl2, CURLOPT_HEADER, false);
curl_setopt($curl2, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($curl2, CURLOPT_COOKIEFILE, $cookie_jar);
$content = curl_exec($curl2);
print_r($content);
return content;
}
getstock('SH600000','normal','1day');
發現可以獲取,但數據似乎比預期的要多,但也沒什么關系,可能和URL參數的理解有關系,不過沒關系,至少第一步獲取數據的任務完成了.接下來需要將這些數據存儲到數據庫中,以便后續的分析和處理。
與50位技術專家面對面20年技術見證,附贈技術全景圖總結
以上是生活随笔為你收集整理的海龟交易代码java_海龟交易算法,实现量化交易(1)数据获取的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: java静态和动态的区别是什么意思_Ja
- 下一篇: java基本语句回文数实验_实验二