|
大家好,我是花姐。 ![]() 打開今日頭條查看圖片詳情
![]() 打開今日頭條查看圖片詳情
所以今天我們來聊一聊——如何用量化的方式判斷一只股票是不是正處于底部盤整然后突破的階段。 這個狀態(tài)要拆分成3個部分,首先是底部、然后盤整、最后突破,接下來我們一個個說。 階段1:底部檢測底部其實是相對的,如果把K線拉長,很有可能現在的底部相對歷史來說可能是半山腰,甚至是頂部。所以底部判定關鍵在于取值區(qū)間和連續(xù)天數,不同參數會導致不同結果。 核心思路:
核心代碼片段: # 計算歷史區(qū)間最高最低low_min, high_max = df['close'].min(), df['close'].max()# 價格歸一化df['pos'] = (df['close'] - low_min) / (high_max - low_min)# 底部區(qū)間判斷df['is_bottom_region'] = df['pos'] < 0.2# 找連續(xù) True 區(qū)間group_id = (df['is_bottom_region'] != df['is_bottom_region'].shift(1)).cumsum()for _, grp in df.groupby(group_id): if grp['is_bottom_region'].iloc[0] and len(grp) >= 3: print(f'可能底部區(qū)間: {grp.index[0]} ~ {grp.index[-1]}')階段2:橫盤盤整檢測橫盤盤整是市場“憋氣”的階段,股價在一個小范圍反復震蕩。不同ATR、MA窗口和閾值會影響判定結果。 核心思路:
核心代碼片段: 階段3:突破檢測突破是橫盤階段后的“釋放”,股價突破盤整上軌且成交量放大。核心是盤整區(qū)間上沿 + 成交量放大 + 收盤價突破。 核心思路:
核心代碼片段: # 盤整區(qū)間最高價consolidation_high = sideways_info['consolidation_high']# 計算量比df['vol_ratio'] = df['volume'] / df['volume'].rolling(5, min_periods=1).mean()# 突破信號df['breakout_signal'] = (df['close'] > consolidation_high) & (df['vol_ratio'] > 1.5)# 找連續(xù) True 區(qū)間group_id = (df['breakout_signal'] != df['breakout_signal'].shift(1)).cumsum()for _, grp in df.groupby(group_id): if grp['breakout_signal'].iloc[0] and len(grp) >= 1: print(f'突破區(qū)間: {grp.index[0]} ~ {grp.index[-1]}')通過這3步就可以找到處于底部、橫盤、突破的股票了。 Python能力強的就可以直接根據上面的代碼來完善出屬于自己的選股邏輯了。當然花姐為基礎差的也準備了完整的代碼,可以上知-識-星-球查看。 |
|
|
來自: 金木魚23897029 > 《量化》