昨天跟大家介紹了大盤儀表板的概念,今天跟大家介紹的是,如何讓電腦幫我們找到那些在幾天內不同買進訊號接續出現的股票。
我的寫法是,用barslast這個函數,算出各個不同概念所出現的買進訊號距離最新一根bar有多少根,然後把這十個數字排列出來,找第三小的,如果這數字小於10,代表這十個概念裡有至少三個在最近十根bar裡出現過買進訊號,當這種情況出現且過去二十天內都沒有這種情況,就是近期第一次買進訊號連發。
我寫的腳本如下:
condition1=false; variable: r1(0),r2(0),r3(0),r4(0),r5(0); variable: r6(0),r7(0),r8(0),r9(0),r10(0); //==========日KD黃金交叉================ input: Length_D(9, "日KD期間"); input: Length_M(5, "周KD期間"); variable:rsv_d(0),kk_d(0),dd_d(0),c5(0); stochastic(Length_D, 3, 3, rsv_d, kk_d, dd_d); r1=barslast(kk_d crosses over dd_d); //============內外盤量比差==================== variable:c3(0); value6=GetField("內盤量");//單位:元 value7=GetField("外盤量");//單位:元 if volume<>0 then begin value8=value7/volume*100;//外盤量比 value9=value6/volume*100;//內盤量比 end; value10=average(value8,5); value11=average(value9,5); value7=value10-value11+5; r2=barslast(value7 crosses over 0); //===========淨力指標============== variable:c4(0); input:period2(10,"長期參數"); value12=summation(high-close,period2);//上檔賣壓 value13=summation(close-open,period2); //多空實績 value14=summation(close-low,period2);//下檔支撐 value15=summation(open-close[1],period2);//隔夜力道 if close<>0 then value16=(value13+value14+value15-value12)/close*100; r3=barslast( value16 crosses over -4); //===========多頭起漲前的籌碼收集================ variable:c2(0); value1=GetField("分公司買進家數"); value2=GetField("分公司賣出家數"); value3=value2-value1; value4=countif(value3>20,10); r4=barslast(value4>6 ); //===========法人同步買超==================== variable: v1(0),v2(0),v3(0),c1(0); v1=Getfield("外資買賣超"); v2=Getfield("投信買賣超"); v3=Getfield("自營商買賣超"); r5= barslast(maxlist2(v1,v2,v3)>100); //========DIF-MACD翻正============= input: FastLength(12), SlowLength(26), MACDLength(9); variable: difValue(0), macdValue(0), oscValue(0); MACD(weightedclose(), FastLength, SlowLength, MACDLength, difValue, macdValue, oscValue); variable:c6(0); r6=barslast(oscValue Crosses Above 0); //========資金流向====================== variable: m1(0),ma1(0),c7(0); m1=GetField("資金流向"); ma1=average(m1,20)*1.5; r7=barslast(m1 crosses over ma1 and close>close[1]); //=========總成交次數================ variable: t1(0),mat1(0),c8(0); t1=GetField("總成交次數","D"); mat1=average(t1,20)*1.5; r8=barslast(t1 crosses over mat1 and close>close[1]); //=========強弱指標================== variable:s1(0),c9(0); s1=GetField("強弱指標","D"); r9=barslast(trueall(s1>0,3)); //============主力買張================ variable:b1(0),mab1(0),c10(0); b1=GetField("主力買張"); mab1=average(b1,10); r10=barslast(b1 crosses over mab1); variable:f1(0); f1=nthminlist(3,r1,r2,r3,r4,r5,r6,r7,r8,r9,r10); if f1<=10 then condition1=true; value99=barslast(condition1); if value99=0 and value99[1]>20 then ret=1;
拿這個腳本去回測,出場點都設在十天後,
如果用全部的股票去回測一年,回測報告如下:
如果用全部的股票回測近半年,回測報告如下 :
如果只把市值適中的股票拿進來測,半年及一年的績效分別如下
從上面這些回測報告可以發現,買進策略連發這樣的組合拳,在多頭市場是有一定獲利機會,空頭市場因為多個多頭策略條件符合,觸發買進訊號的機率不大,所以輸的時候也不會輸的很慘,各位不妨試著把自己研發的各種交易策略透過這個方式寫成一個腳本,然後再來回測看看會不會三個諸葛亮,可以打敗市場。