Author Archives: 發財橘子

輸出語法

在撰寫語法的過程中,我們一行行的寫著敘述式,希望電腦照著我們的意思,拿著開高低收成交量這些數據去運算,運算總會有個結果, 我們會希望電腦根據這個結果,幫我們做點什麼,這裡說的什麼,就是電腦運算中所謂的輸出。
在XS的語法裡,輸出的方式,除了透過交易語法,進行自動化交易之外,還有幾種輸出的功能,分別如下表 ,茲分述如下

07_輸出語法_1
output

一,PlotN

Plot是在自設指標的時候用的,當我們寫了一個腳本之後,腳本的最後輸出基本上是分兩大部份, 一種是根據腳本把一個數值畫成一個自訂的指標,另一種則是在數值符合某種情況時,請電腦通知我們某商品已符合某條件這樣的警示訊息。 Plot就是用來請電腦幫我們把某數值繪成指標的語法。
OUTPUT1

例如 :
我們如果要把每天的收盤價繪製成一條線
我們可以寫plot1(close);
我們也可以在要繪圖的數值後面用逗號及引號來加註這數值
我們可以寫plot1(close,”收盤價”)
如果要畫兩條線,我們可以一條用 plot1,另一條則是plot2
例如以下的範例,如果我們想要畫兩條線,一條呈現K棒的總長度,另一條顯示K棒的實體長度,我們可以寫下以下的腳本 :

OUTPUT2

然後幫這個腳本取名為 ”K棒長度”
這樣子我們在XQ技術分析的頁面中,就可以透過選取自訂指標的方式,選取K棒長度這個腳本來繪圖,然後您就會看到如以下的圖形, 所以透過腳本的撰寫,你可以算出各式各樣的數值,然後透過PlotN這樣的語法,把這些數值一條一條畫在XQ技術分析的自訂指標中。OUTPUT3

二,RetVal

除了繪圖之外,其實最常用的是把腳本應用在警示上,讓電腦在運算後符合某種條件時,發出通知訊號,我們總是希望電腦在股票符合什麼條件的時候通知我們,這時候就用得上這個語法。
它的語法格式如下 :
Retval=1 或 retval=0
我們可以簡寫為 :
ret=1 或ret=0
Retval是return value的簡寫,XS的語法設定當Retvalue=1時電腦會觸動警示,所以如果你希望台積電股價突破150元時電腦可以通知您,就可以寫出以下的腳本 :
If close>150 then ret=1;
If …….then ret=1; 是很標準的警示觸發條件的撰寫格式。

三,Print
除了繪圖及警示之外,有時為了撰寫腳本時的除錯,校對資料 或是研究用,我們需要輸出特定的數值,這時候就需要print這個語法,它的語法格式如下:

OUTPUT4

例如我們想知道電腦今天有沒有把最新成交的數據送進來,我們就可以寫出以下的腳本 :

Print(CurrentDate,Open,High,Low) // 輸出 日期 開盤價 最高價 最低價

然後當我們拿這腳本去用台積電執行腳本時,在XS程式的PRINT檔案夾中,會有一個test_2330.TW………的文字檔, 當你打開這個檔案時,會出現像下面附圖之類的文字
OUTPUT5
電腦依據你要求的PRINT指令,把日期及開盤,最高,最低都印了出來。
Print這個功能,主要是可以拿來作研究用,舉個例子 :
如果我們想知道用RSI黃金交叉來作為台積電的買進訊號,隔天上漲的機率高不高? 我們可以寫一個腳本 :
OUTPUT6
然後在進階警示清單的介面上,用台積電這檔股票去跑最近300筆資料,系統會在 sysjust/XQ2005/XS/Print的目錄底下, 跑出一個文字檔,如果用excel去打開,可以看到如下圖的一個表 :

OUTPUT7

這個表就是根據我們要求的print格式所列出來的三個欄位,最右邊那一欄就是符合前一日rsi黃金交叉條件的當天收盤價減前一日收盤價的值, 從這個表我們可以看得出來,在出現rsi黃金交叉之後的隔天,台積電股價並沒有太高的上漲機率,所以我們大概可以了解, 如果在rsi出現黃金交叉時隔天進場買台積電,並不會賺到錢。
Print的功能主要就是可以自己訂定輸出的格式,這對作研究及想要改進腳本的人,是個很有用的功能,特別是現在在python上有非常多人工智慧的套件,我們可以透過print的功能,把透過XS語法計算出來的數據,拿到Python平台的 AI套件上去訓練模型。

四,RaiseRun TimeError

在撰寫腳本時,有時候當數據如果錯誤時,程式會出現錯誤,例如當除數是零的時候,這時候電腦就很容易卡在那邊, 或者有些腳本只適合日線,如果用在分鐘線,就可能要算很久且出來的結果也不能用,這時候這個Raiseruntimeerror就是一個很好用的輸出語法, 可以馬上通知電腦中斷執行,這樣就不會出現電腦當機之類的意外情況。其語法格式如下:

OUTPUT8

這個語法是在raiseruntimeerror這個字的後面加一個小括號,然後把想要輸出的文字用雙引號寫下來, 放在括號裡,當條件符合的時候,電腦會輸出雙引號通知使用者。
例如當我們要寫一個只適用在一分鐘線的腳本時,我們第一行可以像下面這樣寫 :

if barfreq <> "Min" or barinterval <> 1 then RaiseRunTimeError ("請設定頻率為1分鐘");

這麼一來,如果頻率不是設定為1分鐘線時,電腦一讀到這一行就會直接中止執行這個腳本,這樣就可以避免電腦執行一個不適於其他頻率的腳本。
例如我們用五分鐘線在台積電這個檔股票執行上面那一行敘述,電腦就會出現以下的訊息
OUTPUT9

常數

有了回傳值,運算子及標點符號,就可以組成陳述式。
例如: 如果我們想在商品跳空開高時電腦要通知我們,我們可以寫下以下的陳述式 :

Open>high[1]

但今天的開盤價要比前一開高點跳空多少你覺得才是你要的呢? 1%? 2%
這時候我們可以把一些數字加進來,我們可以寫成 :

Open/high[1]>=1/100

這一行的陳述式就變成不只跳空開高,而且最少要開高1%,在這邊,我們的腳本引用了兩個阿拉伯數字,一個是”1”,一個是”100”, 這兩個數字,不管open是多少,也不管high是多少,1就是1,100就是100,這樣的數字我們稱之為常數 。Djscript讀得懂的常數除了阿拉伯數字之外, 另外就是true 跟false 這兩個邏輯上常被拿來使用的字詞。
所以學到這邊,我們可以用回傳值、運算子、符號及常數來組成一個陳述式,例如可以寫一行陳述式如下 :

(High-low)/(high[1]-low[1])>1

這一個陳述式的意思是今天的震盪區間比前一天大。
Constant 為常數,使用者無法變動,但是可以使用,就像1,1就是1,永遠不會變。

標點符號

在學會使用回傳值及運算子之後,要完成一個敘述式,還必須要用到一些標點符號,這樣才能完整的完成一個電腦看得懂的敘述式。
完整的標點符號及其用途分別如下,有些我們目前還用不著,例如宣告參數及變數所用的冒號,但先了解一下電腦看得懂的標點符號及其用途是有必要的, 因為電腦是很死板的,它是死腦筋,該在腳本出現的每個標點符號,少一個不行,多一個也不行。

作為腳本註解的標點符號
這當中要特別說明的是 // 及{ } 這兩個拿來當註解用的符號,// 代表的是在這個符號後面那一行的文字全部會被電腦給忽略, 所以可以拿來當註解,{ } 大引號則是不管出現在那裡,有多少行,只要出現了,在兩個引號中間的所有內容,電腦都忽略。
所以如果只是在一行敘述式後面加上說明可以用 // ,但如果是一整段的敘述式要請電腦不要讀的話用{ } 大引號比較方便。

只要是 // 以後的同一行文字數字電腦都忽略,可用來當一行敘述式的註解
如果把 // 放在一行敘述式的最前面,就算後面照著語法寫,電腦還是會忽略 。
如果我們嫌 // 的後面的文字太長,一行寫不下,換行時,如果前面不再加個 // ,電腦會視為這是一行新的敘述式,會去讀它 , 這時編譯時也會發生錯誤。

但如果我們用 { } , 在大引號中間的所有文字電腦都視為註解,編譯時就不會理會這中間的內容了。

到這邊已經學會基本的程式交易語法內容了,我們不妨試著寫出幾個腳本
例如 以下的這個 :

volume > volume[1] and
volume[1] > volume[2] and
close < close[1] and
close[1] < close[2] and
close < open and
close[1] < open[1] and
close[2] < open[2]

這樣的寫法要表達的是 :
1. 前日量小於昨日,而昨日小於今日
2. 收盤價是今日小於昨日,且昨日小於前日
3. 今日收黑,昨日收黑且前日亦收黑
再例如以下的這個腳本 :

Close=open and close=high
And (high-low)>(high[1]-low[1]*2

這就是江湖人稱的蜻蜓十字 :
蜻蜓十字線
蜻蜓十字線

要符合這樣的K線型態有幾個要素 :
1.收盤價等於開盤價且是當天最高點 close=open and close=high
2.最近一根bar的下影線是前一根bar 高低點的兩倍以上 (high[0]-low[0])>(high[1]-low[1] *2

回傳值,運算子及標點符號,是組成腳本的最基本元素,學到這裡,算是最基礎的語法結構我們都學完了。

運算子

運算子的功用

在學會使用回傳值的概念之後,接下來,我們先來介紹腳本中,要串接回傳值,建立各種運算的關係時,所需要用到的元素, 這些元素,稱之為運算子(operator)。

我們必須靠這些運算子,把電腦幫我們準備好的回傳值,拿來作數學運算,比大小,作邏輯判斷, 如此一來,才能完成一個敘述。
例如open >high[1]這個陳述式,open與high[1]之間,就是透過>這個字來建立關係, 這些被拿來建立數值與數值之間關係的字,我們統稱之為運算字。

運算子的種類
Xscript所提供的運算子分成三大類,分別為數學運算子,關係運算子,邏輯運算子,茲分述如下:

數學運算子

這部份的運算子,大家都很熟悉,一共有四個,就是我們在小學數學課本裡學過的加減乘除, 這些基本的數學運算包括相加 “+”,相減 “-“,相乘 “*”, 相除”/”,以及等號”=”。
例如以下的敘述式 :

close/close[1]>1.02

這代表這個bar的收盤價比前一根的收盤價漲幅超過2%。

關係運算子

關係運算子是在呈現兩個數字之間的關係,Xscript中可以拿來運用的關係運算子, 都是大家很熟悉的大於(>),等於(=),小於(<),大於等於(>=),小於等於(<=),不等於(<>)共六種。
在這邊要特別說明的是,關係運算式的兩端各都只能是一個代表數值的文字或數值, 所以我們可以寫

close>close[1] and close[1]>close[2]

但我們不能寫

close>close[1]>close[2]

因為這樣的寫法在>這個關係運算式的兩端,有一端不是數值而是true,false的邏輯值了。

邏輯運算子

邏輯運算因子有三個 : and, or,Not
前兩個運算子是拿來串接兩個邏輯判斷式,其運作的邏輯如下:
true and true=true
true and false= false
false and true = false
false and false = false
true or true = true
true or false = true
false or true = true
false or false = false
至於not,則是拿來否定一個邏輯判斷式之用
not false=true
not true=false
有了這三種運算子,加上上一節介紹的回傳值,我們就可以很方便的描述股價間的各種關係了。

回傳值

開高低收成交量是交易語法的組成基本要素 開高低收是一段時間內,多空拔河角力下的記錄,成交量則是多空爭戰激烈程度的衡量標準。

開盤價
代表的是多空在哨音響起時的多空對峙形勢,跟先前收盤價的差距,代表的是多空這一回合爭戰時,一開始的氣勢差距。
最高價
代表的是多頭今天氣勢最強時,向空頭佔領過的領土最極限。
最低價
代表的是空頭今天氣勢最強時,向多頭佔領過的領土最極限。
收盤價
則是在在時間結束時,多空最後對峙的那個點。

在語法上,open、high、low及close, 代表的是每個頻率下的四個價位,也是我們與電腦溝通時,最常引用的數據。 透過open、high、low、close及成交量這五個數字及中括號的應用,我們可以引用到所有K棒上的開高低收值。

回傳值的意義

什麼是回傳值,就是當你寫下一個名詞,電腦會知道要拿什麼數值進來計算的,就是回傳值,當我們用電子計算機按 10 * 2時, 10跟2都是我們按下去通知電腦要拿這兩個數字來計算。 在腳本裡,我們通知電腦要拿什麼數字來計算時,不可能一個個數字按給電腦知道,當我們需要拿最高價來計算時, 就在腳本上寫high, 這樣的表達方式,是我們跟電腦約定好的, 它看到這樣的字眼,就會自動去把對應的數字拿來用。
例如當我們寫一個行敘述叫high – close時,電腦在這個腳本被拿來運算時,會去找這根bar的最高價是多少(例如是43), 這個bar的收盤價值是多少?(例如是40),那麼電腦就知道這一行陳述的意思是43-40>0,那麼電腦就知道這一行敘述是true
在Xs語法當中,像high這樣的回傳值,一共有下面幾個:

當您使用這些詞時,背後代表的是讓電腦去幫你把它背後所代表的的那個數字叫出來。
回傳值有那幾個?

回傳值回傳值大部份是數字,包括開高低收及成交量,未平倉(期貨適用),在日線的頻率下,我們也可以用Uplimit來讓系統傳回 當天的漲停價,用downlimit讓系統傳回當天的跌停價。

但有兩個回傳值的資料格式不是數值,一個是date(可簡寫成d)傳回的是日期格式,另一個是time(可簡寫成t),傳回的是時間的格式。

回傳值的簡寫
我們在應用這些回傳值的時候,除了寫上完整的名稱之外,也可以只寫簡寫就好。這些簡寫都是用一個英文字母來代替一個特定的回傳值,例如Open就可以直接寫成O,High可以直接寫成H,大小寫皆可,上面那個表中有所有回傳值可以簡寫的方式。

例如我們如果要寫今天收在最高點,正常我們會寫成

close=high

但我們也可以簡寫成

c=h

回傳值是大部份腳本的主要構成份子,也是最基本的元素。

XS語法的基本結構

舉凡所有語法,都是撰寫者寫出電腦看得懂的文件,這種文件,我們稱之為腳本。

1.11

敘述式
Xscript的語法基本架構上,跟其他的程式交易語法平台一樣,為了讓電腦看得懂,我們必須安排一種特殊的寫作方式。 這樣的寫作方式,是由一行一行的敘述式(statement)所組成。這些敘述式的最後,都會有一個分號”;”來宣告這一行的敘述式已經結束。

腳本
每個腳本,就是把一行行最後由分號來結束的敘述式(statement),按照執行的先後順序排在一起,當我們把一個腳本送給電腦時, 電腦會根據每一個敘述式在腳本中的順序,依序一行一行的執行腳本上的指令。每一行敘述式,都是由六種不同的文字所組合,這六種不同的文字,就像下圖中不同的分類

時序的觀念

為了讓user用原本就習慣的思考模式來撰寫腳本,Xscript必須貼近使用者的思維方式。而目前大部份
的市場參與者, 其思維方式,是建構在由開高低收成交量所呈現的一個時間序列上。

市場參與者,是透過一個時間序列,來去了解商品的過往價格走勢,並且作為預測未來多空方向的根據。
我們在作技術分析時,不會只看一根BAR,我們看的是數十根數百根BAR排在一起時所呈現的型態,趨勢,支撐,壓力等等。
所以我們必須讓電腦知道,我們現在要運算的,是第幾根K Bar 。
怎麼做呢?
我們用close[1]來代表前一根bar的收盤價,這個中括號裡的數字,代表的是前n根bar裡的值,所以, high[5]代表的就是今天算起前面第五根bar的最高價,也因此 ,close[0]代表的就是往前算第0根的收盤價,也就是今天的收盤價。
K11

各位可以參考上圖,我們可以用這樣的語法,讓電腦清楚的知道,我們所指的是那一根bar的那一個值。
於是,如果要讓電腦找出今天價量齊揚的股票時,我們可以這麼寫 :

close>close[1] //今天的收盤價比前一天的收盤價高
And volume>volume[1] //今天的成交量比前一天的成交量大

又例如,如果要讓電腦找到今天漲幅超過五%且成交量比前一天多超過一千張的股票,那我們可以這麼寫 :

close>close[1]*1.05
And volume-volume[1]>1000

上面的這兩行敘述,意思就是一個商品的收盤價大於前一天收盤超過5%而且成交量比前一天的成交量多一千張。
為了貼近使用者的想法,XS的語法基本上,就是建構在這樣的一個基礎之上,它用兩個準則,來作為使用者與電腦溝通的基本原則
1. 用Open ,high,low,close以及volume這五個英文詞,來代表最近一根K線上的開、高、低、收、成交量。
2. 用中括號及在括號內的阿拉伯數字來代表這是從最近一根K線往回算起的第幾根K線。
透過這兩個準則,使用者可以把K線圖上的每一個被記錄下來的值,都拿來用在自己撰寫的腳本上。
例如我們可以用high[1]代表前一天的最高價,所以如果open>high[1],代表今天的開盤價大於昨天的最高價,也就是今天跳空開高的意思。


例如 : 我們在尋找紅三兵股票時,必須遵循三個原則 :
1. 最近三天都上漲
2. 三天的K線實體部份都要是紅色的,也就是說三天的收盤價都高於開盤價
3. 實體紅棒的部份一天比一天長
那麼要讓電腦知道我們要找的是紅三兵的股票時,我們可以列出三個敘述

close[2] > close[3] and close[1] > close[2] and close > close[1]
close[2] > open[2] and close[1] > open[1] and close > open
close[2]-open[2] < close[1]-open[1] and close[1]-open[1] < close-open

又例如 : 我們如果要寫一紅包三黑,我們必須遵循以下幾個規則
1. 前三根K棒都是黑色的
2. 最後一根是長紅棒
3. 最後一根的收盤價比前三根的高點還高

我們可以把上面的這些規則改寫成以下電腦看得懂的敘述

close[3]< open[3] and close[2]< open[2] and close[1]< open[1]
close>open
close> high[3]

透過這樣的語法約定,我們可以把每一根K線上的每一個開高低收成交量的值都拿來用,如果我們要表達價漲量增,我們可以寫

close>close[1] and volume>volume[1]

我們使用這五個英文的詞語及中括號,告訴電腦我們希望它拿那些數字來作運算, 上面所用的open ,high, low, close,volume,都是我們這麼寫,電腦就會把數值傳回來作運算的指令 。
要完成一個可以幫我們請電腦協助完成工作的腳本,除了回傳值之外,可能出現在腳本內容裡的字詞,還包括了標點符號,常數,運算子,輸出及忽略字等幾種文字。
在後面的章節,我們依序了解這些不同的字詞在腳本中會怎麼被使用。

多空六大階段指標

我幾年前拜讀過一篇文章,作者把一檔股票的多空循環走勢分成六大階段,他用兩根不同天期的移動平均線與最新股價的相對位置來定義這六大階段。

1.Recovery復甦期。 收盤價大於50日均線但小於 200日均線且50 日均線小於200日均線
2.Accumalation籌碼收集期。 收盤價大於50及200日均線但50日均線尚未突破200日均線
3.Bullish 多頭走勢期。 收盤價大於50及200日均線且50日均線高於200日均線
4.Warning 高處不勝寒期。 收盤價跌破50日均線,但大於200日均線且50日均線仍高於200日均線
5.Distribution籌碼發散期。 收盤價跌破50日均線及200日均線,但50日均線仍在200日均線之上
6.Bearish 空頭走勢期。 收盤價跌破50日均線及200日均線,且50日均線也處於200日均線之下。

我以鴻海為例,把這六階段分別描繪在上圖。

我們可以看到,一個完美的多空循環,這六個階段是依序出現,我們可以透過這三條均線的位置,知道目前的股價是處於那個階段,也知道接下來當進到什麼階段時我們的交易策略應該怎麼調整。

一般來說,我們會在復甦期開始小量進場,籌碼收集期加碼,多頭確立時再加碼,然後高處不勝寒時獲利了結,然後依序再加碼作空。

於是我寫了一個指標的腳本

var:m50(0),m200(0);
m50=average(close,50);
m200=average(close,200);
if close > m50 and c< m200 and m50<m200
then value1=10
else value1=0;
if close > m50 and c> m200 and m50<m200
then value2=20
else value2=0;
if close > m50 and c> m200 and m50 > m200
then value3=30
else value3=0;
if close < m50 and c>m200 and m50>m200
then value4=-10
else value4=0;
if close < m50 and cm200
then value5=-20
else value5=0;
if close < m50 and c then value6=-30
else value6=0;
plot1(value1,"復甦期");
plot2(value2,"收集期");
plot3(value3,"多頭");
plot4(value4,"警示期");
plot5(value5,"發散期");
plot6(value6,"空頭");

我個人的觀察是,如果復甦期,收集期及多頭是按步就班地上演,且短線漲幅還不大時,就很值得留意了。

這個指標拿來應用在大型股及指數頗有參考價值。

tse6

每個月賺八萬元的交易策略怎麼寫?

今周刊最近有一篇很紅的文章,寫的是一位投資部落客的故事,連結如下:
http://www.businesstoday.com.tw/article-content-80402-114064
這位高人,他的做法是長期投資高股息的個股,選對標的,定期追蹤。

文章中有提到他的決策流程
1.從年報中挑出好股票。
所謂的好股票,他列了五個條件
a.本業獲利占比在八成以上
b.自由現金流量大於零
c.利息保障倍數大於二十倍
d.ROE(股東權益報酬率)大於八%
e.營業利益率要大於0%。
2.等到這些股票股價夠便宜時再買進
a.pe<12倍
b.股利殖利率大於6%
c.股價低於獲利能力比率
這裡的獲利能力比率,根據這位高手的定義是「公司每股淨值」乘上「最近年度實際ROE」,再除以「產業期待ROE」,他認為產業期待的ROE,半導體股約是10%,成熟型電子股約是8%,而傳產約是6%

我根據了他上述的選股及進場條件,試著寫了一個XS的選股腳本如下:

value1=GetField("營業利益","Q");//單位百萬
value2=GetField("稅前淨利","Q");//單位百萬
value3=GetField("來自營運之現金流量","Q");//單位百萬
value4=GetField("資本支出金額","Q");//單位百萬
value5=GetField("利息支出","Q");//單位百萬
value6=GetField("所得稅費用","Q");//單位百萬
condition1=false;
condition2=false;
condition3=false;
if value2>0
then begin
if value1/value2*100>80
then condition1=true; //本業獲利佔八成以上
end;
if value3-value4-value5-value6>0 //自由現金流量大於零
then condition2=true;
value7=GetField("利息保障倍數","Y");
value8=GetField("股東權益報酬率","Y");//單位%
value9=GetField("營業利益率","Q");//單位%
value10=GetField("本益比","D");
value11=GetField("殖利率","D");
value12=GetField("每股淨值(元)","Q");
value13=value12*value8/8;//獲利能力比率
if value7>20 and value8>8 and value9>0 and value10<12
and value11>6 and close<value13
then condition3=true;
if condition1 and condition2 and condition3
then ret=1;

根據這個腳本,昨天選出的股票有16檔(股魚先生一般都會扣掉營建跟金融股)
股魚先生都是利用放假日作功課,有xs當工具的朋友,不妨把這腳本copy回去run,這樣連假日都可以出去走走,節省一些做功課的時間。

不過在使用上,有兩點要注意的
1.操作紀律與資金分配。我猜想股魚先生應該是個很有紀律的人,這點是user自己必須要有的修練。
2.定時檢視持股的基本面情況。有些符合上述條件的股票,產業成熟化或企業老化後,數據會開始走下坡,所以得定時檢視持股的月營收表現。
總的來說,每個月要靠股息及長期投資賺八萬元,股魚先生指出的是價值投資,穩定配息,低價時才出手的策略,xs能幫上忙的是透過語法腳本,更有效率的找到符合條件的股票,至於user,則必須能修練出像股魚先生般鋼鐵般的紀律。

偉大的航路,江山代有才人出,大家一起努力囉!

合理的本益比跟盈餘品質與成長力有關

“為啥這兩檔股票EPS一模一樣,但股價差這麼多?”
經常被問到這樣的問題。
扣掉那些人為炒作的因素,我的經驗是盈餘愈穩定的,以及盈餘成長能見度愈高的,可以享有的合理本益比就愈高。
相反的,那些今年大賺,明年大虧的公司,以及那些數年來盈餘數字都未見成長的公司,市場給的本益比就比較低。
現在有了XS,我們可以用敘述式來呈現這兩個概念,例如我們如果要找那些盈餘品質不錯,過去五年營業利益成長率都沒有衰退超過5%的公司,我們就可以這麼寫

value1=GetField("營業利益成長率","Y");
if trueall(value1>-0.05,5) then ret=1;

如果我們要找連續五年營收都比前一年成長的公司
我們可以這麼寫

value2=GetField("營收成長率","Y");
if trueall(value2>0,5)
then ret=1;

透過這兩個條件的交集,我們可以找出盈餘品質不錯,業績又成長的公司,這些就是合理本益比可以抓的比較高的公司。

策略型交易結構‬

在操作一個策略的時候,有個關鍵的進場點和出場點,可是即時選股沒有!
今天使用者可能看到一檔股票從即時選股裡面跳出來說創20日新高了! 點進去技術分析一看! 已經是第5天創20日新高!! 最近一個星期每天都在創新高! 這樣的股票,投資人是否敢進場實在是一個大問號? 如果不是一個進場的良好依據,那這樣的即時選股對策略化交易而言會存在多少意義呢?
策略化的交易結構沒有這個問題! 怎麼說呢? 因為在系統設計的流程中,我們可以依需求設定跳出來的時間,價位和更多元化的條件來控制部位! 先看下面最簡單的例子:[警示腳本]

var:SPosition(0);
if SPosition = 0 then {當策略沒部位的時候做的事A}
begin{A}
if Close > Highest(High[1],20) then {股價創20日新高}
begin
SPosition = 1; {策略部位變成多單}
retmsg ="多單進場"; {設定策略的進場訊息}
ret =1; {策略觸發}
end;
end{A}
else
if SPosition =1 then {當策略為多單部位的時候做的事B}
begin{B}
if Close < Lowest(Low[1],10) then {股價創10日新低}
begin
SPosition = 0; {策略部位由多單變為空手}
retmsg ="多單出場"; {設定策略的進場訊息}
ret =1; {策略觸發}
end;
end{B};

這樣一個完整的策略,只有在股票第一次創20日新高的時後會跳出來,明確的告訴投資人,這個就是進場點,而策略化的目的就是當這個訊號跳出來,完全不需要再看任何額外資訊就直接掛高於現價的價格做買進! 這樣才是策略化交易的精髓所在!
如果警示訊號跳來還需要再研究或觀察其他股性的行為,則是屬於主觀交易的範圍而不是系統化策略交易的一種了喔! 這樣的參考型警示訊號和即時選股是同一種類!
我們分辨清楚策略型和主觀型交易以後,在策略的研發上會有更上一層樓的作用喔!