【量化笔记】通道突破策略

📅 2026/7/28 14:19:15
【量化笔记】通道突破策略
唐奇安通道唐奇安通道刻画通道上界=过去20日内的最高价通道下界=过去20日内的最低价中轨道计算公式:中轨道=通道上界+通道下界2中轨道=\frac{通道上界+通道下界}{2}中轨道=2通道上界+通道下界​# 使用中国联通的股票数据来刻画唐奇安通道importpandasaspdimportnumpyasnpimportmatplotlib.pyplotasplt ChinaUnicom=pd.read_csv('ChinaUnicom.csv')ChinaUnicom.index=ChinaUnicom.iloc[:,1]ChinaUnicom.index=pd.to_datetime(ChinaUnicom.index,format='%Y-%m-%d')ChinaUnicom=ChinaUnicom.iloc[:,2:]Close=ChinaUnicom.Close High=ChinaUnicom.High Low=ChinaUnicom.LowupboundDC=pd.Series(0.0,index=Close.index)downboundDC=pd.Series(0.0,index=Close.index)midboundDC=pd.Series(0.0,index=Close.index)foriinrange(20,len(Close)):upboundDC[i]=max(High[(i-20):i])downboundDC[i]=min(Low[(i-20):i])midboundDC[i]=0.5*(upboundDC[i]+downboundDC[i])upboundDC=upboundDC[20:]downboundDC=downboundDC[20:]midboundDC=midboundDC[20:]plt.rcParams['figure.figsize']=(20.0,10.0)plt.rcParams['font.sans-serif']=['SimHei']plt.plot(Close['2013'],label="Close",color='k')plt.plot(upboundDC['2013'],label="upboundDC",color='b',linestyle='dashed')plt.plot(midboundDC['2013'],label="midboundDC",color='r',linestyle='-.')plt.plot(downboundDC['2013'],label="downboundDC",color='b',linestyle='dashed')plt.title("2013年中国联通股价唐奇安通道")plt.ylim(2.9,3.9)plt.legend()matplotlib.legend.Legend at 0x11737cef0# k线图与唐奇安通道plt.rcParams['figure.figsize']=(20.0,10.0)upDownDC=pd.DataFrame({'upboundDC':upboundDC,\'downboundDC':downboundDC})ChinaUnicom13=ChinaUnicom['2013-01-01':'2013-06-28']upDownDC13=upDownDC['2013-01-01':'2013-06-28']importcandle candle.candleLinePlots(candleData=ChinaUnicom13,\ splitFigures=False,\ candleTitle='中国联通2013年上半年K线图及唐奇安通道',\ Data=upDownDC13)python捕捉唐奇安通道突破当价格先走强而突破前n期的最高价时做多,当价格先向下运动,价格低于前n期的最低价时做空。defupbreak(tsLine,tsRefLine):n=min(len(tsLine),len(tsRefLine))tsLine=tsLine[-n:]tsRefLine=tsRefLine[-n:]signal=pd.Series(0,index=tsLine.index)foriinrange(1,len(tsLine)):ifall([tsLine