九色国产,午夜在线视频,新黄色网址,九九色综合,天天做夜夜做久久做狠狠,天天躁夜夜躁狠狠躁2021a,久久不卡一区二区三区

打開APP
userphoto
未登錄

開通VIP,暢享免費(fèi)電子書等14項(xiàng)超值服

開通VIP
事件驅(qū)動(dòng)分析基本流程
摘要
事件驅(qū)動(dòng)是一類傳統(tǒng)的投資策略,其將離散化的事件時(shí)間對齊,來看其是否具有的超額收益。這里所說的事件可以是公告,如業(yè)績預(yù)告,定增公告,高轉(zhuǎn)送等,也可以是技術(shù)指標(biāo),如CCI小于-200,DEA穿0等等。本文旨在完成一個(gè)簡易的事件驅(qū)動(dòng)分析基本流程,以及由事件驅(qū)動(dòng)分析轉(zhuǎn)化為投資策略的一些思考。
xxxxxxxxxx9
1
import pandas as pd
2
import numpy as np
3
import datetime
4
from dateutil.parser import parse
5
import scipy.stats as ss
6
import matplotlib.pyplot as plt
7
from CAL.PyCAL import *
8
cal = Calendar('China.SSE')
9
font.set_size(15)
一、事件列表獲取
首先我們要獲取事件數(shù)據(jù),如下調(diào)用業(yè)績預(yù)告API,對于事件分析來說,一定要知道的是股票代碼和事件發(fā)生的時(shí)間字段,保留forecastType字段,方便以后對不同業(yè)績預(yù)告做分組分析。
xxxxxxxxxx8
1
def get_events(begin_date,end_date,universe):
2
events = DataAPI.FdmtEfGet(secID=universe,reportType=u"",forecastType=u"",publishDateBegin=begin_date,
3
publishDateEnd=end_date,field=u"secID,actPubtime,forecastType",pandas="1")
4
events['actPubtime'] = events['actPubtime'].map(lambda x : x[0:10] if cal.isBizDay(x) else cal.advanceDate(x[0:10], '-1B',BizDayConvention.Unadjusted).strftime('%Y-%m-%d'))
5
events = events[events['actPubtime'] < parse(end_date).strftime('%Y-%m-%d')]
6
events['secID_actPubtime'] = events['secID'] +'_'+ events['actPubtime']
7
events = events.drop_duplicates()
8
return events
xxxxxxxxxx1
1
events = get_events('20080101','20160520',set_universe('A'))
二、行情數(shù)據(jù)獲取
事件分析需要用到一個(gè)窗口內(nèi)的行情數(shù)據(jù),但通過離散的時(shí)間點(diǎn)反推拿數(shù)據(jù)調(diào)用API太多,并且也是會(huì)冗余的。故我們先將所有可能用到的行情數(shù)據(jù)全部拿出,生產(chǎn)一張日期-股票的二維表。
xxxxxxxxxx10
1
def get_quotation(start_date,end_date,universe):
2
df_eq = pd.DataFrame()
3
for i in range(30,len(universe),30):
4
df_tmp = DataAPI.MktEqudAdjGet(secID=universe[i-30:i],beginDate=start_date,endDate=end_date,
5
field=u"secID,tradeDate,openPrice",isOpen=1,pandas="1")
6
df_eq = pd.concat([df_eq,df_tmp],axis=0)
7
df_tmp = DataAPI.MktEqudAdjGet(secID=universe[i:],beginDate=start_date,endDate=end_date,
8
field=u"secID,tradeDate,openPrice",isOpen=1,pandas="1")
9
df_eq = pd.concat([df_eq,df_tmp],axis=0)
10
return df_eq
xxxxxxxxxx1
1
df_eq = get_quotation('20071101','20160920',set_universe('A'))
xxxxxxxxxx1
1
df_eq_unstack = df_eq.set_index(['tradeDate','secID']).unstack()
業(yè)績預(yù)告公布通常是收盤后發(fā)生,此處我們計(jì)算每日收益采用的更接近實(shí)際的開盤至開盤的收益。
xxxxxxxxxx1
1
open2open_yield = df_eq_unstack['openPrice'].pct_change().dropna(how='all')
xxxxxxxxxx1
1
open2open_yield.head()
secID 000001.XSHE 000002.XSHE 000004.XSHE 000005.XSHE 000006.XSHE 000007.XSHE 000008.XSHE 000009.XSHE 000010.XSHE 000011.XSHE ... 603969.XSHG 603979.XSHG 603986.XSHG 603988.XSHG 603989.XSHG 603993.XSHG 603996.XSHG 603997.XSHG 603998.XSHG 603999.XSHG
tradeDate
2007-11-02 -0.019308 -0.007703 -0.073746 -0.016667 -0.033029 NaN -0.003281 -0.017812 NaN 0.049726 ... NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN
2007-11-05 -0.026032 0.002554 0.029724 -0.011299 -0.000332 NaN -0.042798 0.034046 NaN -0.046039 ... NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN
2007-11-06 -0.042206 -0.092762 0.010309 0.002857 -0.052247 NaN 0.079106 -0.010920 NaN -0.006396 ... NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN
2007-11-07 0.019781 0.032651 -0.021429 0.007123 0.009450 NaN 0.016733 -0.017564 NaN 0.008661 ... NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN
2007-11-08 0.006754 0.000000 0.027112 -0.032532 -0.012309 NaN -0.014890 0.029116 NaN 0.040149 ... NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN
5 rows × 2920 columns
三、基準(zhǔn)收益選取
我們分析結(jié)果是要看最后事件是否具有超額收益,故要設(shè)置一個(gè)基準(zhǔn)收益,看處于事件的股票的收益是否比基準(zhǔn)收益更高。此處我們將股票同行業(yè)的平均收益做為基準(zhǔn)收益,更細(xì)致的分析,可以將市值因素考慮進(jìn)來,出于運(yùn)算時(shí)間的考慮此處沒有加上。
xxxxxxxxxx4
1
def get_industry(into_date,universe):
2
df_industry = DataAPI.EquIndustryGet(industryVersionCD=u"010303",secID=universe,
3
intoDate=into_date,field=u"secID,industryName1",pandas="1")
4
return df_industry
xxxxxxxxxx1
1
df_industry = get_industry('20161101',set_universe('A'))
xxxxxxxxxx6
1
ind_ret_list = []
2
for ind in df_industry.industryName1.drop_duplicates().tolist():
3
ind_ret = open2open_yield.ix[:,df_industry[df_industry['industryName1']==ind]['secID'].tolist()].mean(axis=1)
4
ind_ret.name = ind
5
ind_ret_list.append(ind_ret)
6
ind_ret_df = pd.concat(ind_ret_list,axis=1)
xxxxxxxxxx3
1
def get_benchmark(x):
2
ind = df_industry[df_industry['secID']==x]['industryName1'].values[0]
3
return ind_ret_df[ind]
xxxxxxxxxx1
1
benchmarkYield = open2open_yield.apply(lambda x: get_benchmark(x.name))
xxxxxxxxxx1
1
benchmarkYield.head()
secID 000001.XSHE 000002.XSHE 000004.XSHE 000005.XSHE 000006.XSHE 000007.XSHE 000008.XSHE 000009.XSHE 000010.XSHE 000011.XSHE ... 603969.XSHG 603979.XSHG 603986.XSHG 603988.XSHG 603989.XSHG 603993.XSHG 603996.XSHG 603997.XSHG 603998.XSHG 603999.XSHG
tradeDate
2007-11-02 -0.017547 -1.672790e-02 -0.052213 -1.672790e-02 -0.031043 -0.039814 -0.052747 -0.047344 -0.050576 -1.672790e-02 ... -0.046136 -0.031043 -0.050595 -0.052133 -0.050595 -0.052747 -0.055699 -0.053349 -0.052213 -0.049244
2007-11-05 -0.018039 -1.526467e-02 -0.017383 -1.526467e-02 -0.029716 -0.017486 -0.031141 -0.008446 -0.009109 -1.526467e-02 ... -0.013924 -0.029716 -0.003476 -0.013211 -0.003476 -0.031141 -0.004119 -0.016371 -0.017383 -0.011453
2007-11-06 -0.017563 2.556436e-07 0.024740 2.556436e-07 -0.010207 0.029414 0.007403 0.014627 0.013087 2.556436e-07 ... 0.025786 -0.010207 0.033150 0.018414 0.033150 0.007403 0.033471 0.025504 0.024740 0.025682
2007-11-07 0.010099 8.917162e-03 0.011993 8.917162e-03 0.026226 0.017989 0.006096 0.009628 0.005059 8.917162e-03 ... 0.003906 0.026226 0.008568 0.006212 0.008568 0.006096 0.007304 0.009932 0.011993 0.011487
2007-11-08 0.006309 -5.831206e-03 -0.014400 -5.831206e-03 -0.001473 -0.006418 -0.007260 -0.000318 -0.009066 -5.831206e-03 ... -0.015505 -0.001473 -0.017592 -0.010173 -0.017592 -0.007260 -0.006330 -0.008882 -0.014400 -0.009428
5 rows × 2920 columns
四、時(shí)間窗口分析
事件驅(qū)動(dòng)分析將時(shí)間發(fā)生點(diǎn)設(shè)置為T+0,將所有事件發(fā)生對齊到T+0點(diǎn),并設(shè)置T-n到T+n為事件影響期,看事件的超額收益情況。
xxxxxxxxxx18
1
def get_window_yield(unstack_yield,events,window):
2
#獲取事件窗口收益
3
events = events.reset_index()
4
def get_time_list(window,events):
5
# 得到每個(gè)事件的時(shí)間窗口
6
minus_period = '-' + str(window) + 'B'
7
period = str(window) + 'B'
8
time_list = [[cal.advanceDate(events['actPubtime'][i],minus_period,BizDayConvention.Unadjusted),cal.advanceDate(events['actPubtime'][i],period,BizDayConvention.Unadjusted)] for i in range(len(events['actPubtime']))]
9
return time_list
10
11
time_list = get_time_list(window,events)
12
offset = range(-1*window,window+1,1)
13
event_equity_list = []
14
for i in range(len(events)):
15
df_tmp = pd.DataFrame(unstack_yield.ix[time_list[i][0].strftime('%Y-%m-%d'):time_list[i][1].strftime('%Y-%m-%d'),events.iloc[i]['secID']].values,columns=[events.iloc[i]['secID_actPubtime']],index = offset)
16
event_equity_list.append(df_tmp)
17
event_equity_window = pd.concat(event_equity_list,axis=1)
18
return event_equity_window
xxxxxxxxxx10
1
def get_mean_outperform_yield(event_equity_window_yield,event_benchmark_window_yield):
2
#獲取窗口內(nèi)平均超額收益
3
cols = list(event_equity_window_yield[(event_equity_window_yield > 0.4) | (event_equity_window_yield < -0.3)].dropna(how='all',axis=1).columns) #刪除異常值,一天內(nèi)的open2open收益最高也就是30%多點(diǎn),存在借殼上市的公司會(huì)有很高的收益,刪除這樣的樣本點(diǎn)
4
for col in cols:
5
del event_equity_window_yield[col]
6
del event_benchmark_window_yield[col]
7
event_equity_window_cumyield = (1 + event_equity_window_yield).cumprod(axis=0) / (1 + event_equity_window_yield).cumprod(axis=0).ix[0] # 累計(jì)收益,對齊T+0點(diǎn)(這里之前的版本把event_equity_window_yield寫成了event_benchmark_window_yield,導(dǎo)致了后面的分析結(jié)果不對)
8
event_benchmark_window_cumyield = (1 + event_benchmark_window_yield).cumprod(axis=0) / (1 + event_benchmark_window_yield).cumprod(axis=0).ix[0]
9
event_outperform_window_yield = (event_equity_window_cumyield - event_benchmark_window_cumyield).mean(axis=1) #超額收益累計(jì)平均值
10
return event_outperform_window_yield
接下來我們對幾類常見的業(yè)績預(yù)告進(jìn)行時(shí)間窗口分析,首先看下有哪些分類,以及其樣本數(shù)量。
xxxxxxxxxx1
1
events['forecastType'].value_counts()
22 1713024 780011 770251 493021 383023 302441 275213 148412 29931 19732 11014 4729 1Name: forecastType, dtype: int64
可以看出這個(gè)API將業(yè)績預(yù)告分為13類,我們將樣本點(diǎn)過少的狀態(tài)剔除,分析樣本點(diǎn)大于2000的業(yè)績預(yù)告事件。它們分別是,22——業(yè)績預(yù)增;11——預(yù)計(jì)虧損;24——盈利下降;51——經(jīng)營預(yù)期及其他(該條描述不明也不予分析);21——預(yù)計(jì)盈利;23——盈利減緩;41——基本持平
xxxxxxxxxx13
1
def event_window_plot(open2open_yield,benchmarkYield,events,forecastType,window,legend):
2
## 畫出各事件時(shí)間窗口收益
3
event_equity_window_yield = get_window_yield(open2open_yield,events[events['forecastType']==forecastType],window)
4
event_benchmark_window_yield = get_window_yield(benchmarkYield,events[events['forecastType']==forecastType],window)
5
event_outperform_window_yield = get_mean_outperform_yield(event_equity_window_yield,event_benchmark_window_yield)
6
fig = plt.figure(figsize=(10,6))
7
ax = fig.add_subplot(111)
8
ax.plot(event_outperform_window_yield.index,event_outperform_window_yield.values,'dodgerblue',linewidth=2.5)
9
plt.xlim(-25,25)
10
plt.ylim(event_outperform_window_yield.min(),event_outperform_window_yield.max())
11
ax.plot([0,0],[event_outperform_window_yield.min(),event_outperform_window_yield.max()],'crimson',linewidth=1.5,linestyle ='--')
12
ax.plot([1,1],[event_outperform_window_yield.min(),event_outperform_window_yield.max()],'crimson',linewidth=1.5,linestyle ='--')
13
ax.set_title(legend, fontproperties=font, fontsize=18)
xxxxxxxxxx1
1
event_window_plot(open2open_yield,benchmarkYield,events,22,25,u"盈利預(yù)增事件時(shí)間窗口分析")
從上圖我們可以看出,第一,在業(yè)績預(yù)增公告發(fā)布時(shí)有一個(gè)明顯的開盤至開盤的超額收益(兩條紅虛線之間),但這個(gè)收益在公開信息的情況下是沒法抓到的;第二,業(yè)績預(yù)增公告發(fā)布之前,股票存在明顯的超額收益,表明確實(shí)存在公告發(fā)布之前就有很大的漲幅;第三,業(yè)績預(yù)增公告發(fā)布之后,第五天超額收益達(dá)到最大,隨后超額收益開始下降。
xxxxxxxxxx1
1
event_window_plot(open2open_yield,benchmarkYield,events,11,25,u"預(yù)計(jì)虧損事件時(shí)間窗口分析")
從上圖可以看出,預(yù)計(jì)虧損事件在公告發(fā)布之前就有明顯的負(fù)的超額收益,并在預(yù)計(jì)虧損事件公布之后快速下跌,不過最后最后下跌基本止住。
xxxxxxxxxx1
1
event_window_plot(open2open_yield,benchmarkYield,events,24,25,u"盈利下降事件時(shí)間窗口分析")
從上圖可以看出,盈利下降事件在公告發(fā)布之前就有明顯的負(fù)的超額收益,并在盈利下降事件公布之后快速下跌,并在25個(gè)時(shí)間窗口內(nèi)持續(xù)下跌。
xxxxxxxxxx1
1
event_window_plot(open2open_yield,benchmarkYield,events,21,25,u"預(yù)計(jì)盈利事件時(shí)間窗口分析")
從上圖中可以看出,預(yù)計(jì)盈利事件表現(xiàn)出在公告發(fā)布之前有一定的超額收益,在公告發(fā)布時(shí)有一個(gè)顯著的超額收益;但在隨后表現(xiàn)平穩(wěn),并沒有超額收益,也沒有出現(xiàn)下跌。
xxxxxxxxxx1
1
event_window_plot(open2open_yield,benchmarkYield,events,23,25,u"盈利減緩事件時(shí)間窗口分析")
從上圖可知,盈利減緩事件,呈現(xiàn)出公告發(fā)布前幾乎沒有超額收益,公告發(fā)布當(dāng)日有明顯的超額收益,不過在隨后25個(gè)交易日內(nèi)出現(xiàn)大幅下跌。
xxxxxxxxxx1
1
event_window_plot(open2open_yield,benchmarkYield,events,41,25,u"基本持平事件時(shí)間窗口分析")
從上圖可知,基本持平事件,呈現(xiàn)出公告發(fā)布前幾乎沒有超額收益,公告發(fā)布的兩日呈現(xiàn)出負(fù)的超額收益,隨后超額收益繼續(xù)小幅下跌。
五、事件驅(qū)動(dòng)分析轉(zhuǎn)化為投資策略
上面的事件分析給了我們另一個(gè)角度來看股票的超額的收益,然而事件的發(fā)生實(shí)際上是離散的,上述分析無法給出我們一個(gè)投資策略。本文提供一個(gè)簡易的思路來將事件驅(qū)動(dòng)分析轉(zhuǎn)化為投資策略。
我們知道我們上面的分析是將每一個(gè)處于事件的股票累計(jì)收益的平均,故一個(gè)直接的想法便是將所有處于事件的股票等權(quán)買入,但因?yàn)槭录请x散的,我們在一個(gè)持有期會(huì)面臨著新的處于事件的股票需要買入,而導(dǎo)致實(shí)際上我們對每一個(gè)股票并不都是同一權(quán)重的。此處給出的解決辦法是,首先計(jì)算出處于事件窗口期的最大股票個(gè)數(shù),然后以這個(gè)最大股票個(gè)數(shù)的倒數(shù)做為每一只處于事件的股票的權(quán)重,這樣就能保證所有處于事件的股票以同一權(quán)重跑完整個(gè)窗口期。
xxxxxxxxxx16
1
def get_max_event_stock(events):
2
##獲得窗口期有交叉的最大股票個(gè)數(shù)
3
events['minute'] = events['actPubtime'].map(lambda x:x[11:20])
4
events['actpubdate'] = events['actPubtime'].map(lambda x: datetime.datetime.strptime(x[0:10],'%Y-%m-%d'))
5
events['ii'] = range(len(events))
6
events['buytime'] = events['ii'].map(lambda x: cal.advanceDate(events.iloc[x]['actpubdate'],'1B') if events.iloc[x]['minute'] != '00:00:00' else Date.fromDateTime(events.iloc[x]['actpubdate']))
7
calendar_date = DataAPI.TradeCalGet(exchangeCD=u"XSHG",beginDate=u"20071227",endDate=u"",field=u"",pandas="1")['calendarDate']
8
calendar_date = pd.DataFrame(calendar_date)
9
calendar_date['calendarDate'] = calendar_date['calendarDate'].map(lambda x:Date.parseISO(x))
10
11
def get_event_stock(trade_date):
12
event_stock = []
13
begin_date = cal.advanceDate(trade_date,'-5B')
14
return events[(events['buytime'] < trade_date) & (events['buytime'] >= begin_date)]['secID'].tolist()
15
calendar_date['stk_list'] = calendar_date['calendarDate'].map(lambda x: get_event_stock(x))
16
return max([len(item) for item in calendar_date['stk_list'].values])
xxxxxxxxxx1
1
test = events[events['forecastType']==22]
xxxxxxxxxx1
1
get_max_event_stock(test)
355
如上我們得到了盈利預(yù)增事件的5天窗口期有交叉的最大股票個(gè)數(shù),355;故我們編寫如下策略。
xxxxxxxxxx45
1
import numpy as np
2
import pandas as pd
3
from CAL.PyCAL import *
4
start = '2007-12-27' # 回測起始時(shí)間
5
end = '2016-11-03' # 回測結(jié)束時(shí)間
6
benchmark = 'HS300' # 策略參考標(biāo)準(zhǔn)
7
universe = set_universe('A') #證券池,支持股票和基金
8
capital_base = 100000000 # 起始資金
9
freq = 'd' # 策略類型,'d'表示日間策略使用日線回測,'m'表示日內(nèi)策略使用分鐘線回測
10
refresh_rate = 1 # 調(diào)倉頻率,表示執(zhí)行handle_data的時(shí)間間隔,若freq = 'd'時(shí)間間隔的單位為交易日,若freq = 'm'時(shí)間間隔為分鐘
11
cal = Calendar('China.SSE')
12
period = '-1B'
13
14
def initialize(account): # 初始化虛擬賬戶狀態(tài)
15
account.day_count ={}
16
for stk in universe:
17
account.day_count[stk] = 0
18
19
def handle_data(account): # 每個(gè)交易日的買入賣出指令
20
21
yestoday = cal.advanceDate(account.current_date, period, BizDayConvention.Unadjusted)
22
begin_date = cal.advanceDate(account.current_date, '-1Y', BizDayConvention.Unadjusted)
23
profit_up = DataAPI.FdmtEfGet(secID=account.universe,publishDateBegin=begin_date.strftime('%Y%m%d'),publishDateEnd=account.current_date.strftime('%Y%m%d'),
24
forecastType="22",field=['secID','actPubtime',],pandas="1")
25
26
fil_profit = profit_up[profit_up['actPubtime'].map(lambda x: x[0:10]) == yestoday.strftime('%Y-%m-%d')]
27
28
buy_list = fil_profit['secID'].tolist()
29
30
total_money = account.reference_portfolio_value
31
prices = account.reference_price
32
33
for stk in account.avail_security_position:
34
if account.day_count[stk] == 5:
35
order_to(stk,0)
36
account.day_count[stk] = 0
37
38
for stk in buy_list:
39
if stk not in account.security_position:
40
if np.isnan(prices[stk]) or prices[stk] == 0:
41
continue
42
order_pct_to(stk,1.0/355)
43
44
for stk in account.security_position:
45
account.day_count[stk] = account.day_count[stk] + 1
年化收益率2.5%
基準(zhǔn)年化收益率-5.1%
阿爾法-1.0%
貝塔0.09
夏普比率-0.34
收益波動(dòng)率5.6%
信息比率0.13
最大回撤9.2%
換手率43.08
Created with Highstock 1.3.10累計(jì)收益率策略基準(zhǔn)2008200920102011201220132014201520160.00%-75.00%-50.00%-25.00%25.00%50.00%2010-08-09策略: -3.95%基準(zhǔn): -44.57%
查看回測詳情,以及回測曲線可以看出,盈利預(yù)增事件自帶擇時(shí)屬性;牛市時(shí),該事件相對較多,而在熊市時(shí),該事件相對較少。
六、總結(jié)
本文以業(yè)績預(yù)告為例,給出了一個(gè)事件驅(qū)動(dòng)的基本分析過程,并給出最后的demo策略。通過上面的分析過程,我們可從另一個(gè)角度來看股票的超額收益,將離散的事件規(guī)整到同一分析維度,來看這類事件是否是存在超額收益的。但最后我們做策略時(shí),我們還是要面對離散的事件,如果各事件窗口不存在交叉的話,我們可以很簡單使用凱利公式來得到我們對每個(gè)事件的最優(yōu)倉位。然而大部分時(shí)候,事件的窗口都存在很多的交叉,如上策略我們做了一個(gè)最大股票個(gè)數(shù)平均倉位的處理,但是這樣資金利用率非常低,而且存在事件個(gè)數(shù)在各年份不一定穩(wěn)定的問題,所以在真實(shí)情況下,我們對未來該事件發(fā)生的次數(shù)做一個(gè)預(yù)測或許是一個(gè)更好的方式。
本站僅提供存儲(chǔ)服務(wù),所有內(nèi)容均由用戶發(fā)布,如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請點(diǎn)擊舉報(bào)
打開APP,閱讀全文并永久保存 查看更多類似文章
猜你喜歡
類似文章
使用notebook打造日內(nèi)監(jiān)控市場數(shù)據(jù)的利器V0.5
數(shù)據(jù)預(yù)處理(上)之離群值處理、標(biāo)準(zhǔn)化 | RiceQuant米筐量化社區(qū) 交易策略論壇
【止損】 止損/止盈 方案目錄 必讀 | RiceQuant米筐量化社區(qū) 交易策略論壇
量化交易策略——小市值策略(四)
次新股開板投資攻略
博士云操作復(fù)盤和量化方向
更多類似文章 >>
生活服務(wù)
熱點(diǎn)新聞
分享 收藏 導(dǎo)長圖 關(guān)注 下載文章
綁定賬號成功
后續(xù)可登錄賬號暢享VIP特權(quán)!
如果VIP功能使用有故障,
可點(diǎn)擊這里聯(lián)系客服!

聯(lián)系客服