念念不忘跟狱,必有回響 - 為速度而生的開源量化交易系統(tǒng)來了

作者是知乎https://www.zhihu.com/people/dongkeren/posts董可人

Github連接https://github.com/taurusai/kungfu

的英文功夫Taurus.ai楚昭。團隊專為量化交易者設計的低延遲交易執(zhí)行系統(tǒng)功夫想要解決兩個核心問題:

交易數據實時存儲 - 為了追求交易速度伸刃,很多情況下交易者不得不放棄存儲功能以換取更高的執(zhí)行速度拴驮,這給盤后分析帶來很大困難庸汗,使分析缺乏必要的數據支持惑灵。

交易延遲分析及優(yōu)化 - 交易者缺乏測量交易延遲的標準化工具山上,關于延遲的統(tǒng)計數據往往只能憑感覺估算,在缺乏可靠的數據采集手段的情況下英支,優(yōu)化工作變得更加艱難佩憾。

針對這兩個問題,功夫在系統(tǒng)架構上做了特別的設計潭辈,目前系統(tǒng)分成以下三個模塊:

易筋經(yijinjing) - 專為金融交易設計的時間序列內存數據庫鸯屿,提供納秒級時間精度,可落地交易相關的全部數據把敢。

詠春(wingchun) - 策略執(zhí)行引擎寄摆,提供C ++及Python(2.7)開發(fā)接口,利用易筋經特性修赞,詠簧還提供一系列交易數據分析工具婶恼。

長拳(longfist) - 交易數據標準化定義及轉換器,支持靈活對接不同交易柜臺柏副。

功夫在系統(tǒng)設計上支持任意柜臺的對接(涵蓋中國所有股票勾邦,期貨市場),目前功夫開源版僅提供CTP和XTP柜臺對接的實現(xiàn)割择。如果需要接入更多柜臺請通過Taurus.ai官網聯(lián)系我們眷篇。開發(fā)者也可根據長拳標準自行開發(fā)新的柜臺接口。

使用初次柯林斯觀看我們的視頻教程荔泳。

python策略開發(fā)請參考python策略開發(fā)快速入門蕉饼,python策略api文檔

C ++策略開發(fā)請參考C ++策略開發(fā)快速入門C ++策略api文檔

常見問題請參考問答玛歌。

想要在自己的機器上直接運行功夫(不用搬運工)參考可以環(huán)境準備

介紹更多請關注知乎專欄硅商沖擊昧港。

運行策略運行策略

功夫提供C ++及Python(2.7)策略開發(fā)接口,相關樣例演程程序可在以下代碼路徑找到:

$ cd kungfu/wingchun/strategy/cpp_demo$ cd kungfu/wingchun/strategy/py_demo

功夫默認安裝在名為bruce的用戶下支子,策略程序應以bruce身份運行以確保得到正確的文件讀取權限(sudo -u bruce)创肥。以py_demo / band_demo_strategy.py為例,使用以下方式運行策略,需要注意-n參數指定的策略名稱叹侄,是交易系統(tǒng)內對該策略的唯一標識巩搏,所有相關的交易記錄都通過該標識關聯(lián):

$ sudo -u bruce wingchun strategy -n band_demo -p /your/path/band_demo_strategy.py

C ++版本的策略Demo默認不編譯,如需編譯可參考如下步驟:

$ mkdir cpp_build$ cd cpp_build$ cmake ../../wingchun/strategy/cpp_demo$ make

C ++ Demo編譯后生成可執(zhí)行文件圈膏,運行策略不是通過wingchun命令而是直接執(zhí)行:

$ ./kungfu_strategy_demo

策略運行期間及結束后塔猾,可以使用wingchun命令查看策略運行狀態(tài):

$ wingchun help pos$ wingchun help report

系統(tǒng)運行信息

系統(tǒng)運行期間,可使用如下命令查看系統(tǒng)后臺信息稽坤,其中包括了系統(tǒng)所有進程的PID丈甸,啟動和換日時間等信息:

示例中 '的Pid' 項表示現(xiàn)在 '分頁' 內存數據服務正在運行, 'MD' 行情服務正在運行尿褪, 'TD' 交易服務正在運行睦擂,還有一個策略名為 'demo_test' 的策略正在運行。

$ yjj status{'Client': {'MDEngineCTP': {'hash_code': 1788426942,'is_strategy': False,'is_writing': True,'pid': 15493,'registerTime': 1512726147926855797,'rid_start': -1,'trade_engine_vec': [],'users': [4]},'Pid': {15423: ['paged'],15493: ['MDEngineCTP_R', 'MDEngineCTP', 'RAW_MDEngineCTP'],15494: ['TDEngineCTP_SR','TDEngineCTP','SEND_TDEngineCTP','RAW_TDEngineCTP'],16664: ['demo_test', 'demo_test_R']},'Task': ('running',10000,{'KfController': {'engine_ends': ['2017-12-09 16:30:00'],'engine_starts': ['2017-12-09 09:15:00'],'switch_day': '2017-12-09 17:00:00'},'PidCheck': {},'TempPage': {}}),'Time': '2017-12-08 17:52:58'

日志

系統(tǒng)日志存放在/ shared / kungfu / log目錄下杖玲。

日志文件日志內容功能

page_engine.log內存數據庫日志記錄內存數據庫及其他功能使用內存數據庫的情況

engine_md.log行情服務項日志記錄行情服務啟動和運行情況

engine_trade.log交易服務項日志記錄交易服務啟動和執(zhí)行情況

戰(zhàn)略/ xxx.log策略運行日志記錄策略的運行情況

wingchun / xxx.log行情和交易服務的分接口詳細日志分接口記錄了行情和交易服務的詳細日志

內存數據庫數據查看與導出工具

系統(tǒng)提供了內存數據庫查看和導出工具:

內存數據庫查看工具幫助

$ yjj journal -hOptions:-h [ --help ]? ? ? ? ? ? ? ? ? ? ? ? Help screen-n [ --name ] arg? ? ? ? ? ? ? ? ? ? Journal Name-p [ --page ]? ? ? ? ? ? ? ? ? ? ? ? Just Page Header-v [ --verify ]? ? ? ? ? ? ? ? ? ? ? Verify hash code-k [ --keep ]? ? ? ? ? ? ? ? ? ? ? ? keep listening-t [ --time ]? ? ? ? ? ? ? ? ? ? ? ? time visualized-d [ --detail ]? ? ? ? ? ? ? ? ? ? ? data details-c [ --current ]? ? ? ? ? ? ? ? ? ? ? start from current-l [ --length ] arg (=20)? ? ? ? ? ? Char num of frame data to print-m [ --msgtype ] arg? ? ? ? ? ? ? ? ? Message type printed, -eg: -m 10,11-r [ --rmsgtype ] arg? ? ? ? ? ? ? ? Message type not printed, -eg: -r 10,11-s [ --start_time ] arg (=20000101-13:30:00)start time (%Y%m%d-%H:%M:%S)-e [ --end_time ] arg (=20200101-00:00:00)end time (%Y%m%d-%H:%M:%S)

查看內存數據庫中指定信息:

$ yjj journal -n TD_CTP -s 20171114-14:40:00 -e 20171114-14:45:00 -d -t -m 206StartTime:? ? ? 20171114-14:40:00EndTime:? ? ? ? 20171114-14:45:00Folder: /shared/kungfu/journal/TD/CTP/ShortName:? ? ? TD_CTPMsgType to Print: 206[0] (st)1 (so)1 (na)1510641601378381049 (en)0 (vn)20171114-14:40:01 (fl)302 (dl)264 (hl)38 (hs)4109164010 (mt)206 (lf)1 (id)8000122 (er)0 (cn)9999078622BrokerID: (c11) 9999UserID: (c16) 078622InvestorID: (c19) 078622BusinessUnit: (c21)InstrumentID: (c31) rb1801OrderRef: (c21) 124ExchangeID: (c11) SHFETradeID: (c21)? ? ? 125394OrderSysID: (c31)? ? ? 196229ParticipantID: (c11) 9999ClientID: (c21) 9999078602Price:? (d) 3946Volume:? (i) 1TradingDay: (c13) 20171114TradeTime: (c13) 14:40:00Direction:? (t) SellOffsetFlag:? (t) OpenHedgeFlag:? (t) Speculation

內存數據庫導出工具幫助:

$ yjj dump -husage: journal_dumper [-h] [-n NAME] [-m MSG_TYPE] [-o OUTPUT] [-v] [-p] [-s START] [-e END]optional arguments:-h, --help? ? ? ? ? ? show this help message and exit-n NAME, --name NAME? journal name-m MSG_TYPE, --msg_type MSG_TYPEmsg type to dump-o OUTPUT, --output OUTPUToutput file name-v, --visualize? ? ? visualize the time-p, --print_out? ? ? print to console while dumping-s START, --start STARTstart time (&Y&m&d-&H:&M:&S)-e END, --end END? ? end time (&Y&m&d-&H:&M:&S)

導出內存數據庫中指定信息:

$ yjj dump -n MD_CTP -s 20171114-09:30:00 -e 20171114-16:00:00 -m 101 -o md_20171114.csv$ head -n 3 md_20171114.csvTradingDay(c13),InstrumentID(c31),ExchangeID(c9),ExchangeInstID(c64),LastPrice(d),PreSettlementPrice(d),PreClosePrice(d),PreOpenInterest(d),OpenPrice(d),HighestPrice(d),LowestPrice(d),Volume(i),Turnover(d),OpenInterest(d),ClosePrice(d),SettlementPrice(d),UpperLimitPrice(d),LowerLimitPrice(d),PreDelta(d),CurrDelta(d),UpdateTime(c13),UpdateMillisec(i),BidPrice1(d),BidVolume1(i),AskPrice1(d),AskVolume1(i),BidPrice2(d),BidVolume2(i),AskPrice2(d),AskVolume2(i),BidPrice3(d),BidVolume3(i),AskPrice3(d),AskVolume3(i),BidPrice4(d),BidVolume4(i),AskPrice4(d),AskVolume4(i),BidPrice5(d),BidVolume5(i),AskPrice5(d),AskVolume5(i),h_nano(l),h_msg_type(i),h_request_id(i),h_source(i),h_is_last(i),h_error_id(i),j_name(s)20171114,rb1801,,,3941.0,3860.0,3894.0,1794552.0,3900.0,3950.0,3873.0,821770,32084979660.0,1697634.0,1.79769313486e+308,1.79769313486e+308,4130.0,3589.0,1.79769313486e+308,1.79769313486e+308,14:19:08,500,3941.0,24,3942.0,340,1.79769313486e+308,0,1.79769313486e+308,0,1.79769313486e+308,0,1.79769313486e+308,0,1.79769313486e+308,0,1.79769313486e+308,0,1.79769313486e+308,0,1.79769313486e+308,0,1510640349349309138,101,-1,1,1,0,MD_CTP20171114,rb1801,,,3941.0,3860.0,3894.0,1794552.0,3900.0,3950.0,3873.0,821772,32085058480.0,1697634.0,1.79769313486e+308,1.79769313486e+308,4130.0,3589.0,1.79769313486e+308,1.79769313486e+308,14:19:09,0,3941.0,23,3942.0,341,1.79769313486e+308,0,1.79769313486e+308,0,1.79769313486e+308,0,1.79769313486e+308,0,1.79769313486e+308,0,1.79769313486e+308,0,1.79769313486e+308,0,1.79769313486e+308,0,1510640349845391063,101,-1,1,1,0,MD_CTP

示例中-m參數為信息分類標記顿仇,常用的信息分類如下表,全部信息分類可查看源代碼/longfist/longfist/LFConstants.h

名稱值含義

MSG_TYPE_LF_MD101蜱行情數據摆马,在雜志/ MD目錄下相應接口目錄下數據庫文件中

MSG_TYPE_LF_BAR_MD110酒吧行情數據臼闻,在雜志/ MD目錄下相應接口目錄下數據庫文件中

MSG_TYPE_LF_QRY_POS201查詢持倉請求數據,在雜志/策略/相應策略數據庫文件中

MSG_TYPE_LF_RSP_POS202查詢持倉返回數據囤采,在雜志/ TD /相應接口目錄下數據庫文件中

MSG_TYPE_LF_ORDER204下單請求數據述呐,在雜志/策略/相應策略數據庫文件中

MSG_TYPE_LF_RTN_ORDER205下單回報數據,在雜志/ TD /相應接口目錄下數據庫文件中

MSG_TYPE_LF_RTN_TRADE206成交回報數據蕉毯,在雜志/ TD /相應接口目錄下數據庫文件中

MSG_TYPE_LF_ORDER_ACTION207撤單請求數據乓搬,在雜志/策略/相應策略數據庫文件中

MSG_TYPE_LF_RSP_ACCOUNT209撤單回報數據,在雜志/ TD /相應接口目錄下數據庫文件中

統(tǒng)計分析工具

統(tǒng)計分析工具幫助:

$ wingchun report -hOptions:-h [ --help ]? ? ? ? ? ? ? ? ? ? ? ? Help screen-n [ --name ] arg? ? ? ? ? ? ? ? ? ? strategy name-l [ --list ]? ? ? ? ? ? ? ? ? ? ? ? list all sessions with index-o [ --order ]? ? ? ? ? ? ? ? ? ? ? ? show orders-t [ --trade ]? ? ? ? ? ? ? ? ? ? ? ? show trades-a [ --aggregate ]? ? ? ? ? ? ? ? ? ? show aggregated latency stat-d [ --detail ]? ? ? ? ? ? ? ? ? ? ? list order detail nanos-i [ --index ] arg (=-1)? ? ? ? ? ? ? session index-s [ --start_time ] arg (=20000101-13:30:00)start time (%Y%m%d-%H:%M:%S)-e [ --end_time ] arg (=20200101-00:00:00)end time (%Y%m%d-%H:%M:%S)

委托記錄:

$ wingchun report -n band_demo -o+-----------------------------------------------------------------------------------------------------------------+|? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? Kungfu order latency report? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? |+-----------+-----------------+--------------+--------------+----------+----------+----------+--------------+-----+| order_id? | rcv_time? ? ? ? | TTT-b(ns)? ? | TTT-a(ns)? ? | ticker? | price? ? | volume? | offset? ? ? | dir |+-----------+-----------------+--------------+--------------+----------+----------+----------+--------------+-----+|? ? 8000001|20171204-11:01:27|? ? ? ? ? 5779|? ? ? ? 43404|? ? rb1801|? ? 3967.0|? ? ? ? 1|? ? ? ? ? Open|? Buy|+-----------+-----------------+--------------+--------------+----------+----------+----------+--------------+-----+|? ? 8000002|20171204-11:01:28|? ? ? ? ? 5297|? ? ? ? 51800|? ? rb1801|? ? 3967.0|? ? ? ? 1|? ? ? ? ? Open|? Buy|+-----------+-----------------+--------------+--------------+----------+----------+----------+--------------+-----+|? ? 8000003|20171204-11:01:29|? ? ? ? ? 4965|? ? ? ? 45227|? ? rb1801|? ? 3967.0|? ? ? ? 1|? ? ? ? ? Open|? Buy|+-----------+-----------------+--------------+--------------+----------+----------+----------+--------------+-----+|? ? 8000004|20171204-11:01:31|? ? ? ? ? 6469|? ? ? ? 51424|? ? rb1801|? ? 3967.0|? ? ? ? 1|? ? ? ? ? Open|? Buy|+-----------+-----------------+--------------+--------------+----------+----------+----------+--------------+-----+|? ? 8000005|20171204-11:01:31|? ? ? ? ? 7800|? ? ? ? 52847|? ? rb1801|? ? 3967.0|? ? ? ? 1|? ? ? ? ? Open|? Buy|+-----------+-----------------+--------------+--------------+----------+----------+----------+--------------+-----+

成交記錄:

$ wingchun report -n band_demo -t+-------------------------------------------------------------------------------------------+|? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? Kungfu trade latency report? ? ? ? ? ? ? ? ? ? ? ? ? ? ? |+-----------+---+-----------------+--------------+----------+---------+----------+----------+| order_id? |idx| rcv_time? ? ? ? | OTR(ns)? ? ? | ticker? | t_time? | t_price? | t_volume |+-----------+---+-----------------+--------------+----------+---------+----------+----------+|? ? 8000000|? 1|20171114-14:28:03|? ? ? 64549194|? ? rb1801| 14:28:03|? ? 3938.0|? ? ? ? 1|+-----------+---+-----------------+--------------+----------+---------+----------+----------+|? ? 8000000|? 2|20171114-14:41:32|? 808582415662|? ? rb1801| 14:41:31|? ? 3946.0|? ? ? ? 1|+-----------+---+-----------------+--------------+----------+---------+----------+----------+|? ? 8000001|? 1|20171114-14:28:08|? ? ? 66985968|? ? rb1801| 14:28:07|? ? 3939.0|? ? ? ? 1|+-----------+---+-----------------+--------------+----------+---------+----------+----------+|? ? 8000001|? 2|20171114-14:42:11|? 843622609364|? ? rb1801| 14:42:11|? ? 3948.0|? ? ? ? 1|+-----------+---+-----------------+--------------+----------+---------+----------+----------+

延遲統(tǒng)計:

$ wingchun report -n band_demo -a+------------------------------------------------------------------------------------------------------+|? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? Kungfu latency statistics? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? |+------+-------------------+--------------+--------------+--------------+--------------+-------+-------+| type | description? ? ? | mean(ns)? ? | std(ns)? ? ? | min(ns)? ? ? | max(ns)? ? ? | valid | total |+------+-------------------+--------------+--------------+--------------+--------------+-------+-------+| TTT? | (tick-to-trade)? |? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? |+------+-------------------+--------------+--------------+--------------+--------------+-------+-------+|? ? ? | before API? ? ? ? |? ? ? ? ? 4323|? 3.88215e+03|? ? ? ? ? 2361|? ? ? ? 52612|? 1000|? 1000|+------+-------------------+--------------+--------------+--------------+--------------+-------+-------+|? ? ? | after API? ? ? ? |? ? ? ? 50880|? 1.61630e+05|? ? ? ? 35586|? ? ? 5064745|? 1000|? 1000|+------+-------------------+--------------+--------------+--------------+--------------+-------+-------+| STR? | strategy calc? ? |? ? ? ? ? 1164|? 2.43951e+03|? ? ? ? ? 401|? ? ? ? 47234|? 1000|? 1000|+------+-------------------+--------------+--------------+--------------+--------------+-------+-------+| OTR? | (order-to-return) |? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? |+------+-------------------+--------------+--------------+--------------+--------------+-------+-------+|? ? ? | rsp order insert? |? ? ? ? ? ? 0|? 0.00000e+00|? ? ? ? ? ? 0|? ? ? ? ? ? 0|? ? ? 0|? 1000|+------+-------------------+--------------+--------------+--------------+--------------+-------+-------+|? ? ? | first rtn order? |? ? ? 39174735|? 1.97535e+07|? ? ? 30131196|? ? 210217560|? 1000|? 1000|+------+-------------------+--------------+--------------+--------------+--------------+-------+-------+|? ? ? | first rtn trade? |? ? ? ? ? ? 0|? 0.00000e+00|? ? ? ? ? ? 0|? ? ? ? ? ? 0|? ? ? 0|? 1000|+------+-------------------+--------------+--------------+--------------+--------------+-------+-------+|? ? ? | all rtn trade? ? |? ? ? ? ? ? 0|? 0.00000e+00|? ? ? ? ? ? 0|? ? ? ? ? ? 0|? ? ? 0|? 1000|+------+-------------------+--------------+--------------+--------------+--------------+-------+-------+

注:以上樣例主要展示功能性代虾,延遲具體數字在開發(fā)機上得到进肯,不具備參考性關于如何得到更優(yōu)的延遲數字,稍后會添加相關文檔說明棉磨。

持倉設置工具

交易系統(tǒng)支持持倉導出為csv文件以及csv文件設置為持倉江掩。

查看持倉設置工具幫助:

$ wingchun pos -hOptions:-h [ --help ]? ? ? ? Help screen-t [ --type ] arg? ? type ("set"/"get")-s [ --source ] arg? source index (eg CTP=1)-n [ --name ] arg? ? strategy name-o [ --output ]? ? ? output to file-r [ --raw ]? ? ? ? ? print raw data-d [ --detail ]? ? ? print user info details-l [ --list ]? ? ? ? list all files-j [ --json ] arg? ? json_file-c [ --csv ] arg? ? ? csv_file format:ticker, net_tot, net_yd, long_tot, long_yd, short_tot,short_yd

導出持倉和使用CSV文件設置持倉:

$ wingchun pos -t get -n band_demo -s 1 -o -c band_demo.csv=========== (name) band_demo (source)14 =========nano:1514453987908204897 (20171228-17:39:47)ok:Yes-------rb1805(net)0,0(long)6,6(short)6,6(net_c)0,0(long_c)0,0(short_c)0,0-------printed to csv file: band_demo.csv-------$ wingchun pos -t set -n band_demo -s 1 -c band_demo.csvset pos from csv file: band_demo.csv

版本本

0.0.1:初始化版本

0.0.2:

修正了PosHandler的一個更新情況的潛在風險

修正沒有close的文句句

修正了memcpy的潛在越界問題

編譯選項優(yōu)化為O3

0.0.3:

增強wingchun report中的延遲統(tǒng)計工具,新增調用API前的系統(tǒng)內耗時(API之前的TTT)

0.0.4:

增加FeeHandler模??塊乘瓤,增加策略中的Pnl實時計算支持

0.0.5:

增加對股票交易柜臺xtp的支持

在系統(tǒng)docker中增加了numa(xtp的依賴)环形,不希望更新docker的用戶可以通過yum install numactl來手動安裝

貢獻開發(fā)

開發(fā)文檔即將上線,請關注Taurus.ai官網.QQ交流群312745666馅扣,入群問題答案:taurus.ai

?著作權歸作者所有,轉載或內容合作請聯(lián)系作者
  • 序言:七十年代末斟赚,一起剝皮案震驚了整個濱河市着降,隨后出現(xiàn)的幾起案子差油,更是在濱河造成了極大的恐慌,老刑警劉巖,帶你破解...
    沈念sama閱讀 222,807評論 6 518
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件蓄喇,死亡現(xiàn)場離奇詭異发侵,居然都是意外死亡,警方通過查閱死者的電腦和手機妆偏,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 95,284評論 3 399
  • 文/潘曉璐 我一進店門刃鳄,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人钱骂,你說我怎么就攤上這事叔锐。” “怎么了见秽?”我有些...
    開封第一講書人閱讀 169,589評論 0 363
  • 文/不壞的土叔 我叫張陵愉烙,是天一觀的道長。 經常有香客問我解取,道長步责,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 60,188評論 1 300
  • 正文 為了忘掉前任禀苦,我火速辦了婚禮蔓肯,結果婚禮上,老公的妹妹穿的比我還像新娘振乏。我一直安慰自己蔗包,他們只是感情好,可當我...
    茶點故事閱讀 69,185評論 6 398
  • 文/花漫 我一把揭開白布昆码。 她就那樣靜靜地躺著气忠,像睡著了一般。 火紅的嫁衣襯著肌膚如雪赋咽。 梳的紋絲不亂的頭發(fā)上旧噪,一...
    開封第一講書人閱讀 52,785評論 1 314
  • 那天,我揣著相機與錄音脓匿,去河邊找鬼淘钟。 笑死,一個胖子當著我的面吹牛陪毡,可吹牛的內容都是我干的米母。 我是一名探鬼主播,決...
    沈念sama閱讀 41,220評論 3 423
  • 文/蒼蘭香墨 我猛地睜開眼毡琉,長吁一口氣:“原來是場噩夢啊……” “哼铁瞒!你這毒婦竟也來了?” 一聲冷哼從身側響起桅滋,我...
    開封第一講書人閱讀 40,167評論 0 277
  • 序言:老撾萬榮一對情侶失蹤慧耍,失蹤者是張志新(化名)和其女友劉穎身辨,沒想到半個月后,有當地人在樹林里發(fā)現(xiàn)了一具尸體芍碧,經...
    沈念sama閱讀 46,698評論 1 320
  • 正文 獨居荒郊野嶺守林人離奇死亡煌珊,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內容為張勛視角 年9月15日...
    茶點故事閱讀 38,767評論 3 343
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現(xiàn)自己被綠了泌豆。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片定庵。...
    茶點故事閱讀 40,912評論 1 353
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖踪危,靈堂內的尸體忽然破棺而出蔬浙,到底是詐尸還是另有隱情,我是刑警寧澤贞远,帶...
    沈念sama閱讀 36,572評論 5 351
  • 正文 年R本政府宣布敛滋,位于F島的核電站,受9級特大地震影響兴革,放射性物質發(fā)生泄漏绎晃。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點故事閱讀 42,254評論 3 336
  • 文/蒙蒙 一杂曲、第九天 我趴在偏房一處隱蔽的房頂上張望庶艾。 院中可真熱鬧,春花似錦擎勘、人聲如沸咱揍。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,746評論 0 25
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽煤裙。三九已至,卻和暖如春噪漾,著一層夾襖步出監(jiān)牢的瞬間硼砰,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 33,859評論 1 274
  • 我被黑心中介騙來泰國打工欣硼, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留题翰,地道東北人。 一個月前我還...
    沈念sama閱讀 49,359評論 3 379
  • 正文 我出身青樓诈胜,卻偏偏與公主長得像豹障,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子焦匈,可洞房花燭夜當晚...
    茶點故事閱讀 45,922評論 2 361

推薦閱讀更多精彩內容