昨天寫了我挑空單的邏輯,我頗敬重的一位江湖大佬看到了,他提了一個很有趣的觀點~ 長空的股票只要看籌碼就夠了,其他都不要看,會被誤導。他說只要籌碼是從大股東,大戶及法人手中一直往市場上倒,而承接的都是散戶,這種股票就算在多頭市場也很難漲,但如果你還要去考慮基本面技術面什麼的,反而會因為噪音太多而迷失方向。為了印證他的觀察,以下是我的實驗過程。
根據他的說法,我列出作空的一些條件
1.買進的分公司家數遠多於賣出的分公司家數
2.法人賣超
3.主力賣超
4.千張大戶人數及張數在減少
5.融資餘額在增加
6.借券賣出餘額張數在增加
7.關鍵券商賣超
8.散戶持股人數及張數在增加
9.內部人持股比例在減少
10.散戶買張在增加
11.地緣券商賣超
12.綜合前十大券商賣超
然後我寫了一個選股腳本,來設定每天符合這些條件達到一定的比例作為標準,然後再挑出最近幾天都有符合此標準的股票。
我寫的腳本如下:
1value1=GetField("法人買賣超張數","D"); 2value2=GetField("買家數","D"); 3value3=GetField("賣家數","D"); 4value4=GetField("主力買賣超張數","D"); 5value5=GetField("融資餘額張數","D"); 6value6=GetField("借券餘額張數","D"); 7value7=GetField("關鍵券商買賣超張數","D"); 8value8=GetField("散戶買張","D"); 9value9=GetField("地緣券商買賣超張數","D"); 10value10=GetField("綜合前十大券商買賣超張數","D"); 11var:count(0); 12count=0; 13if value1<0 then count=count+1; 14if value2>value3+30 then count=count+1; 15if value4<0 then count=count+1; 16if GetField("散戶持股張數","W",param := 50) >GetField("散戶持股張數","W",param := 50)[1] then count=count+1; 17if GetField("散戶持股人數","W",param := 50) >GetField("散戶持股人數","W",param := 50)[1] then count=count+1; 18if GetField("大戶持股張數","W",param := 400)<GetField("大戶持股張數","W",param := 400)[1] then count=count+1; 19if GetField("大戶持股人數","W",param := 400) <GetField("大戶持股人數","W",param := 400)[1] then count=count+1; 20if value5>value5[1] then count=count+1; 21if value6>value6[1] then count=count+1; 22if value7<0 then count=count+1; 23if GetField("內部人持股比例","M")< GetField("內部人持股比例","M")[1] then count=count+1; 24if value8>value8[1] then count=count+1; 25if value9<0 then count=count+1; 26if value10<0 then count=count+1; 27input:n(10,"每日符合籌碼發散的條件數"); 28input:days(5,"計算天數"); 29if countif(count>=n,days)>=days*0.6 then ret=1;
以下是最近六個月及最近三個月的回測報告
對照下來,空頭市場如果單純使用籌碼發散這樣的精神去設定作空策略,確實是有效的策略。不過在多頭市場,一樣是會輸錢的。