分析家V5.0公式系統(tǒng)
幫助文件
版權所有©2003深圳市匯天奇電腦有限公司
本手冊是分析家《公式設計指南》的補充手冊,是對分析家V5.0公式系統(tǒng)新增功能的說明,其基本操作請參閱《公式設計指南》。
深圳市匯天奇電腦有限公司對分析家軟件及本手冊的內容不做任何形式的保證。用戶在使用本軟件及手冊的過程中造成的必然或偶然之過失,深圳市匯天奇電腦有限公司概不負責。
未經深圳市匯天奇電腦有限公司事先書面許可,本手冊的任何部分不得以任何形式進行增刪、改編、節(jié)選、翻譯、翻印或仿制。
本手冊的全部內容深圳市匯天奇電腦有限公司可能隨時加以更改,此類更改將不另行通知。
©2003本手冊的著作權屬于深圳市匯天奇電腦有限公司
分析家V5.0公式系統(tǒng) 1
使用與提高 1
分析家V5.0公式系統(tǒng) 6
一. 分析家新公式系統(tǒng)簡介 6
二. 隱含在公式中的循環(huán) 7
1. 計算的順序 7
2. 迭代計算 8
3. 初始數值及變量聲明 9
4. 參數說明 10
三. 分支 10
1. 為什么要分支 10
2. 以前我們是怎樣實現分支的 10
3. 分支的描述方法 11
4. 分支舉例 13
四. 循環(huán) 13
1. 為什么要循環(huán) 13
2. WHILE循環(huán) 15
3. FOR循環(huán) 16
4. 循環(huán)的終止 17
5. 循環(huán)的嵌套 17
6. 循環(huán)舉例 18
五. 新交易系統(tǒng) 19
1. 新交易系統(tǒng)的設計目標 19
2. 新交易系統(tǒng)的買入和賣出 19
3. 新交易系統(tǒng)設置 22
4. 新交易系統(tǒng)狀態(tài)函數 23
5. 新交易系統(tǒng)的K線指示 24
6. 新交易系統(tǒng)的測試 25
7. 新交易系統(tǒng)指標 25
8. 新交易系統(tǒng)舉例 26
六. 字符串 26
1. 字符串的定義 26
2. 字符串的計算 27
七. 數組 27
八. 專業(yè)財務數據 29
九. 其它 29
1. 數據二 29
2. 自定義數據 30
3. 交易系統(tǒng)介入點設定 31
十. 調試 33
1. 為什么需要調試 33
2. 調試前的準備工作 33
3. 運行 34
4. 單步運行 34
5. 執(zhí)行到指定目標 34
6. 設置斷點 35
7. 查看變量內容 35
8. 運行到指定時間 35
十一. 綜合舉例 35
1. 均線系統(tǒng) 35
2. 指數平滑移動平均線 36
3. 寶塔線(鬼變臉) 36
十二. 新增函數列表 38
1. 相關性函數 38
2. 除權除息 40
3. 行情函數 40
4. 時間函數 41
5. 引用函數 41
6. 常數函數 42
7. 繪圖函數 43
8. 字符串函數 45
9. 指標函數 48
10. 數據函數 48
11. 專業(yè)財務數據 48
12. 專業(yè)財務數據代碼內容對照表 50
13. 交易系統(tǒng)函數 59
14. 輸出修飾符 64
15. 其它函數 66
分析家V5.0公式系統(tǒng)
分析家V5.0公式系統(tǒng)在兼容舊版本公式系統(tǒng)的基礎上,引入了一些全新的概念,為書寫、描述更為復雜的公式提供了強有力的工具。對于有一定公式編寫基礎的用戶,可以學習以下內容,掌握分析家新公式系統(tǒng)的強大功能。
一. 分析家新公式系統(tǒng)簡介
你是否在編寫公式的過程中有以下困惑:
1) 書寫很長的而且大量重復的公式
2) 為怎樣描述一個特殊的概念而傷透腦筋
3) 希望增加公式系統(tǒng)的函數數量
4) 希望了解計算過程中,中間結果的數值
5) 希望自己編寫函數
如果有,那么你就需要使用分析家V5.0公式系統(tǒng)了,新的公式系統(tǒng)全面兼容以前的公式系統(tǒng),同時還給你帶來許多革命性的特性。新公式系統(tǒng)的增加的主要內容有:
1) 新增迭代、分支、循環(huán)等標準程序語言語法
2) 強大的字符串和數組運算
3) 內建調試器,方便公式查錯
分析家新公式系統(tǒng)為用戶提供了兩個公式編輯器:一個是專業(yè)公式編輯器,通過公式管理器可以進入,它提供了公式編輯、編譯、調試等多種功能,是一個功能強大的編輯器;另一個是標準編輯器,它與過去版本界面類似,通過除了公式管理器以外的位置均進入到這個標準編輯器,它短小精干,易于使用。
這些新增的內容有一定的難度,適合具有計算機編程知識的用戶閱讀。通過下面章節(jié)的學習,你將會逐步了解到這些新特性將給你帶來的方便。
二. 隱含在公式中的循環(huán)
1. 計算的順序
在公式系統(tǒng)中,每一個公式是按照語句順序執(zhí)行的,例如:
V0:=MA(CLOSE,5);
V1:=MA(CLOSE,10);
將首先執(zhí)行5日均線的計算,然后再計算10日均線,但是我們忽略了一個問題,那就是其中還隱含了一個時間順序的問題,也就是說先計算昨天的數值再計算今天的數值。這樣,我們就有了兩個順序——語句順序和時間順序,我們到底以哪一個順序為優(yōu)先呢?答案是以時間順序為優(yōu)先,也就是說計算第一天的V0,第一天的V1,然后是第二天的V0,第二天的V1…。對于上面這個例子,由于前后語句之間不存在相互影響,所以到底哪個順序優(yōu)先并不影響結果,因此很多人都忽略了這個問題,認為應該首先計算完所有的V0,然后再計算V1。但是在看下面例子:
V0:=IF(V1>CLOSE,CLOSE,V1);
V1:=MA(CLOSE,10);
前面的語句引用了后面的數據,這樣V1昨天的計算結果就會影響到V0的計算,此時就必須以時間順序為優(yōu)先。
有了這個時間順序優(yōu)先,我們就可以解決過去前后數據互相引用、變量重新賦值、迭代計算等問題了。
因此我們應當按照這樣的方式思考:我們用公式描述一天的情況,而不是描述一條曲線,整個公式又隱含著一個時間循環(huán),當算完一天的數據后,又重新回到公式起點,計算第二天的數據,如此循環(huán)直到計算完所有的數據。需要注意的是,這個隱含循環(huán)中可能存在前面語句引用后面數據的問題,如上例中第一個語句中引用了V1變量,而V1變量需要到第二句才有賦值,所以此時它的數值是在上一輪循環(huán)中第二條語句所賦值的,也就是昨天的10日均線數值。這是不是有點太復雜了,但是我們將看到這種循環(huán)為我們帶來的好處。
2. 迭代計算
我們在分析中經常會用到迭代的概念,比如說指數平滑移動平均線EMA,今日均線等于昨日均線*(N-1)加上今日收盤價*2,然后再除以N+1。這樣的問題還包括SMA、DMA等等。所謂迭代就是用上一周期的數值來計算本周期的數值。
過去由于公式系統(tǒng)不能直接支持迭代,所以只能用函數來實現這些迭代功能,用新公式系統(tǒng)后,迭代變得可以自己實現了,而且非常簡單。以EMA為例:
V1 := (V1*(N-1) + CLOSE*2) / (N+1);
就這么簡單,直接按照其原理書寫就可以了。我們來分析一下為什么可以這樣寫。賦值符號 := 左邊的V1表示本周期的數值,而右邊的V1由于還沒有賦值,還保持著上一周期的數值,因此這個V1就還維持著上次計算的結果,也就是上周期的數值,此時它等同于REF(V1,1)。同樣的,SMA可以表述為:
V1 := (V1*(N-1) + CLOSE) / N;
需要注意的是,在本語句之后,由于V1已經被賦值,所以它的數值也就變成本周期的數值了。類似的例子還包括:若上周期V1值大于收盤價,則V1等于最高價,否則等于最低價:
V1:= IF(V1>CLOSE, HIGH, LOW);
前面的例子:
V1 := (V1*(N-1)+CLOSE)/N;
我們可能會問,計算第一天的時候,V1的數值是多少。如無特殊說明,變量的初始數值等于0。顯然在這個問題中這個設定是不正確的,因為V1等于0的話,計算結果就等于CLOSE/N,顯然他不等于第一天的均值,因此我們需要這樣說明:
V1 :=IF(BARPOS=0,CLOSE, (V1*(N-1)+CLOSE)/N);
當計算第一天的時候,V1等于收盤價,隨后等于指數平滑移動平均。
迭代這個概念理解起來有一定的難度,但如果能夠很好地應用它能為我們解決很多問題。
3. 初始數值及變量聲明
任何變量在使用之前必須先賦值,那么迭代就有可能出現一個問題:變量還沒有賦值怎么使用。我們需要用變量聲明來解決這個問題:直接說明變量的初始數值和變量的類型,其語法如下:
VARIABLE: P=1;
表示聲明一個變量P,設定其初始數值為1,也就是說在計算的第一天,它的數值為1。這樣就可以在迭代中使用變量P了。變量聲明必須寫在任何語句之前,但如果有INPUT參數說明,則應當放在它的后面。
一個完整的指數平滑移動平均線公式可以寫成:
VARIABLE: V1=0;
V1 :=IF(BARPOS=0,CLOSE, (V1*(N-1)+CLOSE*2)/(N+1));
再舉個例子,我們需要知道當前正在計算第幾根K線?第一天為1,第二天為2,我們可以寫成:
VARIABLE: P=0;
P := P+1;
使用迭代,方便地描述了這個要求,今天的數值等于昨天的數值+1。這個例子也很好地說明了迭代的簡潔和功能強大。
在這里需要特別指出的是,變量聲明設定的初始值表示計算的第一天的數值,今后每次計算新的一天并不對該變量設定初始值,例如:
VARIABLE: V1=0;
V2:=0;
V1:=V1+1;
V2:=V2+1;
這當中V1、V2的計算結果將截然不同,V1設定了初始數值0,每次隱含循環(huán)加1,他的計算結果為1、2、3、4…,是一個遞增的序列;而V2則由于每次循環(huán)均被重新設定為數值0,因此V2:=V2+1這條語句將V2設置為1。因此,如果我們需要每天設定初始數值,則需要一條賦值語句來設定;如果我們不需要每天設初始值而是第一天需要,則使用VARIABLE語句聲明變量并且賦予初始數值。
4. 參數說明
新公式系統(tǒng)引入參數說明語句:
INPUT: [參數名]([默認值],[最小值],[最大值],[測試步長]);
其中默認值是必需的,其他值若沒有指定,則使用其默認值0,100和1。參數說明語句必須放在公式的最前面。
參數說明等同于在公式編輯器中直接在參數輸入框中輸入參數。系統(tǒng)將參數輸入框中和INPUT語句說明的參數累加起來,其總數不能不超過16個。使用參數說明語句,可以使公式程序放在一段文字中,可以方便一部分喜歡這種方式的用戶。你可以使用兩種方法中的任意一種,他們不存在區(qū)別。
我們可以在INPUT語句中說明多個參數,它們之間用逗號分隔。例如:
INPUT: P1(10,0,20), P2(20,0,100);
5. 總結
新公式系統(tǒng)的核心在于:我們只需要描述每一天的行為,如果當天沒有改變一個變量,則該變量維持昨天的數值不變。
三. 分支
1. 為什么要分支
所謂分支,就是如果滿足某個條件就執(zhí)行某些指令,否則就指令另外一些指令。有了分支,計算機就有了智能,知道根據具體情況作出不同的動作,這是計算機最重要的功能之一。
2. 以前我們是怎樣實現分支的
過去,我們也在函數中隱含地使用了一些分支概念,在函數中直接將分支包含進去。例如繪圖函數DRAWTEXT(Cond,Price,Text),表示如果Cond條件滿足就輸出文字。再例如,IF(Cond,V1,V2)表示如果Cond條件成立就返回V1,否則就返回V2。
但是這種包含在函數中間的條件也有許多缺陷,那就是它只能控制一條語句,而且只在有限的幾個函數中包含條件,這極大地限制了分支的應用。例如,我們就無法描述如果條件成立,V1就等于CLOSE,否則V2就等于CLOSE。
3. 分支的描述方法
我們使用IF [條件] THEN [語句] 來描述如果條件成立就執(zhí)行語句這樣一個邏輯,例如
IF CLOSE>OPEN THEN
P := P+1;
它表示如果收盤價大于開盤價,P的數值就增加1,否則P值維持不變,也就是說統(tǒng)計歷史陽線的數量。
需要注意,IF語句和IF函數使用同樣的關鍵字,區(qū)分它們的辦法是在IF語句之后必然存在THEN語句,而IF函數則沒有。因此我們不能在IF語句條件部分包含IF函數,例如:
IF IF(CLOSE>OPEN, OPEN, CLOSE)>10 THEN
P := P+1;
該語句將混淆兩個IF的作用,可以使用以下方法來解決:
C1 := IF(CLOSE>OPEN, OPEN, CLOSE)>10;
IF C1 THEN
P := P+1;
如果我們想要在條件滿足的情況下多做幾件事情怎么辦?在此我們引入BEGIN…END這樣一個語句來形成組合語句,也就是說將它們中間所包含的語句看作一個整體,一起執(zhí)行。組合語句被認為是一個整體,在接下來的分支、循環(huán)等操作中均需要用到。例如:
IF CLOSE>OPEN THEN BEGIN
P := P+1;
Q := MA(CLOSE,10);
END
它表示如果條件成立,將執(zhí)行對P和Q的賦值語句,否則這兩條語句均不執(zhí)行。
BEGIN…END語句可以嵌套,END與之前面最接近的還沒有配對的BEGIN進行配對。例如:
IF CLOSE>OPEN THEN BEGIN (1)
P := P+1;
IF CLOSE>10 THEN BEGIN (2)
P := P+1;
Q := MA(CLOSE,10);
END (3)
END (4)
其中,2-3是配對的,1-4是配對的。
分支語句還有以下形式:IF…THEN…ELSE,它表示如果條件滿足就執(zhí)行某件事,否則就執(zhí)行另外一件事。例如:
IF CLOSE>OPEN THEN
P := P+1;
ELSE
Q := Q+1;
這段公式表示,如果今天收陽線,則將P的數值增加1,否則將Q的數值增加1,需要注意的是,ELSE必須與IF配對,而且中間只能有一條語句或用BEGIN…END包圍起來的組合語句。IF…THEN…ELSE可以嵌套,ELSE與之前最接近的未配對的IF語句進行配對,例如:
IF CLOSE>OPEN THEN (1)
P := P+1;
ELSE IF CLOSE< OPEN THEN (2)
Q := Q+1;
ELSE (3)
R := R+1;
其中第(2)行的ELSE與第(1)行的IF配對,因為她前面只有一個IF;第(3)行的ELSE與第(2)行的IF配對而不與第(1)行的IF配對,因為第(2)行的IF未配對,而且距離第(3)行最近。在使用多層分支嵌套時,要時刻注意這個配對原則。
4. 分支舉例
例1:計算上市以來上漲天數和下跌天數的比率:
VARIABLE: UP=0, DN=0;
IF CLOSE>REF(CLOSE,1) THEN
UP := UP+1;
ELSE IF CLOSE< REF(CLOSE,1) THEN
DN := DN+1;
RATIO: IF(DN=0,0,UP/DN);
最后一條語句,判斷DN是否為0,用來保護結果不被0除。
例2:計算歷史上陽線的平均漲幅和陰線的平均跌幅
VARIABLE:UPR=0,UP=0,DNR=0,DN=0;
R := CLOSE/REF(CLOSE,1)-1;
IF CLOSE>OPEN THEN BEGIN
UPR := UPR + R;
UP := UP+1;
END
ELSE IF CLOSE< OPEN THEN BEGIN
DNR := DNR + R;
DN := DN+1;
END
平均漲幅: IF(UP=0,0,100*UPR/UP);
平均跌幅: IF(DN=0,0,100*DNR/DN);
四. 循環(huán)
1. 為什么要循環(huán)
循環(huán)是計算機程序中一個最重要的概念,它使計算機能夠按照用戶的意志重復執(zhí)行某個任務,我們前面所提到的公式系統(tǒng)中存在的隱含循環(huán)也是一種沿時間變化的循環(huán)。其實我們的函數中也大量包含了循環(huán)的概念,比如SUM、MA等等。我們來看看循環(huán)的概念。
如果我們計算從1加到100,寫成公式:
1+2+3+4+5…+100;
這個公式很長,而且寫起來容易出錯,如果我們是計算從1加到10000怎么辦?這就需要用到循環(huán),我們讓計算機循環(huán)計算,總共循環(huán)10000次,其中第N次循環(huán)加N即可解決這個問題:
FOR I=1 TO 10000 DO
SU := SU+I;
等一會兒我們再來解釋它。我們看到,有了循環(huán)以后,許多繁雜的事情都可以輕松解決了。由于以前沒有循環(huán),我們必須在函數內部來實現一些循環(huán),現在有了它,我們可以省去好多函數。例如,SUM表示計算N天數值的總和,寫成公式
C + REF(C,1) + REF(C,2)+ … + REF(C,N-1);
由于書寫困難而且不靈活,我們引入SUM函數來計算。但是如果我們使用循環(huán):
SU := 0;
FOR I=0 TO N-1 DO
SU := SU+REF(C,I);
FOR循環(huán)表示,循環(huán)執(zhí)行SU := SU+REF(C,I)這條語句,第一次循環(huán)變量I等于0,每次循環(huán)I遞增1,直到大于N-1時循環(huán)結束。也就是說,REF(C,I)在每次循環(huán)中表示今天、昨天、前天…N-1天前的收盤價,將它們累加到SU變量中,完成了累加的功能。
我們需要注意的是,此時的循環(huán)與公式中的隱含循環(huán)是不一樣的,隱含循環(huán)不需要書寫而且是不可避免的,而循環(huán)需要用循環(huán)語句寫出來。循環(huán)語句所描述的循環(huán),是針對某一根K線執(zhí)行的,整個循環(huán)過程中其計算位置是不變的。因此,在整個隱含循環(huán)中,每進行一次隱含循環(huán),就要執(zhí)行一輪循環(huán)語句。因此,大量使用循環(huán)語句,尤其是嵌套循環(huán)語句將大大降低運算速度。我們可以來看看,如果某股票有3000根K線,我們在公式中包含一個100次的循環(huán),則循環(huán)將執(zhí)行3000*100=30萬次,如果還存在循環(huán)嵌套,也就是循環(huán)套循環(huán),如果內外均是100次的循環(huán),則循環(huán)次數為3000*100*100=3000萬次,其執(zhí)行速度將非常緩慢。分析家系統(tǒng)限制總的循環(huán)次數要小于1億次,否則不能得到計算結果。
循環(huán)分為WHILE和FOR循環(huán)兩種。
2. WHILE循環(huán)
WHILE循環(huán)語法:WHILE [條件] DO [語句]
它表示,如果條件成立則循環(huán)執(zhí)行語句,直到條件不成立為止。例如我們計算最近多少天完成100%換手:
HR := VOL;
ND := 0;
WHILE HR< CAPITAL DO BEGIN
ND := ND+1;
HR := HR + REF(VOL,ND);
END
ND就是結果。HR表示最近成交量累加,設初始值為當日成交量,然后循環(huán)直到它大于流通盤為止。循環(huán)體中,ND每次循環(huán)加1,HR每次循環(huán)加上ND天前的成交量,也就是說最近ND天的成交量累加。
在循環(huán)中必須注意的是,循環(huán)條件在循環(huán)過程中一定要發(fā)生變化,并且會變成條件不成立,否則會形成死循環(huán),也就是說循環(huán)條件永遠成立,計算機不斷地進行循環(huán)計算。
在上例中,HR每次遞增,當它增大到流通盤以上時,條件變成不成立,從而終止循環(huán)。另外一個我們沒有注意到的問題是,如果今天是上市第一天,而且換手率沒有達到100,則這個循環(huán)會出現問題,因為不論ND怎樣增大,REF(VOL,ND)總是返回沒有數值,也就是說HR的不到遞增,也就永遠無法破壞循環(huán)條件而終止循環(huán),它也是一個死循環(huán)。因此我們需要改成:
HR := VOL;
ND := 1;
WHILE HR< CAPITAL AND ND< BARPOS DO BEGIN
HR := HR + REF(VOL,ND);
ND := ND+1;
END
增加一個ND< BARPOS用以阻止超過上市日的向前引用。
從這些例子中我們看到,自己使用循環(huán)來實現算法,其功能是強大的,但是需要十分小心,避免死循環(huán)的發(fā)生。因此,我們能夠使用函數來實現的功能,還是盡量使用函數來實現,避免不必要的復雜性。
3. FOR循環(huán)
我們大多數的循環(huán)是指定循環(huán)次數的循環(huán),而且我們證券計算也大量使用向前引用若干天的數據,因此 FOR循環(huán)將更加實用。
FOR [變量]=[初值] TO [終值] DO [語句]
它表示使用變量來控制執(zhí)行循環(huán)語句,首先給變量賦初值,然后判斷變量是否小于或等于終值,若滿足條件則執(zhí)行語句,然后將變量加1,循環(huán)判斷變量是否小于等于終值并循環(huán)執(zhí)行,直到條件不滿足為止。例如
FOR I=1 TO N DO…
表示循環(huán)N次,循環(huán)變量從1到N,類似的
FOR I=0 TO N-1 DO…
也表示循環(huán)N次,但是循環(huán)變量從0到N-1。
循環(huán)變量還可以從大循環(huán)到小,可以使用
FOR [變量]=[初值] DOWNTO [終值] DO [語句]
此時變量將從大到小變化,直到小于終值為止。
我們在使用中需要注意遞增還是遞減變化,否則將形成死循環(huán)。
使用FOR循環(huán)的一個最大的好處在于其循環(huán)次數可以控制,不像WHILE循環(huán)可能存在潛在的死循環(huán)。還以WHILE循環(huán)中的換手100%為例:
HR := 0;
FOR I=0 TO BARPOS-1 DO BEGIN
IF HR< CAPITAL THEN BEGIN
HR := HR+REF(VOL,I);
IF HR>=CAPITAL
ND := I+1;
END
END
我們用FOR循環(huán)來控制總的循環(huán)次數不超過數據總數,從而避免了死循環(huán)的發(fā)生。在循環(huán)中,如果換手未超過流通盤,則繼續(xù)累加,當換手剛達到流通盤時,將循環(huán)次數賦給結果ND。
4. 循環(huán)的終止
我們看到,循環(huán)過程中必須要有一個終止循環(huán)的方法,WHILE語句中使用條件不滿足來終止循環(huán),FOR循環(huán)中使用變量遞增遞減來終止循環(huán),是否還有其它的需要呢?
我們看上面的例子,該循環(huán)有一個問題,就是無論是否計算出結果,循環(huán)都將繼續(xù)下去,直到計算到上市第一天,這將大大降低效率。我們通過主動終止循環(huán)來解決這個問題:
HR := 0;
FOR I=0 TO BARPOS-1 DO BEGIN
HR := HR+REF(VOL,I);
IF HR>=CAPITAL BEGIN
ND := I+1;
BREAK;
END
END
執(zhí)行BREAK語句將終止循環(huán),無論循環(huán)中值條件是否達到。在本例中,當計算到結果,就停止循環(huán)。一般說來,BREAK語句總是與IF語句配合使用。使用BREAK語句可以使公式看起來更加簡單。
BREAK可以用來終止WHILE循環(huán)和FOR循環(huán)。
5. 循環(huán)的嵌套
我們可以在循環(huán)中再套入循環(huán),這就叫做循環(huán)嵌套。例如我們想要找到最近100天中收盤價相同的天數:
ND := 0;
FOR I=0 TO 99 DO BEGIN
FOR J=I+1 TO 99 DO BEGIN
IF REF(CLOSE,I)=REF(CLOSE,J) THEN
ND := ND+1;
END
END
我們分成內外兩個循環(huán),外層循環(huán)使用I作為循環(huán)變量,它從0到99循環(huán),得到之前每一天的收盤價REF(CLOSE,I),而內層循環(huán)使用J作為循環(huán)變量,它I+1到99循環(huán),表示從第I+1天前開始查找等于第I天數值的K線,若找到(條件REF(CLOSE,I)=REF(CLOSE,J)滿足),則將ND加1。
使用循環(huán)嵌套,我們可以做許多過去無法做的事情了。但是使用嵌套一定要注意,不要是循環(huán)次數太大,否則運行速度會很慢。
6. 循環(huán)舉例
例1.計算N日均線
SU := 0;
FOR I=0 TO N-1 DO
SU := SU+REF(CLOSE,I);
SU / MIN(N,BARPOS);
該例子中有兩個技巧,其一,沒有可以去避免向前循環(huán)超過上市日的問題,因為發(fā)生這樣情況時SU的數值不會增加,也就是說SU等于上市到現在的總和;其二,如果當前位置小于N,則SU的數值表示上市到現在的總和而不是N日總和,所以平均價格應該為SU/BARPOS,因此我們使用了SU / MIN(N,BARPOS);
例2.計算前十大股東占總股本的比例
SU:=0;
FOR I=1 TO 10 DO
SU := SU + PROFFIN(5002+(I-1)*6,0);
比例: SU/PROFFIN(1001,0)*100;
在本循環(huán)中使用了一個技巧,我們發(fā)現第一、第二、第三…股東持股量的代碼是5002,5008,5014…,它們之間間隔6,所以我們可以使用5002+(I-1)*6來表示這些代碼
五. 新交易系統(tǒng)
1. 新交易系統(tǒng)的設計目標
在分析家過去的版本中,已經引入了交易系統(tǒng)這個概念,那時的交易系統(tǒng)實際上更象一個有買入和賣出條件的選股系統(tǒng),主要解決了在什么情況下買入,在什么情況下賣出的問題。然而在實際交易的過程當中,我們必須要考慮倉位、資金、交易系統(tǒng)對當前股票的適應情況等等問題,從而決定我們應當在什么樣的條件下,買入或賣出多少股票,在連續(xù)出現信號的情況下又該如何處理。
新交易系統(tǒng)就是為了解決這些問題提出來的,它為我們提供了一整套交易需要的交易執(zhí)行、交易狀態(tài)函數,從而使我們能夠根據當前行情狀況、資金狀況、持倉狀況、盈利虧損狀況等不同的情況,來決定我們應當如何操作,操作的價格和量都可以直接控制。
可以說,新交易系統(tǒng)的提出,縮小了計算機交易和人為交易之間的差異,為用戶實現系統(tǒng)交易方法提供了有力的保證。
2. 新交易系統(tǒng)的買入和賣出
新交易系統(tǒng)引入了四個買賣函數,它們分別是
BUY(V,Type,P):買入
SELL(V,Type,P):賣出
BUYSHORT(V,Type,P):空頭買入
SELLSHORT(V,Type,P):空頭賣出
使用這四個函數是區(qū)別于新舊交易系統(tǒng)的關鍵,若需要使用舊交易系統(tǒng)則不能出現這四個函數。
函數中第一個參數V表示買入量,它可以是一個具體的量或者是最大買入(賣出)量的某一比例。例如,BUY(1000)表示買入1000股,而BUY(30%)則表示用當前資金量的30%買入,SELL(100%)則表示將當前持倉量賣出。這個參數可以省略,若省略則表示100%。買入和賣出量如果超過資金量或持倉量,則按照最大可買入(賣出)量執(zhí)行,買入量會自動取整到每手股數的整數倍,具體到A股就是100股及其整數倍,若少于100股則不買入。
函數中第二個參數表示交易單據類型,它可以是以下幾種:
1. THISCLOSE,收市價單,表示按照本周期收盤價交易;
2. MARKET,市價單,表示按照次周期開盤價交易;
3. LIMIT,限價單,表示次周期按照好于指定價格進行交易;
4. STOP,停損單,表示次周期按照差于指定價格進行交易;
若本參數省略,則表示THISCLOSE。
對于第3、4兩種交易類型,還需要指定一個價格,那就是第三個參數P,它表示限定的價格是多少,可以使用任意合法的公式語句來設定。對于1、2兩種交易類型,不能有第三個參數。例如BUY(100,LIMIT,CLOSE+0.1)表示在當前收盤價+0.1元的位置設定限價單,若次周期股價等于或低于這個價格,則買入100股。
對于收市價單和市價單,它們所指定的價格是股價必然能夠達到的,因此這兩種單據是一定能夠成交的,若考慮市場容量的問題,也只會影響到能夠成交多少,但價格是可以保證的。有關市場容量的問題請參閱下一節(jié)中關于“市場容量”的描述。
然而對于限價單和停損單,則不一定能夠成交,因為我們設定了一個價格,若股價不能達到該限定價格,則這個單據將不能成交,我們稱之為未成交交易。在系統(tǒng)指示中,這種交易將被顯示成灰色,表示下了單但是沒有成交。
我們再來研究一下限價單和停損單的區(qū)別,我們說限價單就是要求成交價格好于指定價格,而好于這個概念對于買入和賣出,多頭和空頭是不一樣的。對于買入來說,好于就是以更低的價格買入,而對于賣出來說就是以更高的價格賣出;對于空頭買入賣出來說又正好相反,空頭買入希望以更高的價格買入,以更低的價格賣出。在這里我們不用死記硬背,只要確定一點,那就是限價單表示成交的價格只能是期望價格更好,而停損單則指比期望價格更差。
有人要問,更差的價格要來干什么?我們舉個例子來看看,假如我們預計明天是一個轉折點,若股價上漲則其漲幅可以達到8%以上,但如果不漲則可能下跌,此時我們應當設定一個停損單,設定價格在CLOSE*1.01,表示上漲1%后我再買入,這樣就可以保證只有在上漲的情況下才進行交易。
既然有了這些限制,所以限價單和停損單就有可能不能成交,例如我們設定收盤價限價單,但次日股價跳空上漲,其最低價都高于我們設定限價,當然也就不能成交。
需要注意的是,使用限價單和停損單,有可能成交價格不是我們設定的價格,當開盤價滿足我們的限定條件,則按照開盤價成交。例如設定10元的限價單,次日開盤價為9.5元,它已經滿足條件,當然就按照它成交。
這四個函數并不存在一般函數中的條件項,只要出現這個函數就立即執(zhí)行買入或賣出,因此它們一般都會與IF語句相結合??偸且赃@種形式出現:
IF cond THEN
BUY;
表示當天價格滿足的時候就買入。
若當天出現多個買入語句,則每個買入語句均會被執(zhí)行,因此用戶需要注意區(qū)分不同情況。例如:
IF CLOSE>OPEN THEN
BUY(1000);
IF CLOSE>OPEN*1.02 THEN
BUY(2000);
此時,若第二個條件滿足則第一個也肯定同時滿足,系統(tǒng)將下了兩個買入單,共買入3000股。若這不是您所希望的,那么可能需要這樣寫:
IF CLOSE>OPEN*1.02 THEN
BUY(2000);
ELSE IF CLOSE>OPEN THEN
BUY(1000);
另外,循環(huán)中不能有交易函數。
3. 新交易系統(tǒng)設置
資金問題:新交易系統(tǒng)引入了資金概念,也就是說可以設定初始投入資金量,該資金量將影響到每一次交易能否正常進行。每次買入,資金量減少,賣出則資金量又增加,若買入資金量不足,則在資金量允許的范圍內調整買入量,甚至取消買入。這樣就與我們實際操作更加接近。資金投入設定請按“設定”按鈕進行設置。
市場容量問題:設想交易系統(tǒng)發(fā)出信號,買入100000股某股票,但該股票當日成交量僅有80000股,則這個買入單是不能夠成交的。一般認為,只要你的交易量達到當日成交量的10%以上,就會影響到該股票的走勢,因此我們一般設定當日交易量要小于成交量的10%。交易量限制設定請按“設定”按鈕進行設置。
交易系統(tǒng)設置
止損問題:過去,交易系統(tǒng)止損按照收盤價進行,這與實際情況有一定的差異,試想,若設定10%止損價位應當是當股價達到10%損失的時候就進行止損,而不是等到收盤再進行。因此,新交易系統(tǒng)的止損原則是,若開盤價達到止損條件,則按照開盤價止損,否則按照最接近止損設定的價格進行。
連續(xù)買入和連續(xù)賣出問題:過去,交易系統(tǒng)發(fā)出買入信號,我們就全額買入,之后再發(fā)出信號就不再買入;發(fā)出賣出信號則全部賣出,不存在連續(xù)買入和賣出的問題。在測試平臺中,引入了連續(xù)買入的概念,但其設置相對固定,不能模擬出更加精細的設置。新交易系統(tǒng)改變了這種狀態(tài),你可以不斷地買入或賣出,只要資金或持倉條件滿足。當然,這也就引出了一個成本計算的問題,如果經過多次交易后,我們的持倉成本是多少,這一單的利潤是多少?
成本問題:我們計算成本的方法是,每次買入就將新買入的股票與持有的股票進行加權平均,也就是(買入價*買入量+持倉量*持倉成本)/(買入量+持倉量);賣出時,無論盈利與否,當前持倉股票的成本不變。我們所有的盈利計算、止損價格計算均基于這個原則。
4. 新交易系統(tǒng)狀態(tài)函數
這些狀態(tài)函數描述了交易系統(tǒng)當前的狀態(tài),您可以根據這些狀態(tài)來決定您的交易策略。狀態(tài)函數包括:
ENTERPRICE:買入價格,表示上次交易的買入價格。
EXITPRICE:賣出價格,表示上次交易的賣出價格。
CASH:現金存量,表示當前的現金存量。
OPENPROFIT:浮動盈虧,表示當前持股的浮動盈虧,也就是當前持倉市值與持倉成本之差。
HOLDING:當前持倉量,表示當前持有的股票股數。
AVGENTERPRICE:平均買入成本,表示當前持有股票的平均買入成本
ENTERBARS:買入位置,表示上次買入到當前的周期數。
EXITBARS:賣出位置,表示上次賣出到當前的周期數.
BESTTRADE:最大盈利,表示當前位置之前所有交易中盈利最大一次的利潤額。
BESTPERCNET:最大利潤率,表示當前位置之前所有交易中利潤率最大一次的利潤率。
WORSTTRADE:最大虧損,表示當前位置之前所有交易中虧損最大一次的虧損額。
WORSTPERCENT:最大虧損率,表示當前位置之前所有交易中虧損率最大一次的利潤率。
TOTALTRADE:交易次數,表示當前位置之前總共有多少次交易,注意每一次賣出算一次交易,而買入不算。
NUMWINTRADE:盈利交易次數,表示當前位置之前總共有多少次盈利的交易。
NUMLOSSTRADE:虧損交易次數,表示當前位置之前總共有多少次虧損的交易。
NUMSEQWIN:當前連續(xù)盈利次數,表示當前位置之前連續(xù)有多少次盈利的交易。
NUMSEQLOSS:當前連續(xù)虧損次數, 表示當前位置之前連續(xù)有多少次虧損的交易。
MAXSEQWIN:最大連續(xù)盈利次數,表示當前位置之前連續(xù)盈利交易的最大次數。
MAXSEQLOSS,最大連續(xù)虧損次數,表示當前位置之前連續(xù)虧損交易的最大次數。
PERCENTWIN,交易勝率,表示當前位置之前盈利交易占總交易次數的比例,其數值在0—1之間。
5. 新交易系統(tǒng)的K線指示
使用系統(tǒng)指示功能,在K線圖上顯示新交易系統(tǒng)的交易指示與以往有些不同,主要表現在:
1.交易指示的下面可以標注買賣量,買入用Bxxx表示買入若干股,而賣出用Sxxx表示賣出若干股。配合標注箭頭旁的切入點指示小三角,可以方便地讓用戶看到每一個交易的交易價格和交易量??梢酝ㄟ^鼠標右鍵點取指示箭頭并選擇“系統(tǒng)指示顯示買賣量”用來隱藏或顯示買賣量。
2.顯示未成交的交易,過去只要條件滿足,就顯示買賣箭頭,而不管該箭頭是否能夠成交;現在我們將不能夠成交指示用灰色來顯示,方便用戶分析??梢酝ㄟ^鼠標右鍵點取指示箭頭并選擇“系統(tǒng)指示顯示未成交交易”以隱藏或顯示它們。
3.設定資金投入日期,由于加入的資金策略,在什么時間開始計算(即投入資金時間)將會直接影響交易系統(tǒng)的計算,因此可以設定資金投入時間,方法是鼠標右鍵點取指示箭頭并選擇“設定系統(tǒng)指示開始計算時間”。缺省情況下使用股票上市時間。
4.與新交易系統(tǒng)指示配合,系統(tǒng)加入3個內嵌指標,他們用來顯示系統(tǒng)指示中第一個新交易系統(tǒng)的收益、利潤、持倉狀態(tài)。這三個指標分別是:PROFIT利潤指標,顯示交易系統(tǒng)的歷史總盈利和持倉股票的浮動利潤;MARKET浮動市值指標,顯示交易系統(tǒng)的浮動市值和總市值,其區(qū)別在于后者只有賣出時才重新計算,而前者是隨著股價的變化隨時計算;HOLDING持倉量指標,顯示持倉量的歷史變化情況。這三個指標只有在交易系統(tǒng)指示中存在新交易系統(tǒng)是才有效。
6. 新交易系統(tǒng)的測試
新交易系統(tǒng)將資金模型、連續(xù)買入模型都已經放到公式中進行設定,因此在系統(tǒng)測試平臺中有關資金模型、連續(xù)買入模型都被禁止,全市場模型也被禁止。
7. 新交易系統(tǒng)指標
配合新交易系統(tǒng),分析家V5.0內嵌了三個指標,MARKET,PROFIT,HOLDING,當主圖上系統(tǒng)指示中存在新交易系統(tǒng)時,用于指示該新交易系統(tǒng)的市場狀態(tài)。
MARKET指標描述了交易系統(tǒng)市值,它有浮動市值和總市值兩條指標線。浮動市值表示現金+持有股票的市值,而總市值表示每次賣出后的總資產情況,而買入及持倉過程中的浮動市值不計算在內。
PROFIT指標描述了每次交易的利潤情況,它有利潤和浮動利潤兩條指標線,利潤表示每次賣出所產生的利潤的累計,而浮動利潤則表示當前持倉的浮動利潤。
HOLDING指標描述了持倉量,它表示當前持有股票的數量。
8. 新交易系統(tǒng)舉例
例1:漲幅超過5%則以30%資金買入,超過8%則以50%資金買入,跌幅超過4%則賣出50%,跌幅超過8%則全部賣出。買入使用限價單,賣出使用收市價單:
PR := (CLOSE/REF(CLOSE,1)-1)*100;
IF PR>8 THEN
BUY(50%,LIMIT,CLOSE);
ELSE IF PR>5 THEN
BUY(30%,LIMIT,CLOSE);
ELSE IF PR<-8 THEN
SELL(100%);
ELSE IF PR<-4 THEN
SELL(50%);
例2:若5日均線與20日均線金叉,則增加持倉量一倍,至少買入1000股。
IF CROSS(MA(CLOSE,5),MA(CLOSE,20)) THEN
BUY(MAX(HOLDING,1000));
這樣碰到連續(xù)買入信號時,其買入量為1000股,1000股,2000股,4000股…
六. 字符串
1. 字符串的定義
在公式中,我們有時候需要輸出一些文字,這就需要使用字符串。字符串常量我們在過去的版本中已經存在,就是使用單引號“’”括起來的字符,這些字符可以在文字輸出函數等地方直接使用。
在分析家5.0新公式系統(tǒng)中,我們引入字符串變量這個概念,它可以像數值變量一樣自由改變,可以根據具體情況賦給不同的數值。字符串變量和普通變量一樣可以賦值、運算、賦初始值等等。例如:
S := ‘CCC’;
我們將變量S賦值‘CCC’;
VARIABLE: S=’ABC’;
表示我們定義了一個字符串變量S,給它賦初始值‘ABC’;
S := STKNAME+ ‘ ’ + STKLABEL;
字符串S等于股票名稱后跟股票代碼。
我們可以像使用字符產常量一樣使用字符串變量,例如在DRAWTEXT函數中。
2. 字符串的計算
字符串可以進行計算,包括字符串比較、求字符串子串、大小寫轉化、字符串查找等等。字符串的比較是以字母表為順序的,越靠后的越大,小寫字母都大于大寫字母。例如:
STRCMP(‘ABC’,’abc’);
比較兩個字符串,顯然小寫字母大于大寫字母,所以函數返回1。
在分析家公式系統(tǒng)中引入字符串加法的概念,就是將后面的字符串連接到前面字符串的尾部,我們使用的一個簡單的辦法:用加號,例如
S := STKNAME+ ‘的代碼是’ + STKLABEL;
使用加號直接將后面字符串接到前面字符串的尾部,對于浦發(fā)銀行來說,字符串S等于“浦發(fā)銀行的代碼是600000”。
更為強大的是,字符串加法還可以直接加數值型的數據。例如:
S := ’今天收盤價:’ + CLOSE;
系統(tǒng)會將收盤價CLOSE的數值轉化為字符串連接進來。所以,當我們看到一個字符串加上數值的時候,千萬不要以為這是普通的加法。除了這種隱含的轉化方法外,我們還可以用函數NUMTOSTR將數值強制轉化為字符串,例如:
S := NUMTOSTR(CLOSE);
或者將字符串轉化為數值STRTONUM。
七. 數組
本節(jié)內容較復雜,一般用戶可以跳過本節(jié)。
所謂數組,就是一個容器,它可以存放多個數據,我們可以通過序號來訪問這些數據。一般說來我們總是將一些相關的數據組織在一起放到數組中,當我們在使用循環(huán)的時候,數組就可以發(fā)揮它的優(yōu)勢。分析家公式系統(tǒng)目前支持一維數組。
數組在使用之前一定要先聲明:
VARIABLE: V[20]=0;
表示定義一個數值型數組V,它總共有20個元素,這些元素的初始值為0。
VARIABLE: S[10]=’A’;
表示定義一個字符串型數組S,它總共有10個元素,這些元素的初始值為’A’。
數組變量聲明以后,就可以像普通變量一樣使用了。在使用數組變量時,需要在變量名后面帶上序號,表示引用數組中的第幾個元素,元素的序號從1開始。例如:
P:= V[5]*CLOSE;
表示V的第5號元素乘以收盤價。
數組和普通變量有一個重要的區(qū)別,數組是不能夠引用過去的數值的,對數組進行引用過去數值的操作將會得到它當天的數值,就是說數組只存在當天的數值,從某種意義上來說它更像一個可以重新賦值的常量。因此,
REF(V[3],1);
MA(V[2],10);
等均會返回一個常數。如果你需要引用過去的數值,可以將數組元素賦值給一個普通變量,例如:
P:=V[3];
MA(P,10);
使用數組以后,我們可以利用數組的序號來訪問數據,這給循環(huán)帶來了方便,我們通過循環(huán)可以遍歷整個數組了。
八. 專業(yè)財務數據
在分析家機構版中,內嵌了二百多項專業(yè)財務數據。這些專業(yè)財務數據包含了每只股票歷史上的每一次變化,對于注重基本分析的用戶,我們提供了一整套結合技術分析、基本分析的公式平臺。
專業(yè)財務數據包括七個函數,分別用來訪問、設定專業(yè)財務數據。所有的財務數據均帶有一個數據類型參數,它表示需要訪問具體哪一個數據,例如1001表示總股本,5001表示第一大股東名稱等等。這些函數包括:
PROFFIN(N,M), PROFSTR(N,M)訪問專業(yè)財務數據的數值,它們的區(qū)別在于前者得到數值型的財務數據,后者得到字符型的財務數據。N表示數據類型,M表示哪一期數據,0表示最近一期,1表示前一期。
PROFFINON(N,Y,MD), PROFSTRON(N,Y,MD)訪問指定日期的財務數據,它們的區(qū)別在于前者得到數值型的財務數據,后者得到字符型的財務數據。N表示數據類型,Y表示年,MD表示月日,例如PROFFINON(1001,2001,0101)表示2001年1月1日的總股本。
SETPROFFIN(X)用來設定財務數據屬性。財務數據包括季報、中報和年報,適用本函數可以決定是否需要它們中的哪一些類型。X是一個五位數,每一位表示不同的含義,最高位表示是否調整中報季報數據(分別對1季報、中報和3季報的部分財務指標做乘以3、2、4/3的處理),次高位表示是否包含最新財務指標,最低三位表示是否包含季報、中報和年報。這些位置如果為1就表示設置,如果為0就表示不需要。例如:01111就表示不對季報中報調整,數據包含全部的年報中報和季報;00001表示只需要年報。使用本函數后,其它專業(yè)財務數據函數將受到它的影響。
九. 其它
1. 數據二
我們經常需要分析兩只股票之間的關系,比如它們之間的相關性、貝塔系數等,新公式系統(tǒng)引入數據二概念,它在公式中代表另外一只股票,這只股票可能是K線圖上疊加的股票,或者相關性分析中的相關股票。語法:
DATA2.[數據]
其中數據可以是CLOSE、OPEN、HIGH、LOW、VOLUME或AMOUNT,表示引用數據二的開盤價、收盤價等。例如我們可以計算兩只股票收盤價之比:
CLOSE/DATA2.CLOSE;
數據二對于相關性分析很重要,所謂相關性就是兩個數據的相似程度,該數值分布在-1到+1之間,若等于+1表示兩者完全相同,若等于-1表示兩者完全相反,若等于0表示二者無關。一般說來,兩只股票收盤價的相關性會在0—1之間。相關函數:
RELATE(P1,P2,N);
表示P1和P2之間在最近N天的相似程度。
使用相關性分析不同的數據,得到的意義是不一樣的。例如收盤價相關性:
RELATE(CLOSE,DATA2.CLOSE,60);
他描述了兩只股票價格走勢的相似性,也就是說基本形態(tài)走勢相像。而漲跌幅相關性:
RELATE(CLOSE/REF(CLOSE,1),DATA2.CLOSE/REF(DATA2.CLOSE,1),60);
表示每日漲跌的相似性。使用該指標所得到的結果可能看起來走勢不是十分相似,但在多數情況下它們的漲跌情況是接近的,也就是說同漲同跌。
如果用其它的指標來計算相關性,則其結果可能更難理解,但是真正掌握兩只股票某種屬性的相似可能會對你的投資帶來很的大改變。
2. 自定義數據
分析家機構版V5.0引入自定義數據概念,用戶可以利用該功能自己設定若干數據。自定義數據可以從F10資料中提取,可以使用公式計算得到,可以從文本文件引入,也可以自己手工輸入。該數據是基于日線的,也就是說我們只能在日線分析周期中使用它。
自定義數據分為四類,分別是
1. 股票相關序列數:每一只股票均有它自己的一組數據,每天一個數據,它和擴展數據非常類似,我們可以用它來存儲每日成交筆數、某公式計算結果等數據。
2. 股票無關序列數:所有股票共用一組數據,每天一個數據,它主要用來存儲與市場相關的數據,例如每天的流通市值等。
3. 單值數據:每一只股票均有它自己的一個數據,該數據并不隨時間發(fā)生變化,例如我們可以用它來存儲發(fā)行價、中簽率等。
4. 字符串數據:每一只股票均有它自己的一個字符串數據,該數據并不隨時間發(fā)生變化,例如我們可以用它來存儲板塊類別、法人代表等。
用戶可以根據自己的需要,設定自定義數據類型,對于從F10提取或使用公式計算得到的自定義數據,可以設定自動更新,當執(zhí)行收盤作業(yè)時,系統(tǒng)將自動執(zhí)行自定義數據的刷新工作。
每一個自定義數據均有一個名稱,我們總是通過它來訪問自定義數據。在公式系統(tǒng)中,使用SELFDATA來訪問數值型的自定義數據,而使用SELFSTRING來訪問字符串型的自定義數據。
在動態(tài)顯示牌中,我們也可以直接顯示自定義數據,方法是用鼠標右鍵點擊標題欄,選擇自定義數據并且選中需要的項目即可。
3. 交易系統(tǒng)介入點設定
分析家新公式系統(tǒng)中,新增交易系統(tǒng)介入點設定關鍵字,放在買入、賣出條件之后,用逗號將它們隔開,描述方法類似顏色、線型描述符。接入點關鍵字分為前后兩個部分,前半部分描述時本周期介入還是次周期介入,后半部分描述以什么價格介入,具體如下:
前半部分:THIS—本周期;NEXT—次周期。
后半部分:MID—中價;CLOSE—收盤價;OPEN—開盤價;HIGH—最高價;LOW—最低價。
前后兩部分直接連接,中間不能有間隔。例如:
ENTERLONG: CLOSE>OPEN, NEXTOPEN;
表示如果收陽線,則在次日以開盤價買入。
4. 數據引用
公式中會大量使用數據引用函數REF,比較麻煩。現在可以在函數調用之后加上方括號表示向前引用,起作用和REF函數一樣。例如:
REF(CLOSE,10)可以寫成CLOSE[10]
REF(MA(CLOSE,10),100)可以寫成MA(CLOSE,10)[100]
需要注意方括號在數據引用與數組下標之間的區(qū)別。二者形式一樣,但方括號跟在函數后面就是引用,而跟在數組變量后面就是下標。
5. 坐標設定
分析家新公式系統(tǒng)中,坐標設定采用公式來實現,方法是:
REFLINE:L1,L2,…LN;
表示在L1、L2、…LN處繪制水平坐標線。
6. 宏定義
在許多計算機語言中,均提供了宏定義,用于簡化公式中大量重復語句的書寫,提高程序的可讀性。分析家新公式系統(tǒng)也提供了宏定義給用戶使用,語法是:
#define X Y
它表示,將Y定義為X,今后凡是書寫X,就把它當作Y來處理。宏必須定義在整個公式代碼的最前面。比方說
#define MMA MA(MA(CLOSE,10),10)
表示今后凡是需要MA(MA(CLOSE,10),10)計算的地方均可以用MMA來代替,直接寫MMA即可。
宏定義也可以帶參數,在公式編譯的時候將宏定義中的參數用實際參數來替代。例如以下定義:
#define MMA(x,y) MA(MA(CLOSE,x),y)
x,y就是宏參數,在使用時需要用實際的參數來替代,例如:
MMA(10,20)就表示MA(MA(CLOSE,10),20),再宏展開時用10代替了參數x,用20代替了參數y。
如果我們需要定義的宏很長,在一行里書寫比較困難,可以用續(xù)行符“\”放在需要許行的最后位置,就可以將下一行接到宏定義中。例如:
#define BBY(x) IF CLOSE>OPEN THEN BEGIN\
IF CLOSE>OPEN*1.08 THEN \
BUY(2*x); \
ELSE \
BUY(x); \
END
由于每一行的結尾均有一個續(xù)行符“\”,因此BBY宏就代表了整個這六行代碼。今后凡是需要書寫著六行代碼,只需要書寫B(tài)BY即可。
對于需要重復書寫的代碼,可以采用宏定義,將重復的代碼定義為宏,這樣可以大大減少代碼量,同時也可以提高公式的可讀性。
十. 調試
1. 為什么需要調試
公式系統(tǒng)是一個簡單的程序設計環(huán)境,只要是程序設計就有可能出現差錯,有可能出現沒有想到的問題,因此多數程序設計工具均提供一個調試工具,讓用戶可以一步一步地執(zhí)行程序,查看中間結果等等。
分析家新公式系統(tǒng)為用戶提供了一個強大的設計環(huán)境,當然需要提供一個調試器用以查找錯誤。利用分析家公式調試器,你可以單步執(zhí)行公式程序、連續(xù)單步執(zhí)行、查看變量數值、設置斷點,可以方便查看到公式中的任何數值是怎樣計算出來的,分支是怎樣執(zhí)行的,循環(huán)指定了多少次等。
2. 調試前的準備工作
當你使用專業(yè)公式編輯器寫完一個公式,或者打開一個現有的公式,即可進入調試。若你的公式沒有語法錯誤,從菜單、工具條選擇調試功能,或者直接按F6即可進入調試。進入調試狀態(tài)后,公式編輯窗口下面出現兩個小窗口,分別是變量窗口和圖形窗口。
左邊的窗口是變量窗口,變量窗口顯示公式中所有的變量及其屬性、數值,鼠標雙擊變量可以彈出窗口顯示該變量的詳細數值,而在執(zhí)行過程中若數值發(fā)生變化就會用紅色來顯示數值。
右邊的窗口是圖形窗口,它的上半部分顯示待計算的股票K線圖,下半部分顯示變量數值曲線。在變量窗口中打勾的變量將被顯示,用鼠標點擊變量前的方塊可以改變其顯示屬性。用鼠標點擊圖形窗口右側的股票名稱、分析周期可以改變待計算的股票或分析周期。
此時公式第一行的左側線是一個黃色箭頭,它表示當前正在準備執(zhí)行該語句。我們在整個調試過程中可以看到該標志隨著執(zhí)行過程不斷在移動。
3. 運行
調試準備好以后,按F5就可以執(zhí)行了,此時公式將很快被執(zhí)行完,然后停在程序的最后一行,此時你可以查看變量內容和圖形。
如果按Ctrl+F5表示重新執(zhí)行程序,系統(tǒng)將重新啟動公式并且停留在第一行等待執(zhí)行。
如果按Shift+F5表示停止執(zhí)行,這對于跳出一個長時間的循環(huán)非常有用。
4. 單步運行
從菜單、工具條選擇單步執(zhí)行,或者按F11可以單步執(zhí)行,此時每按一次執(zhí)行一條語句,在執(zhí)行過程中可以方便地了解到變量的計算過程,程序的執(zhí)行流程等。我們還可以選擇連續(xù)單步執(zhí)行來讓電腦自動進行單步運行,此是可以將雙手解放出來。
我們會發(fā)現,當公式執(zhí)行到最后一行以后,它有跳回到第一行執(zhí)行,這和一般的程序可不一樣!細心的你可能已經發(fā)現,在右下角圖形成口中的紅色箭頭已經悄悄地向右移動了一天,這就是我們所說的隱含循環(huán)。程序從第一行執(zhí)行到最后一行,然后計算第二天的數據,又從程序第一行開始執(zhí)行了。
5. 執(zhí)行到指定目標
有時候程序比較長,或者循環(huán)太多,使用單步太慢,可以使用執(zhí)行到指定目標,移動光標到你需要的程序行,然后按F7,公式將執(zhí)行到該行后停下。
6. 設置斷點
斷點就是程序每次執(zhí)行到該行就停下,與F5連續(xù)執(zhí)行配合可以提高工作效率。將光標移到需要設定斷點的位置,按F9可以設定或取消斷點。斷點所在行的左邊會有一個紫紅色的圓形,表示該行被設置了斷點。
7. 查看變量內容
當程序運行到某處停下來后,鼠標雙擊變量窗口的某變量,可以查看變量內容。對于簡單變量,變量窗口中已經顯示了它的數值,但對于序列數、數組等變量,可以使用本功能詳細了解變量的每一個元素的內容。
8. 運行到指定時間
我們說過,公式中存在一個隱含循環(huán),公式是一天一天執(zhí)行的。當我們需要執(zhí)行到時間相對靠后的數據時,可能需要的循環(huán)次數就很多,此時可以有鼠標右鍵點擊圖形窗口中的你所需要的K線的位置,從彈出菜單中選擇執(zhí)行到該K線或者指定到指定日期就可以跳過前面不必要的循環(huán)。
十一. 綜合舉例
1. 均線系統(tǒng)
在以往均線系統(tǒng)的編制需要用到函數MA(X,N),該函數表示求X的N日內平均值。在新公式系統(tǒng)中,沒有函數照樣可以實現MA(CLOSE,N)。
INPUT:N(5,1,300); {參數申明}
VARIABLE:K=0; {變量申明}
FOR I=0 TO N-1 DO K:=K+REF(CLOSE,I);{把最近 N 天的收盤價累加}
MA1:K/N; {實現MA(C,N)}
K:=0;
2. 指數平滑移動平均線
指數平滑移動平均線與上面的簡單均線系統(tǒng)相比,主要在于均線的算法略有區(qū)別,簡單均線只是將N日內的收盤價相加然后平均,而指數平滑移動平均線中包含昨日的該數值,因此理論上比簡單平均更有價值。
指數平均的算法為:
若Y=EMA(X,N),
則Y=[2*X+(N-1)*Y']/(N+1),其中Y'表示上一周期Y值。
如果不使用EMA函數, EMA(CLOSE,N)在新公式系統(tǒng)中可以這樣書寫:
INPUT:N(5,1,300);
VARIABLE:EMA1=0; {初始化變量}
EMA1:(2*C+(N-1)*EMA1)/(N+1); {新公式系統(tǒng)中可以直接迭代,表示指標EMA1由昨天的EMA1的一種算法得到}
3. 寶塔線(鬼變臉)
如果昨天寶塔線是紅的,以“昨頂端”為“今開端”,以“昨底端”為“今敏感”;
如果昨天寶塔線是綠的,以“昨底端”為“今開端”,以“昨頂端”為“今敏感”;
如果昨天寶塔線是變色的,則以“昨敏感”為“今敏感”,以強化寶塔線的“隔日糾錯功能”。
要實現上面的功能,需要根據昨天寶塔線的狀態(tài)來畫今天的寶塔線,在老公式系統(tǒng)中無法實現這樣的功能。在新公式系統(tǒng)中,可以通過分支語句和迭代的方式實現:
VARIABLE:SENSITIVY=-1,TOWERO=0,TOWERC=0,DIRECTION=1;
IF BARSCOUNT(C)=0 THEN BEGIN
TOWERO:=O;
TOWERC:=C;
END;
IF TOWERC>TOWERO AND NOT(BETWEEN(SENSITIVY,TOWERO,TOWERC)) THEN
DIRECTION:=1;
ELSE IF TOWERC< TOWERO AND NOT(BETWEEN(SENSITIVY,TOWERO,TOWERC)) THEN
DIRECTION:=0;
ELSE DIRECTION:=REF(DIRECTION,1);
IF NOT(REF(BETWEEN(SENSITIVY,TOWERO,TOWERC),1)) THEN BEGIN
TOWERO:=REF(TOWERC,1);TOWERC:=C;
SENSITIVY:=REF(TOWERO,1);
END ELSE BEGIN
TOWERO:=REF(TOWERC,1);TOWERC:=C;
SENSITIVY:=REF(SENSITIVY,1);
END;
IF BETWEEN(SENSITIVY,TOWERO,TOWERC) THEN BEGIN
STICKLINE(BETWEEN(SENSITIVY,TOWERO,TOWERC),MAX(TOWERO,TOWERC),SENSITIVY,7,0), COLORRED;
STICKLINE(BETWEEN(SENSITIVY,TOWERO,TOWERC),MIN(TOWERO,TOWERC),SENSITIVY,7,0), COLORGREEN;
END ELSE BEGIN
STICKLINE(SENSITIVY< TOWERC,TOWERO,TOWERC,7,0), COLORRED;
STICKLINE(SENSITIVY>TOWERC,TOWERO,TOWERC,7,0), COLORGREEN;
END;
STICKLINE((TOWERC=TOWERO OR SENSITIVY=TOWERC) AND DIRECTION=1,TOWERO,TOWERC,7,0),COLORRED;
STICKLINE((TOWERC=TOWERO OR SENSITIVY=TOWERC) AND DIRECTION=0,TOWERO,TOWERC,7,0),COLORGREEN;
4. 自動在MACD指標圖上標注現在是處于0軸以下的第幾次金叉]
INPUT:LONG(26,20,100,1),SHORT(12,5,40,1),M(9,2,60);
VARIABLE:I=0;
DIFF : EMA(CLOSE,SHORT) - EMA(CLOSE,LONG);
DEA : EMA(DIFF,M);
MACD : 2*(DIFF-DEA), COLORSTICK;
JC:=CROSS(DIFF,DEA);
SC:=CROSS(DEA,DIFF);
JCCOUNT:=COUNT(JC,BARSLAST(DEA>0));
TEXT:=NUMTOSTR(JCCOUNT);
DRAWTEXT(DEA<0 AND JC,DEA*0.8,TEXT);
十二. 新增函數列表
1. 相關性函數
1. BETA 貝塔系數
BETA(N);
貝塔系數表示當前股票的收益與大盤收益相比的放大系數,該系數表明大盤每變動1%,則該股票將變動多少。該函數有一個參數N,表示在多少個周期中計算。
例如:BETA(10)表示10周期貝塔系數
2. BETA2 貝塔系數2
BETA2(X,Y,N)
貝塔系數2表示第一個參數X相對于第二個參數Y的收益的放大系數,該系數表明參數Y每變動1%,則參數X將變動多少。該函數的第三個參數N表示在多少個周期中計算。
例如:BETA2(CLOSE,INDEXC,10)就完全等同于BETA(10)
3. BETADOWN 下跌貝塔系數
BETADOWN(N)
為當前股票收益與大盤收益相比的下跌貝塔系數,該系數表明大盤每下跌1%,則該股票將下跌N%。它的計算方法是只計算股票下跌時的貝塔系數。
例如:BETADOWN(10)表示10周期下跌貝塔系數
4. BETAUP 上漲貝塔系數
BETAUP(N)
為當前股票收益與大盤收益相比的上漲貝塔系數,該系數表明大盤每上漲1%,則該股票將上漲N%。它的計算方法是只計算股票上漲時的貝塔系數。
例如:BETAUP(10)表示10周期上漲貝塔系數
5. COVAR 兩樣本的協(xié)方差
COVAR(X,Y,N);
計算X與Y的N周期協(xié)方差。協(xié)方差的計算方法是:
例如:COVAR(CLOSE,INDEXC,10)表示收盤價與大盤指數之間的10周期協(xié)方差
6. RELATE 兩樣本的相關系數
RELATE(X,Y,N)
為X與Y的N周期相關系數,其有效值范圍在-1 — 1之間
例如:RELATE(CLOSE,INDEXC,10)表示收盤價與大盤指數之間的10周期相關系數
2. 除權除息
1. DIVIDENDBARS 上次派息到現在的周期數
DIVIDENDBARS(N)
取得之前第N次派息到當前的周期數。
例如:DIVIDENDBARS(0)=0表示當天發(fā)生派息。
2. DIVIDEND 每股派息數量
DIVIDEND(N),
取得之前第N次每股派息數量,
例如:DIVIDEND(0)表示最近一次派息的數量。
3. SPLIT 除權比例
SPLIT(N),
取得之前第N次除權(送股或配股)的除權比例,表示除權后股價將下跌該比例
例如:SPLIT(0)=0.5表示最近一次除權可能是10送10,股價下跌一半。
4. SPLITVARS 除權到現在的周期數
SPLITBARS(N),
取得之前第N次除權到當前的周期數,
例如:SPLITBARS(0)=0表示當天發(fā)生除權。
3. 行情函數
1. DISPSTATUS 數據顯示狀態(tài)
DISPSTATUS返回數據顯示信息,1表示顯示區(qū)域的第一根K線,2表示顯示區(qū)域最后一根K線,0表示其它位置。
例如:DISPSTATUS=1表示當天是圖形顯示中的第一個周期。
4. 時間函數
1. BARPOS 數據位置
函數返回當前是第幾根K線。特別的,對于日線數據就表示從上市到現在總共有多少交易日。
2. DAYS1970 取得該周期從1970以來的天數
函數返回自從1970年1月1日以來的天數,例如在1971年1月1日返回365,它與DAY函數不同,前者表示的是天數間隔,后者表示的是日期。
3. D1970TODATE 1970日轉換為日期
D1970TODATE(X),
得到1970日期X的日期值。
4. DATETOD1970 日期轉換為1970日
DATETOD1970(X),得到日期X距離1970年1月1日以來的天數
例如:DATETOD1970(DATE)就返回今天距離1970年1月1日的天數。
5. TIME0 取得該周期從當日0點以來的秒數
函數返回自從當日0點以來的秒數,對于日線以上的分析周期,返回0
6. T0TOTIME 秒數轉換為時間
T0TOTIME(X),得到從0點開始X秒后的時間值。
7. TIMETOT0 時間轉化為秒數
TIMETOT0(X),得到時間X距離當日0點的秒數。
5. 引用函數
1. ALL 一直滿足條件
ALL(X,N),
統(tǒng)計N周期中是否一直都滿足X條件,若N=0則從第一個有效值開始。
例如:ALL(CLOSE>OPEN,20)表示是否20周期內全部都收陽線。
2. ANY 至少一次滿足條件
ANY(X,N),
統(tǒng)計N周期中是否至少有一次滿足X條件,若N=0則從第一個有效值開始。
例如:ANY(CLOSE>OPEN,20)表示是否20周期內是否存在一根陽線。
6. 常數函數
1. CATEGORY 證券類型
證券類型,指數=0,股票=1,基金=2,債券=3,其它=4,期權=5,外匯=6,期貨=7。
2. CURRENTDATE 計算當時的日期。
返回計算時的日期,該日期是從1900年開始的日期,例如2003年1月1日表示為1030101。
注意:該函數返回常數
3. CURRENTTIME 計算當時的時間
返回計算時的時間,格式為時分秒,有效范圍(000000-235959)。
注意:該函數返回常數
4. DATATYPE 當前分析的數據類型
返回數據分析周期,分時線=1,分筆成交=2,1分鐘線=3,5分鐘線=4,15分鐘線=5,30分鐘線=6,60分鐘線=7,日線=8,周線=9,月線=10,多日線=11,年線=12。
注意:該函數返回常數
5. MINDIFF 最小價格變動
返回當前股票價格最小變動量,對于股票是0.01元,基金是0.001。
注意:該函數返回常數
6. PRODUCTID 取得軟件序列號
返回軟件的序列號(加密狗號)。
注意:該函數返回字符串常數
7. 繪圖函數
1. DRAWBMP 畫位圖
DRAWBMP(COND,PRICE,BMPFILE),
當COND條件滿足時,在PRICE位置畫BMPFILE文件名指定的BMP位圖(缺省路徑為分析家目錄\USERDATA\BMP)。
例如:DRAWBMP(CLOSE>OPEN,LOW,'SUN')表示當收陽時在最低價位置畫Superstk\UserData\Bmp\Sun.BMP位圖。
2. DRAWGBK 條件填充背景
DRAWGBK(COND,COLOR),
填充滿足COND條件的背景區(qū)域。COLOR可以為漸變顏色STRIP,也可以為BMP圖形文件名(缺省路徑為分析家目錄\USERDATA\BMP),若省略COLOR則使用指標線顏色填充(可以使用COLORRED等描述符設定)。
例如:DRAWGBK(CLOSE>OPEN),COLORRED;表示收陽時用紅色填充背景。
DRAWGBK(CLOSE>OPEN,'MyBMP');表示收陽時用USERDATA\BMP\MyBMP.BMP填充背景。
3. DRAWGBKLAST 最后條件填充背景
DRAWGBKLAST(COND,COLOR),
若圖形中最后一根K線滿足條件COND,則設定背景COLOR。COLOR可以為漸變顏色STRIP,也可以為BMP圖形文件名(缺省路徑為分析家目錄\USERDATA\BMP),若省略則使用指標線顏色填充(可以使用COLORRED等描述符設定)。
例如:DRAWGBKLAST(CLOSE>OPEN),COLORRED;表示最后一根K線收陽時用紅色填充背景。
DRAWGBKLAST(CLOSE>OPEN,STRIP(RGB(255,0,0),RGB(0,255,0),1));表示圖形中最后一根K線收陽時紅綠過渡色沿水平方向填充背景。
4. FILLRGN 條件填充區(qū)域
FILLRGN(PRICE1,PRICE2,COND1,COLOR1,COND2,COLOR2...),
填充PRICE1到PRICE2之間的區(qū)域,當COND1條件滿足時,用COLOR1顏色,當COND2條件滿足時,用COLOR2顏色,否則不填充,從COLOR1之后的參數均可以省略,最多可以有15組條件。
例如:FILLRGN(CLOSE,OPEN,CLOSE>OPEN,RGB(255,0,0),CLOSE< OPEN,RGB(0,255,0))表示填充開盤價和收盤價之間的區(qū)域,陽線時用紅色,陰線時用綠色,平盤不繪制。
5. PARTLINE 條件畫線
PARTLINE(PRICE,COND1,COLOR1,COND2,COLOR2...),
繪制PRICE線,當COND1條件滿足時,用COLOR1顏色,當COND2條件滿足時,用COLOR2顏色,否則不繪制,從COLOR1之后的參數均可以省略,最多可以有15組條件。
例如:PARTLINE(CLOSE,CLOSE>OPEN,RGB(255,0,0),CLOSE< OPEN,RGB(0,255,0),1,RGB(0,0,255))表示畫收盤價線,陽線時用紅色,陰線時用綠色,平盤用藍色。注意最后一個條件為1,表示前面都不滿足時必然滿足這個條件。
6. RGB 指定顏色
RGB(R,G,B),
表示用三原色紅(R)綠(G)藍(B)混合組成指定顏色,每種顏色值可以設定為0-255。
例如RGB(255,0,0)表示紅色,RGB(0,0,255)表示藍色
7. STRIP 描述漸變色
STRIP(RGB1,RGB2,DIR),
表示生成RGB1色到RGB2色的漸變區(qū)域,DIR=1表示沿水平方向,否則表示沿垂直方向,其中RGB1,RGB2必須用RGB函數描述。
例如STRIP(RGB(255,0,0),RGB(0,255,0),0)表示由紅色到綠色的垂直漸變色。
8. TIPTEXT 在圖形上顯示圖標及文字
TIPTEXT(COND,PRICE,TEXT),
當COND條件滿足時,在PRICE位置顯示圖標,鼠標移近時顯示文字。
例如:TIPTEXT(CLOSE/OPEN>1.08,LOW,'大陽線,股價為:'+close)表示當日漲幅大于8%時在最低價位置顯示圖標,鼠標移近時顯示文字'大陽線,股價為:15.88'字樣。
9. VERTLINE 畫垂直線
VERTLINE(COND,TYPE),
當COND條件滿足時,沿垂直方向繪制TYPE類型的線段,TYPE=0表示實線,1表示虛線'---',2表示點線'...',3表示點劃線'-.-.-',4表示點點劃線'-..-..-'。
例如:VERTLINE(HIGH>=HHV(HIGH,20),1)表示在創(chuàng)20天新高畫垂直虛線。
8. 字符串函數
1. F10FIND 當前F10資料中查找字符串
F10FIND(S,N),
將從當前股票的F10資料的第N個字符開始查找字符串S,返回找到的位置,返回值為負數表示未找到。
例如:F10FIND('發(fā)行價',1),將從F10資料的第1個字符開始查找字符串'發(fā)行價',返回找到的位置。
2. F10TEXT 取得F10資料中指定范圍的字符串
F10TEXT(N,M),將得到當前股票的F10資料中從第N個字符開使的M個字節(jié)長的字符串,M=0表示一直取到行尾,M<0表示取得之后的全部字符。
例如:F10TEXT(30,10),將得到F10資料中從第30個字符開使的10個字節(jié)長的字符串。
3. INBLOCK 判斷本股票是否板塊成員
INBLOCK(S),
若本股票是板塊S的成員將返回1,否則返回0。
例如:INBLOCK('工業(yè)板塊'),若本股票屬于工業(yè)板塊則返回1。
4. LOWERSTR 將字符串轉換為小寫
LOWERSTR(STR),
將返回STR對應的小寫字符串。
例如:LOWERSTR('EFgh')將返回'efgh'。
5. MARKETLABEL 取得當前股票的市場代碼
將返回當前股票的市場代碼,
例如:滬市返回'SH',深市返回'SZ'。
6. MARKETNAME 取得當前股票的市場名稱
將返回當前股票的市場名稱,
例如:滬市返回'上海證券交易所',深市返回'深圳證券交易所'。
7. NUMTOSTR 將數字轉化為字符串
NUMTOSTR(N),
將N轉化為字符串返回,精確到小數點后三位,但小數點后的結尾為0將被刪除。
例如:NUMTOSTR(close)將返回收盤價對應的字符串,例如'15.78'。
8. NUMTOSTRN 將數字轉化為字符串
NUMTOSTRN(N,M),
將N轉化為字符串返回,精確到小數點后M位。
例如:NUMTOSTRN(close,5)將返回收盤價對應的字符串,例如'15.78000'。
9. SELFSTRING 自定義字符串數據
SELFSTRING(S),
取得名為S的自定義字符串數據
10. STKLABEL 取得股票代碼
將返回當前股票的代碼,
例如深發(fā)展A將返回'000001'。
11. STKNAME 取得股票名稱
將返回當前股票的名稱。
12. STRCMP 字符串比較
STRCMP(STR1,STR2),
若STR1>STR2則返回1,STR1< STR2返回-1,相等則返回0。
例如:STRCMP('abcdef','abc')返回1。
13. STRFIND 在字符串中查找另一個字符串
STRFIND(STR,S1,N),
從字符串STR的第N個字符開始查找字符串S1,返回找到的位置,若沒有找到就返回0。
例如:STRFIND('abcdefgh','cde',1)返回3。
14. STRLEFT 取得字符串的左邊部分
STRLEFT(STR,N),
返回字符串STR的左邊N個字符。
例如:STRLEFT('abcdef',3)得到'abc'。
15. STRMID 取得字符串的中間部分
STRMID(STR,N,M),
返回字符串STR的第N個字符開始的長度為M個字符的字符串。
例如:STRMID('abcdef',3,3)得到'cde'。
16. STRRIGHT 取得字符串的右邊部分
STRRIGHT(STR,N),
返回字符串STR的右邊N個字符。
例如:STRRIGHT('abcdef',3)得到'def'。
17. STRTONUM 將字符串轉化為數字
STRTONUM(STR),將STR轉化為數字返回。
例如:STRTONUM('12.5')將返回數值12.5。
18. UPPERSTR 將字符串轉換為大寫
UPPERSTR(STR),
將返回STR對應的大寫字符串。
例如:UPPERSTR('abcd')將返回'ABCD'。
9. 指標函數
1. FLATZIG 歸一化之字轉向
FLATZIG(K,N),
它與ZIG函數非常相似,不同的是本函數返回值在0-1之間,也就是說在峰頂時返回1,峰谷時返回0。K表示0:開盤價,1:最高價,2:最低價,3:收盤價,4:低點采用最低價、高點采用最高價。
例如:FLATZIG(3,5)表示收盤價的5%的歸一化ZIG轉向
10. 數據函數
1. SELFDATA 取得自定義數據
SELFDATA(S),
取得名為S的自定義數據,(本函數僅在日線分析周期有效)
例如,SELFDATA(‘每股收益’)表示取得名為每股收益的自定義數據的數值。
2. SELFSTRING 取得自定義字符串數據
SELFSTRING(S),
取得名為S的自定義字符串數據,(本函數僅在日線分析周期有效)
11. 專業(yè)財務數據
1. PROFFIN 專業(yè)財務數據。
PROFFIN(N,M)
表示取得M個報告期之前的第N號專業(yè)財務數據,
例如PROFFIN(1001,0)表示最近一期總股本,N的取值請參閱下表
2. PROFSTR 專業(yè)財務字符串數據
PROFSTR(N,M)
表示取得M個報告期之前的第N號專業(yè)財務字符串數據,
例如PROFSTR(4001,0)表示最近一期第一大股東名稱,N的取值請參閱下表
3. PROFFINLAST 專業(yè)財務數據截止期位置
PROFFINLAST(N)
表示最近報告期的第N號專業(yè)財務數據距離現在的周期數,N的取值請參閱下表
4. PROFFINON 指定日期的專業(yè)財務數據
PROFFINON(N,Y,MD)
表示取得Y年M月D日的第N號專業(yè)財務數據,
如PROFFINON(1001,2000,0101)取得2000年1月1日的總股本,N的取值請參閱下表
5. PROFSTRON 指定日期的專業(yè)字符串財務數據
PROFFINON(N,Y,MD)
表示取得Y年M月D日的第N號專業(yè)財務數據,
如PROFSTRON(5001,2000,0101)取得2000年1月1日的第一大股東名稱,N的取值請參閱下表
6. PROFFINTERM 專業(yè)財務數據報告期
PROFFINTERM(M)
表示取得M個報告期之前的財務報表是年報、中報還是季報
返回1:第一季度季報,2:中報,3:第三季度季報,4:年報
例如:若PROFFINTERM(0)等于4,則表示最近一期財務報表是年報。
7. SETPROFFIN 設置專業(yè)財務數據
SETPROFFIN(X)
在本函數后的其它專業(yè)財務函數將受到本次屬性設置的影響,表示將專業(yè)財務數據屬性設定為X,X從低到高每一位表示一個含義
第1位:包含年報,
第2位:包含中報,
第3位:包含季報,
第4位:包含最新財務指標,
第5位:調整中報、季報財務指標,
例如SETPROFFIN(01011)表示取得年報、中報,最新一期數據,無論是那個報告期都要包括在內,中報不作調整
如果不調用本函數,系統(tǒng)默認值為01111
12. 專業(yè)財務數據代碼內容對照表
股本結構 1001 總股本
1002 國家股
1003 發(fā)起人股
1004 法人股
1005 一般法人配售
1006 內部職工股
1007 流通A股
1008 戰(zhàn)略投資A股
1009 轉配股
1010 基金配售
1011 H股
1012 B股
1013 優(yōu)先股
1014 高級管理人員持股
1015 股本變動原因
1016 股本變動原因類別
1017 股本變動報告期
1018 截止日期
分紅送配 2001 送股比例
2002 送股股權登記日
2003 送股除權日
2004 紅股上市日
2005 轉增比例
2006 轉增股權登記日
2007 轉增除權日
2008 轉增上市日
2009 派現比例
2010 派現股權登記日
2011 派現除息日
2012 派現派息日
2013 配股比例
2014 配股股權登記日
2015 配股除權基準日
2016 配股繳款起始日
2017 配股繳款終止日
2018 配股可流通上市日
2019 配股價
2020 公眾股受讓法人股配股比例
2021 認購法人股配股每股轉讓費
2022 配股主承銷商
2023 除權日期
2024 報告日期
2025 董事會日期
2026 股東會日期
2027 分紅公告日期
2028 總股本基數
2029 送股數量
2030 轉增總數量
2031 實際配股總數
2032 除權后總股本
財務數據 3001 短期投資凈額
3002 應收帳款凈額
3003 存貨凈額
3004 流動資產
3005 長期投資凈額
3006 固定資產
3007 無形及其他資產
3008 總資產
3009 短期借款
3010 應付帳款
3011 流動負債
3012 長期負債
3013 負債合計
3014 股本
3015 少數股東權益
3016 股東權益
3017 資本公積
3018 盈余公積
3019 主營業(yè)務收入凈額
3020 主營業(yè)務成本
3021 主營業(yè)務利潤
3022 其它業(yè)務利潤
3023 營業(yè)費用
3024 管理費用
3025 財務費用
3026 投資收益
3027 利潤總額
3028 所得稅
3029 凈利潤
3030 扣除經常性損益后的凈利潤
3031 未分配利潤
3032 經營活動現金收入
3033 經營活動現金流出
3034 經營活動現金凈額
3035 投資現金流入
3036 投資現金流出
3037 投資現金凈額
3038 籌措現金流入
3039 籌措現金流出
3040 籌措現金凈額
3041 現金及現金等價物凈增額
3042 銷售商品收到的現金
3043 每股收益
3044 每股凈資產
3045 調整后每股凈資產
3046 每股資本公積金
3047 每股未分配利潤
3048 每股經營活動產生的現金流量凈額
3049 每股現金及現金等價物增加凈額
3050 毛利率
3051 主營業(yè)務利潤率
3052 凈利率
3053 總資產報酬率
3054 凈資產收益率
3055 銷售商品收到的現金占主營收入比例
3056 應收帳周轉率
3057 存貨周轉率
3058 固定資產周轉率
3059 主營業(yè)務增長率
3060 凈利潤增長率
3061 總資產增長率
3062 凈資產增長率
3063 流動比率
3064 速動比率
3065 資產負債比率
3066 負債比率
3067 股東權益比率
3068 固定資產比率
3069 扣除非經常性損益后每股凈利潤
3070 報告日期
3071 截止日期
增發(fā)回購 4001 增發(fā)發(fā)行方式
4002 增發(fā)發(fā)行時間
4003 增發(fā)發(fā)行價格
4004 增發(fā)資產置換折股數
4005 增發(fā)發(fā)行總數量
4006 增發(fā)配售給基金數量
4007 增發(fā)公眾股配售數量
4008 增發(fā)公眾股配售比例
4009 增發(fā)公眾股配售繳款日期
4010 增發(fā)每一賬號申購上限
4011 增發(fā)上網發(fā)行數量
4012 增發(fā)發(fā)行市盈率
4013 增發(fā)發(fā)行中簽率
4014 增發(fā)發(fā)行募集資金
4015 增發(fā)上市日期
4016 增發(fā)主承銷商
4017 協(xié)調人
4018 增發(fā)上市推薦
4019 增發(fā)發(fā)行副主承銷商
4020 回購數量
4021 回購比例
4022 回購價格
4023 回購支付資金總額
4024 回購支付資金來源
4025 回購支付資金方式
4026 回購對象
4027 回購股份名稱
4028 回購期限開始日期
4029 報告日期
4030 截止日期
十大股東 5001 第一股東名稱
5002 股東持股數量
5003 股東持股比例
5004 備注
5005 法人
5006 經營范圍
5007 第二股東名稱
5008 股東持股數量
5009 股東持股比例
5010 備注
5011 法人
5012 經營范圍
5013 第三股東名稱
5014 股東持股數量
5015 股東持股比例
5016 備注
5017 法人
5018 經營范圍
5019 第四股東名稱
5020 股東持股數量
5021 股東持股比例
5022 備注
5023 法人
5024 經營范圍
5025 第五股東名稱
5026 股東持股數量
5027 股東持股比例
5028 備注
5029 法人
5030 經營范圍
5031 第六股東名稱
5032 股東持股數量
5033 股東持股比例
5034 備注
5035 法人
5036 經營范圍
5037 第七股東名稱
5038 股東持股數量
5039 股東持股比例
5040 備注
5041 法人
5042 經營范圍
5043 第八股東名稱
5044 股東持股數量
5045 股東持股比例
5046 備注
5047 法人
5048 經營范圍
5049 第九股東名稱
5050 股東持股數量
5051 股東持股比例
5052 備注
5053 法人
5054 經營范圍
5055 第十股東名稱
5056 股東持股數量
5057 股東持股比例
5058 備注
5059 法人
5060 經營范圍
5061 股東總數
5062 國家股法人股股東數
5063 流通股A股股東數
5064 流通股B股股東數
5065 報告日期
5066 截止日期
基金周報 6001 基金設立日期
6002 基金管理人
6003 基金托管人
6004 基金規(guī)模
6005 基金凈值總額
6006 基金單位凈值
6007 基金單位初值
6008 基金調整后凈值
6009 基金調整后初值
6010 基金增長率
6011 基金累計凈值
6012 報告日期
6013 截止日期
基金持股情況 7001 第一名稱代碼
7002 市值
7003 占凈值比例
7004 第二名稱代碼
7005 市值
7006 占凈值比例
7007 第三名稱代碼
7008 市值
7009 占凈值比例
7010 第四名稱代碼
7011 市值
7012 占凈值比例
7013 第五名稱代碼
7014 市值
7015 占凈值比例
7016 第六名稱代碼
7017 市值
7018 占凈值比例
7019 第七名稱代碼
7020 市值
7021 占凈值比例
7022 第八名稱代碼
7023 市值
7024 占凈值比例
7025 第九名稱代碼
7026 市值
7027 占凈值比例
7028 第十名稱代碼
7029 市值
7030 占凈值比例
7031 報告日期
7032 截止日期
13. 交易系統(tǒng)函數
1. AVGENTERPRICE 平均買入成本
交易系統(tǒng)中當前持有股票的平均買入成本
該函數僅在使用Buy,Sell新交易函數的交易系統(tǒng)中有效.
2. BESTPERCENT 最大利潤率
交易系統(tǒng)中當前位置之前所有交易中利潤率最大一次的利潤率
該函數僅在使用Buy,Sell新交易函數的交易系統(tǒng)中有效.
3. BESTTRADE 最大盈利
交易系統(tǒng)中當前位置之前所有交易中盈利最大一次的利潤額
該函數僅在使用Buy,Sell新交易函數的交易系統(tǒng)中有效.
4. BUY 買入
本函數僅能用于交易系統(tǒng)。
BUY(V,Type,P);
表示買入V股當前股票,Type表示買入類型,P表示買入價格,所有參數均可以省略。
V:買入股數或買入資金百分比(N%),省略表示100%;
Type:可以是本周期收盤(THISCLOSE),次周期開盤(MARKET),次周期限價單(LIMIT),次周期停損單(STOP);
P:對于限價單、停損單需要指定的買入價格
例如:
IF CLOSE>OPEN THEN
BUY(1000,CLOSE);表示收陽線則在本周期收盤價上買入1000股。
BUY(50%,LIMIT,CLOSE-0.2);表示在次周期CLOSE-0.2元位置下買入限價單,若價格達到或低于該價格則用50%資金買入。
5. BUYSHORT 空頭買入
本函數僅能用于交易系統(tǒng)。
BUYSHORT(V,Type,P);
表示空頭買入V股當前股票,Type表示買入類型,P表示買入價格,所有參數均可以省略。
V:買入股數或買入資金百分比(N%),省略表示100%;
Type:可以是本周期收盤(THISCLOSE),次周期開盤(MARKET),次周期限價單(LIMIT),次周期停損單(STOP);
P:對于限價單、停損單需要指定的買入價格
例如:
IF CLOSE>OPEN THEN
BUYSHORT(1000,CLOSE);表示收陽線則在本周期收盤價上空頭買入1000股。
BUYSHORT(50%,LIMIT,CLOSE-0.2);表示在次周期CLOSE-0.2元位置下空頭買入限價單,若價格達到或高于該價格則用50%資金空頭買入。
6. CASH 現金存量
交易系統(tǒng)中當前的現金存量
該函數僅在使用Buy,Sell新交易函數的交易系統(tǒng)中有效.
7. ENTERBARS 買入位置
交易系統(tǒng)中上次買入到當前的周期數
該函數僅在使用Buy,Sell新交易函數的交易系統(tǒng)中有效.
8. ENTERPRICE 買入價格
交易系統(tǒng)中上次交易的買入價格
該函數僅在使用Buy,Sell新交易函數的交易系統(tǒng)中有效.
9. EXITBARS 賣出位置
交易系統(tǒng)中上次賣出到當前的周期數
該函數僅在使用Buy,Sell新交易函數的交易系統(tǒng)中有效.
10. EXITPRICE 賣出價格
交易系統(tǒng)中上次交易的賣出價格
該函數僅在使用Buy,Sell新交易函數的交易系統(tǒng)中有效.
11. HOLDING 當前持倉量
交易系統(tǒng)中當前持有的股票股數
該函數僅在使用Buy,Sell新交易函數的交易系統(tǒng)中有效.
12. MAXSEQLOSS 最大連續(xù)虧損次數
交易系統(tǒng)中當前位置之前連續(xù)虧損交易的最大次數
該函數僅在使用Buy,Sell新交易函數的交易系統(tǒng)中有效.
13. MAXSEQWIN 最大連續(xù)盈利次數
交易系統(tǒng)中當前位置之前連續(xù)盈利交易的最大次數
該函數僅在使用Buy,Sell新交易函數的交易系統(tǒng)中有效.
14. NUMLOSSTRADE 虧損交易次數
交易系統(tǒng)中當前位置之前總共有多少次虧損的交易,注意每次賣出算一次交易,而買入不算
該函數僅在使用Buy,Sell新交易函數的交易系統(tǒng)中有效.
15. NUMSEQLOSS 當前連續(xù)虧損次數
交易系統(tǒng)中當前位置之前連續(xù)有多少次虧損的交易,注意每次賣出算一次交易,而買入不算
該函數僅在使用Buy,Sell新交易函數的交易系統(tǒng)中有效.
16. NUMSEQWIN 當前連續(xù)盈利次數
交易系統(tǒng)中當前位置之前連續(xù)有多少次盈利的交易,注意每次賣出算一次交易,而買入不算
該函數僅在使用Buy,Sell新交易函數的交易系統(tǒng)中有效.
17. NUMTRADEWIN 盈利交易次數
交易系統(tǒng)中當前位置之前總共有多少次盈利的交易,注意每次賣出算一次交易,而買入不算
該函數僅在使用Buy,Sell新交易函數的交易系統(tǒng)中有效.
18. OPENPROFIT 浮動盈虧
交易系統(tǒng)中當前浮動盈虧(當前持倉市值與持倉成本之差)
該函數僅在使用Buy,Sell新交易函數的交易系統(tǒng)中有效.
19. PERCENTWIN 交易勝率
交易系統(tǒng)中當前位置之前盈利交易占總交易次數的比例,其數值在0—1之間
該函數僅在使用Buy,Sell新交易函數的交易系統(tǒng)中有效.
20. SELL 賣出
本函數僅能用于交易系統(tǒng)。
SELL(V,Type,P);
表示賣出V股當前股票,Type表示賣出類型,P表示賣出價格,所有參數均可以省略。
V:賣出股數或賣出持倉百分比(N%),省略表示100%;
Type:可以是本周期收盤(THISCLOSE),次周期開盤(MARKET),次周期限價單(LIMIT),次周期停損單(STOP);
P:對于限價單、停損單需要指定的賣出價格
例如:
IF CLOSE>OPEN THEN
SELL(1000,CLOSE);表示收陽線則在本周期收盤價上賣出1000股。
SELL(100%,LIMIT,CLOSE+0.2);表示在次周期CLOSE+0.2元位置下賣出限價單,若價格達到或高于該價格則賣出全部持倉。
21. SELLSHORT 空頭賣出
本函數僅能用于交易系統(tǒng)。
SELLSHORT(V,Type,P);
表示空頭賣出V股當前股票,Type表示賣出類型,P表示賣出價格,所有參數均可以省略。
V:賣出股數或賣出持倉百分比(N%),省略表示100%;
Type:可以是本周期收盤(THISCLOSE),次周期開盤(MARKET),次周期限價單(LIMIT),次周期停損單(STOP);
P:對于限價單、停損單需要指定的賣出價格
例如:
IF CLOSE>OPEN THEN
SELLSHORT(1000,CLOSE);表示收陽線則在本周期收盤價上空頭賣出1000股。
SELLSHORT(100%,LIMIT,CLOSE+0.2);表示在次周期CLOSE+0.2元位置下空頭賣出限價單,若價格達到或低于該價格則賣出全部空頭持倉。
22. TOTALTRADE 交易次數
交易系統(tǒng)中當前位置之前總共有多少次交易,注意每次賣出算一次交易,而買入不算
該函數僅在使用Buy,Sell新交易函數的交易系統(tǒng)中有效.
23. WORSTPERCENT 最大虧損率
交易系統(tǒng)中當前位置之前所有交易中虧損率最大一次的利潤率
該函數僅在使用Buy,Sell新交易函數的交易系統(tǒng)中有效.
24. WORSTTRADE 最大虧損
交易系統(tǒng)中當前位置之前所有交易中虧損最大一次的虧損額
該函數僅在使用Buy,Sell新交易函數的交易系統(tǒng)中有效.
14. 輸出修飾符
1. ALIGN 水平對齊方式
ALIGNx,用逗號隔開放置在DrawIcon,DrawBmp,DrawText語句后,用于設定對齊方式,x=0表示左對齊,1表示中對齊,2表示右對齊,缺省左對齊。
例如:
DrawIcon(CLOSE>OPEN,LOW,6),ALIGN1;表示繪制6號圖標,采用中對齊
2. COLOR 輸出顏色
COLORbbggrr,用逗號隔開放置在輸出語句后,用于設定繪制指標線的顏色,rr、gg、bb分別表示紅綠藍三色的份量,用十六進制表示,00表示最小,FF表示最大。
例如:
CLOSE,COLOR0000FF;表示用紅色繪制收盤價線
3. LIMIT 限價買入
交易方式控制符
LIMIT,加入限價單,次周期達到限價即操作,否則放棄。
所謂限價就是股價優(yōu)于設定的價格,具體說來對于買入或賣空就是低于設定價格,對于賣出或買空就是高于設定價格
4. LINETHICK 輸出線寬
LINETHICKx,用逗號隔開放置在輸出語句后,用于設定繪制指標線寬度,x可以為0-7,若設為0則表示不顯示。
例如:
CLOSE,LINETHICK6;表示用6點粗線繪制收盤價線
5. MARKET 市價買入
交易方式控制符
MARKET,按照次周期開盤價操作
6. MOVE 向后平移
MOVEx,用逗號隔開放置在輸出語句后,用于設定輸出線向后平移x周期,x=0—255
例如:
CLOSE,MOVE10;表示繪制收盤價線向后移動10周期
7. PRECIS 輸出精度
PRECISx,用逗號隔開放置在輸出語句后,用于設定指標數值精確到小數點后多少位,x可以為0-6。
例如:
CLOSE,PRECIS6;表示收盤價線顯示6位小數精度
8. STOP 停損買入
STOP,加入停損單,次周期達到設定價格即操作買入,否則放棄。
所謂停損就是股價比設定的價格要差,具體說來對于買入或賣空就是高于設定價格,對于賣出或買空就是低于設定價格
9. THISCLOSE 收盤價買入
CLOSED,按照本周期收盤價操作
10. VALIGN 垂直對其方式
ALIGNx,用逗號隔開放置在DrawIcon,DrawBmp,DrawText語句后,用于設定對齊方式,x=0表示上對齊,1表示中對齊,2表示下對齊,缺省上對齊。
例如:
DrawIcon(CLOSE>OPEN,LOW,6),ALIGN1,VALIGN0;表示繪制6號圖標,采用中對齊和上對齊
15. 其它函數
STKINDI 引用指定股票的指標數值
STKINDI('STKNAME','INDINAME',PARAMs),STKNAME是股票代碼,INDINAME是指標及其指標線名稱,其語法和雙引號引用指標數值相同,PARAM是可選參數,其數量應當等于被應用指標的參數數量,否則將使用缺省參數數值。例如:
STKINDI('SZ000001','MA.MA1',5,10,15,20)表示引用深發(fā)展的MA指標的MA1指標線,計算參數5,10,15,20。
STKINDI('000001','KDJ.K#WEEK',9,4,4,)表示引用深發(fā)展的周線KDJ指標的K指標線,計算參數9,4,4。
STKINDI('SH600000','EXPLORER.KDJ#MONTH')表示引用浦發(fā)銀行的KDJ條件選股月線公式,計算使用默認值。
工具箱【 · 發(fā)布:紅帆船 2005-01-06 19:30 】
新交易系統(tǒng)的指標模擬
分析家新交易系統(tǒng)為用戶提供了一個很接近實際操作的交易系統(tǒng)設計平臺,利用它可以更好地模擬自己的交易思路和習慣,為技術分析從定性分析向定量分析發(fā)展提供了保證。為方便用戶掌握新交易系統(tǒng)的實際計算過程,同時也為用戶掌握新公式系統(tǒng)的一些強大的功能,特寫技術指標TRADESMP。
新交易系統(tǒng)提供了兩類函數,交易函數和交易狀態(tài)函數。
交易函數包括BUY、SELL、BUYSHORT、SELLSHORT四個函數,分別表示買入、賣出、買空和賣空四個動作。這些動作均可以指定價格、數量和限制條件。
交易狀態(tài)函數包括CASH、HOLDING、ENTERPRICE、EXITPRICE等20個函數,用于描述當前的資金存量、持倉量等交易狀態(tài)。
有關交易函數、交易狀態(tài)函數的詳情請參閱《新公式系統(tǒng)幫助》。
假設我們有如下的一個簡單的交易系統(tǒng),4%陽線則買入100股,-7%陰線則買空,-4%陰線賣出,而3%陽線則買空,公式如下:
IF CLOSE>OPEN*1.04 THEN
BUY(100);
ELSE IF CLOSE< OPEN*0.93 THEN
BUYSHORT(100);
ELSE IF CLOSE< OPEN*0.96 THEN
SELL(100);
ELSE IF CLOSE>OPEN*1.03 THEN
SELLSHORT(100);
現在我們編寫一個技術指標來模擬整個交易過程,我們在公式中模擬了交易系統(tǒng)的多個函數,這里我們在函數前面加一個下劃線’_’表示對應的變量,并且為簡單起見忽略了交易手續(xù)費稅。假設我們處在一個可以做空的市場上,那么可以假定買入交易有如下執(zhí)行過程:
1. 查看買入條件是否滿足
2. 若持有空倉,首先平倉
3. 查看現金是否足夠
4. 按照指定價格買入指定數量
5. 現金減少、持倉量增加
6. …
賣出、買空、賣空以此類推。
我們將這個過程用公式描述出來,參見公式TRADE.FNC。
需要注意的是,因為我們大量用到更新交易利潤、最佳交易等,所以將該過程定義為宏,每次需要用到該功能,直接使用宏名稱即可,就象使用函數一樣方便。
我們可以刪除公式最后面的一些注釋,就可以查看隨著交易的進行,相應的狀態(tài)發(fā)生了那些變化,對比交易系統(tǒng)原型公式,可以更好地理解它。
工具箱【 · 發(fā)布:紅帆船 2005-01-06 19:31 】
分析家V5.0新功能表
新增功能及重要改動列表
一. 新公式系統(tǒng)(標準版僅具備查看公式功能)
分析家新公式系統(tǒng)在完全兼容V4.0公式系統(tǒng)的基礎上,提供了包括循環(huán)、分支、宏定義、交易函數等強大功能在內的新特性,可以完成之前所不能完成的許多分析功能。用戶不僅可以描述一些簡單的數學、邏輯關系,而且還可以引入更多、更復雜的數學模型,可以不用再為缺少某個特定函數而焦急了,因為使用新公式系統(tǒng),您幾乎可以將原來需要用函數來實現的計算改成自己用新公式系統(tǒng)實現。
新公式系統(tǒng)增加了一些函數,詳情參見《新公式系統(tǒng)幫助》。
總之,新公式系統(tǒng)既保留了簡單易學的特點,又具有很高的靈活性,將會成為廣大公式愛好者的一個有力武器。
二. 公式調試器(標準版不具備該功能)
新公式系統(tǒng)可以編寫很復雜的公式,如果其中有什么錯誤將很難發(fā)現。分析家V5.0提供了公式調試器,可以一步步執(zhí)行公式里的每一條語句,查看它是怎樣進行分支、循環(huán)了多少次退出循環(huán)的,從而找到公式中可能出現的邏輯錯誤。
對于簡單的公式,可以不用該調試器。
三. 公式倉庫
分析家公式系統(tǒng)為用戶提供了一個表達自己思想的舞臺,也為分析方法、公式交流提供了有利的武器。經過幾年的發(fā)展,已經有數萬個網站提供分析家公式下載。但由于這些網站專業(yè)性不夠,難于讓所有用戶方便的查找,因此分析家V5.0為廣大公式愛好者提供了一個交流平臺,用戶可以將自己的公式放到網站上供大家交流、下載。
使用公式倉庫,用戶可以下載公式、上載自己的公式、郵寄公式、接收公式郵件、搜索公式、學習和提高分析技能。
四. 公式引入、自動測試平臺
改進了公式引入功能,可以瀏覽整個目錄下所有的公式文件。公式引入還支持自動測試功能,自動將待引入的公式測試一遍,從而讓用戶有選擇地引入公式。另外,在公式被引入到系統(tǒng)之前還支持公式完整測試、臨時在K線圖上查看新公式、編輯公式等。
總之,新功能讓用戶在引入公式之前就能夠對公式進行一番甄別,一改過去公式混亂的局面。而且利用引入自動測試的功能,一次性對多個公式進行系統(tǒng)測試。
五. 新交易系統(tǒng)(標準版僅具備查看公式功能)
分析家V4.0之前的交易系統(tǒng),不能對股票進行倉位控制、多交易信號控制等。新交易系統(tǒng)同提供了一整套的交易函數,為用戶準確地控制在什么時間、什么價位,買入或賣出多少股票提供了可能。使用新交易系統(tǒng),用戶不僅可以在系統(tǒng)指示上看到每次買賣指示,還可以看到在什么價位買賣、買賣量是多少,在指標圖上還可以查看歷史持倉情況、利潤情況、浮動盈虧等等。
新交易系統(tǒng)是一套科學、完整的交易策略設計工具,它的出現為我們從簡單的選股買入這樣的思維方式向系統(tǒng)交易方法轉化提供了有力的保證。
六. 互聯(lián)網、圖文卡數據接收
分析家V5.0提供了多種數據接收方式,除了過去提供的圖文卡數據接收方式外,還提供了互聯(lián)網數據接口,可以通過互聯(lián)網獲取數據(數據需要向數據提供商另外購買)
七. 系統(tǒng)測試平臺
系統(tǒng)測試平臺為用戶提供了完整的測試、使用各種分析方法的工具,利用該測試平臺,用戶不僅可以測定公式的成功率,更為重要的是它提供了一個詳盡、完整的測試結果,讓用戶可以充分了解到這個分析方法的優(yōu)缺點。測試平臺還提供了優(yōu)化功能,用三維顯示的方式對優(yōu)化結果進行顯示。
(互聯(lián)網版、標準版不支持全市場測試)
八. 自定義數據管理(互聯(lián)網版、標準版不具備該功能)
自定義數據為用戶提供了采集、編輯、修改自己數據的功能,這些數據可以是數值,也可以是字符串。用戶在公式中可以方便地引用這些數據。
九. F10數據采集(標準版不具備該功能)
與自定義數據管理配合,可以從任意F10資料中提取您需要的數值或字符串信息。只需要將需要的信息的上下文設置正確,就可以讓電腦自動提取這些數據了。(信息提取只能對有一致格式的信息進行提取,并且有可能因為F10資料的變化而發(fā)生差錯)
十. 多頁綜合動態(tài)顯示牌
系統(tǒng)提供了綜合動態(tài)顯示牌,用戶可以任意改變其中任意一欄表格設定為動態(tài)行情、財務數據、技術指標數值或階段統(tǒng)計結果??梢园凑談討B(tài)顯示牌上任意數據進行排序,可以隨時自動更新排序結果。您可以設計最多10頁不同內容的動態(tài)顯示牌,隨時方便切換。
十一. 區(qū)域狀態(tài)指示
我們在分析K線圖時,常常希望知道某個時間它所處的階段狀態(tài),這種狀態(tài)可能是某個技術指標的狀態(tài)、大盤或者其他股票的行情狀態(tài)、或者跨周期指標的情況。利用區(qū)域狀態(tài)指示,我們可以在圖形背景上顯示這些狀態(tài),方便分析。
十二. 模式匹配(標準版不具備該功能)
我們常說碰到W底、M頭會怎樣怎樣,但使用公式系統(tǒng)來描述形態(tài)特征有一定的困難。為此分析家V5.0提供了模式匹配功能,可以簡單地徒手繪制K線形態(tài)特征,或者選取某一只股票一定時段的走勢作為模板,用于查找、分析具有類似形態(tài)特征的股票。
使用模式匹配,形態(tài)分析不再困難。
十三. 自定義指數(標準版不具備該功能)
在中國市場,板塊聯(lián)動、板塊輪動現象十分明顯,使用自定義指數功能,可以及時了解個板塊的及時動向,做到知己知彼、百戰(zhàn)不殆。
分析家V5.0自定義指數功能完全按照國際上流行的算法進行設計,可以設定每一只指標股的加入時間、退出時間、權重、加權方法,充分考慮股本數據、除權對指數的影響。
分析家V5.0支持從板塊批量建立自定義指數。
十四. 板塊分析(標準版不具備該功能)
在分析家V4.0對比分析、關系分析的基礎上,新增樣本股分析和交叉分析,為用戶分析不同板塊的及時數據變化提供了有力的工具。用戶可以隨時了解熱門股、自選股、領漲股等不同股票的板塊分布情況,隨時把握最新動態(tài)。
十五. 模擬K線
與時空隧道功能配合,為用戶提供了向前、向后模擬股市的分析工具??梢苑奖愕卦黾?、刪除、編輯、拖動模擬K線,對未來的趨勢作一個設想。
十六. 多賬戶組合投資管理
可以自由組合多個賬戶,將多個賬戶的資金、交易合成一體,方便具有多個賬戶的用戶進行投資管理。
十七. 指標橫向統(tǒng)計(標準版不具備該功能)
橫向統(tǒng)計任意指標的分布狀況,了解當時整個市場狀況。
十八. 數據瀏覽器
提供了對日線、5分鐘線、分筆成交、財務數據、除權數據等原始數據進行瀏覽、修改的工具。
十九. 電子股評
在指標中提供了TIPTEXT函數,支持直接在圖形畫面右側輸出文字股評的功能。
小功能改進
一. 窗口列表
在分析家主窗口底部市場欄的最左側,顯示當前活動分析窗口名稱,可以用鼠標點擊快速切換窗口。
二. 向前向后查看股票
在圖形分析畫面,按BACKSPACE可以向前回朔過去曾經瀏覽過的股票,按Shift+BACKSPACE則按相反方向。
三. 鎖定時段顯示
在K線圖上可以指定圖形顯示時段,改變股票后仍然顯示相同時段的行情,此時時間表持右短顯示一把小鎖。該功能可以方便對比比較同一時段股票的走勢。
四. 歷史階段選股、查看上次選股結果
歷史階段選股、列出上次選股的結果兩項功能,均在可以K線股上標志出選股位置,方便檢索。
五. 三維K線、柱狀線顯示
支持三維K線顯示,只需要在系統(tǒng)設定中設置即可。
六. 距離測量
使用距離測量功能,方便了解某些關鍵點之間的時間距離和漲跌幅度等。
七. 公式列表支持時間索引
所有公式列表框新增時間索引功能,將公式按照引入、修改時間新型排序、分類,方便對新公式進行管理。
八. 鼠標雙點
在主圖上雙點鼠標,可以切換十字光標,副圖上雙點可以方它該副圖。
九. 分時圖疊加大盤走勢、量比指標
在分時圖上按F3可以疊加大盤走勢、量比指標
十. 時段統(tǒng)計支持分時圖
十一. 提示信息增加實時監(jiān)控雷達、大單功能
十二. 動態(tài)顯示牌指標排序
動態(tài)顯示牌換屏時保持排序狀態(tài),保持指標、時段統(tǒng)計的顯示和刷新
十三. 自動保存指標、系統(tǒng)指示狀態(tài)
系統(tǒng)重啟動后仍保存這些指標的狀態(tài)。
十四. 投資管理器中的投資記錄可以批量引入
十五. 板塊管理中的”文件引入”功能實現從TXT文件中引入股票加入指定板塊中
十六. 功能樹支持批量新建自定義指數(標準版不具備該功能)