Author Archives: 發財橘子

多次到底而破

多次到底而破的型態有如下圖

C67

有點像是跌破多次止跌區的概念。

對應的腳本如下:

input:day(100);
input:band1(4);
setinputname(1,"計算區間");
setinputname(2,"三高點之高低價差");
value1=nthlowest(1,low[1],day);
value2=nthlowest(3,low[1],day);
value4=nthlowestbar(1,low,day);
value5=nthlowestbar(3,low,day);
value6=nthlowestbar(5,low,day);
value7=absvalue(value4-value6);
value8=absvalue(value5-value6);
value9=absvalue(value4-value5);
condition1=false;
if value7>3 and value8>3 and value9>3
then condition1=true;
value3=(value1-value2)/value2;

if value3<=band1/100
and close crosses under value1
and volume>2000
and condition1
then ret=1;

以下的例子是從上面的腳本中挑中的。

這個策略在空頭市場有不錯的勝率,如果手上有的基金出現這樣的型態是真的必須小心是否是另一段跌勢的開始。

CCI超買反轉直下

CCI指標的原文是 Commodity Channel Index,直譯的話就是「商品通道指標」。這個指標是由Donald R. Lamber所發明的。

 這個指標的計算過程如下:

 1.    先計算出典型價格:

TP t = ( 最高價t + 最低價t + 收盤價t  ) /3

 2.    求算典型價格的簡單平均值:

MA t =(  TPt  +  TPt-1  + ... +  TP t-n+1 ) / n

3.    MA t 與TPt 離差絕對值的n日加總:

MD t =(|MAt-TPt|+|MAt-1-TPt-1 |+....+|MAt-n+1-TPt-n+1|)/n

 4.    CCI公式:

CCI t = ( TP t-MA t ) / (  0.015 * MD t )

 這個CCI公式的設計,當典型價格等於其平均值時,CCI值會等於零。所以這個公式的原始設計比較像是在使用乖離率的觀念,因為只有當最後股價在極短期內作劇烈的向上或向下運動時,CCI值才會出現突然向上或向下大幅擺盪的極端值。這個公式的發明者為了將CCI指標值限定在一定的範圍內波動,所以特別將分母部份乘上0.015的參數值。

所以當C CI是個乖離概念,那麼我們就可以寫一個腳本,找出當CCI超過100超買之後,如果價格跌破當被超買時的股價低點,把它視為一個賣出訊號,下面就是這麼一個腳本

Input: Length(14), AvgLength(9), Overbought(100);
Variable: cciValue(0), cciMAValue(0),KPrice(0);

SetInputName(1, "期數");
SetInputName(2, "平滑期數");
SetInputName(3, "超買值");

cciValue = CommodityChannel(Length);
cciMAValue = Average(cciValue, AvgLength);
if cciMAValue Crosses Above OverBought then KPrice =L;;

if Close crosses under KPrice then ret=1;

這個腳本就是專門在正乖離過大時,一旦股價跌破關鍵價位,就出賣出訊號。

好久沒出現的連五日上漲

如果近百日以來都沒有出現價格連續五天上漲,而現在出現了,這代表這市場先前並沒有出現多頭長驅而入的現象,但現在出現,這就是個訊號,一個多頭士氣如虹的訊號。

我們可以把這個現象寫成腳本如下

setbarback(100);
if trueall(close>close[1],5)
and barslast(trueall(close>close[1],5))[1]>100
then ret=1;
//40天後出場

然後就可以找出像下面這張圖的標的

C65

這個腳本在多頭市場的回測報告如下

 

C64

如報告中所列,其實基金對應的Benchmark要出現這樣的訊號,次數並不多見,但勝率其實不錯,所以如果出現這個訊號,是可以多留意該市場的後市的。

多方勢力壓過空方

基金投資用的Benchmark都是指數對應的ETF,除了價量之外,一般沒有像個股有其他的決策可應用的欄位如籌碼,如財報等等,這時候像開高低收這四個價位也就很彌足珍貴,需要更用力的使用,例如我們可以把每天的最高價減收盤價稱為上檔賣壓,把收盤價減最低價稱為下檔支撐。諸如此類的,透過對多空力道的定義及演算,計算出一天裡的多空淨力道,然後據以作為研判市場多空的依據。

根據這樣的精神,對應的腳本如下

input:day(5,"短期參數"),period(10,"長期參數");

value1=summation(high-close,period);//上檔賣壓
value2=summation(close-open,period); //多空實績
value3=summation(close-low,period);//下檔支撐
value4=summation(open-close[1],period);//隔夜力道
if close<>0
then
value5=(value2+value3+value4-value1)/close*100;

value6=linearregslope(value5,period);
if trueall(value6[1]<0,10)
and value6>0
and value5 <0
then ret=1;

以下是一個上述腳本挑出來的例子

c63

這個策略在多頭市場的回測報告如下

c62

由於這個策略只要是近十天多空淨力趨勢開始由下轉向上時就算數,所以跑出來的交易次數蠻多的,可以輔以其他的策略來搭配使用。

碗型底

在型態學上,碗型底是一個可遇不可求的型態,這種碗如果夠大,後面多頭行情就可能走的愈長久,但可惜碗型底要用程式寫出來有點難度,我們試著寫出一個儘量接近的腳本,幫大家挑出可能的碗型底,但由於目標是寧可多挑也不要放過,所以挑中的標的,還需要大家用肉眼再作一次確認。

我們寫的腳本如下

input:t2(60,"敏感度(T)"),S1(true,"T=早訊號,F=晚訊號");
variable:t1(1);
value1=(H+L+O+C)/4;
value2=square(H)+square(L)+square(O)+square(C);

value14+=value2;
if value2[t2]<>0 then value14-=value2[t2];
value15+=value1;
if value1[t2]<>0 then value15-=value1[t2];
value16=(value14-t2*4*square(value15/t2))/(t2*4);

value17=mtm(t2/2);
value18=wma(value17,round(t2*0.2,0));
value19=wma(value16,round(t2*0.2,0));

condition1=s1 and value19<value19[1] and value18>value18[1];
condition3=not s1 and value18 crosses over 0;
if value18 crosses under 0 then condition2=true;
if trueall(value19>value19[1] and value18<value18[1],t2*0.1) then condition4=true;
if (condition1 or condition3) and condition2 and condition4
then begin
 condition2=false;
 condition4=false;
 ret=1;
end;

符合這個腳本的例子如下

c61

這個腳本在多頭市場下的回測報告如下

 

c60

碗型底原本就可遇不可求,這個腳本把條件設的比較寬,挑中的要麻煩大家再檢視一下。

趨向指標轉向多頭(ADX趨勢成形)

ADX是DMI這個指標裡,一個確認趨勢確立的指標,這個指標轉正,代表上漲趨勢已然確立,我們發現,這個指標拿來應用基金投資的相關指數Benchmark上,有不錯的效果。

要印證這樣的想法,對應的腳本如下

input: Length(14), Threshold(25);

variable: pdi_value(0), ndi_value(0), adx_value(0);

settotalbar(maxlist(Length,6) * 13 + 8);

SetInputName(1, "期數");
SetInputName(2, "穿越值");

DirectionMovement(Length, pdi_value, ndi_value, adx_value);

if adx_value Crosses Above Threshold
then ret=1;;

以下的例子就是腳本所挑出來的標的之一,這樣的訊號會出現在整個上昇趨勢確定的當下。

C59

這個策略在多頭市場下的回測報告如下:

C58

從勝率上看,幾乎已經是三戰兩勝的比例了。

價量配合良好

全球資金始終在尋找下一個看好的市場,被看上的市場,在全球資金湧入下,成交量應該都會回升,所以應該會有兩個特徵: 一是五日均量大於二十日均量,二是價量配合良好。

根據這樣的想法,我們可以應用以下的腳本

variable:x(0),count(0);
count=0;
for x=0 to 10
begin
if close>close[1]xor volume>volume[1]
//價量背離
then count=count+1;
end;
if count<=3//近十日價量背離頂多3天
then begin
if average(close,5)crosses over average(close,20)
//且五日均量突破20日均量
then ret=1;
end;

以下是一個上述腳本挑出來的例子

C57

這個策略在多頭市場下的回測報告如下

C56

這是一個勝率不錯的策略,不過一樣是在大環境不錯的時候才有效,全球股票市場如果走空頭,資金往債市或商品市場跑時,這種要持有四十天的策略就可能無法奏效了。

價量都呈多頭排列

移動平均線是大家常用的波段操作工具,我們常會去尋找均線週月季線呈多頭排列的市場,然後認為這個市場,目前應該就是處於所謂的多頭市場。但人家說量是價的先行指標,正常的多頭市場應該可以吸引更多的資金駐足停留,所以成交量的均線應該也要呈現多頭排列。

根據上述想法的腳本如下

value1=average(close,5);
value2=average(close,20);
value3=average(close,60);
value4=average(volume,5);
value5=average(volume,20);
value6=average(volume,60);
if value1>value2 
and value2>value3
and value4>value5
and value5>value6
then ret=1;

下面就是一個很典型的例子

C55

多頭市場時,這個策略的回測報告如下:

C54

同樣的,這個策略在市場是回昇時會賺錢,是反彈時必須善設出場點。

大跌後的強勢反彈

一個市場如果之前是下跌,但最近幾天的上漲幅度非常的陡,有可能代表價格在經過長期股價調整之後,已經過度超跌,一旦出現重要的多空轉折,價格開始回升,也代表一個空頭行情可能就此譜上休止符。

 

根據上述的想法所寫的腳本如下

if 
angle(date[50],date[5])<0
and
angle(date[5],date)>25
then ret=1;

它的概念就是過去五十個交易日到過去五個交易日,股價下跌,斜率是負的,最近五天股價上漲,斜率是正的,且角度超過二十五。

以下是其中一個例子。
C53

在多頭市場,這個策略的回測報告如下

C52

從回測來看,市道好的時候,這樣的從下跌回到上漲代表的是回昇而不是反彈,所以持有四十天的績效是不錯的,但如果市道不好,可能就是反彈而不是回昇,出場點就可能不能設在四十天後了。

往上走勢超強

在技術分析裡頭,布林值突破上軌往往代表的是行情出現異常的強勢,而KD高檔鈍化也是另一個行情異於往常的強勢的表現,如果這兩種情況同時出現,顯示目前的強勢表現可能是真的不一樣了。

根據上述概念所寫的腳本如下

input:length(20,"布林值計算天數");
variable:up1(0),down1(0),mid1(0),bbandwidth(0);
up1 = bollingerband(Close, Length, 2); 
//以上是計算布林值的上軌值
input: day(9, "日KD期間");
variable:rsv_d(0),kk_d(0),dd_d(0);
stochastic(day, 3, 3, rsv_d, kk_d, dd_d);
//以上是計算KD值

if kk_d >=80
//KD鈍化
and close crosses over up1
then ret=1;

以下是根據這個腳本所跑出來的一個例子,在進場點之前,這檔商品已經強勢一陣子了,且強度異於以往,代表多空雙方的角力應該是有了決定性的方向。

C51

在多頭市場,這個策略的回測報告如下

C50

交易次數是多了些,建議可以輔以成交量或動能等其他策略一起作決策。