同花順指標公式編寫基礎知識[同花順公式]
相關標簽: 同花順指標公式源碼 、 同花順指標公式大全 、 同花順指標公式 、 同花順cdp指標公式 、 同花順最好指標公式 、 同花順社區指標公式 、 同花順l2指標公式 、 同花順指標公式交流網 、 同花順adx指標公式 、
公式系統可以編輯多種類型的公式,且每個類型中又又若干分細,分別是1,基本公式(軟件全部函數指標的集合),2,技術指標(已自帶公式的集合)、3,交易系統、4,條件選股,5,五彩K線公式,6,自用公式(自編的公式及以復制/粘貼過來的他人的公式)。技術指標公式是最基本的公式,它用于指標曲線的繪制。技術指標公式是條件選股,交易系統的基礎。結合選股條件邏輯判斷表達式,即得到條件選股公式,用于條件選股。技術指標公式結合買賣邏輯判斷表達式,得到交易系統公式,用于交易系統指示。技術指標公式結合色彩邏輯判斷表達式,即得到K線模式公式,用于描述特定的K線模式。公式的編輯在公式編輯器中完成。
公式系統處理的原始數據的分析周期(即相鄰兩組數據間的時間間隔)可以從1分鐘到1000天間的任意值,也可以是分筆成交數據,改變分析窗口顯示的分析周期,則公式處理新的分析周期的數據。
學習公式編寫,使用的基本方法
基本捷徑是從軟件公式或他人公式入手,多看多動手邊理解其寫法,為什么調用這個函數,這個函數的意義是什么,這一句預要表達什么意思等等。不動手永遠不可能學會的。從簡單公式入手,先弄懂一,兩個公式。從修改公式加入自己的目標語句實現自己目標入手,幾乎沒有一個公式是那一個人自己完成的,或多或少都使用了前人的成果。
在編寫中多用“測試公式”按鈕,讓軟件作判斷,告訴你編寫對錯與否。
使用彩色編輯可事半功倍。
多用鼠標指針指向不懂的函數,軟件馬上會告訴你。
公式編寫步驟
1.設定公式名稱:每個公式都有自己的名稱,它由字母或數字組成,最多可以有9個字符。請注意,公式名稱在同類公式中不能重復,且不能為空。 2.描述公式:用于簡單描述該公式的含義(可不填亦能通過), 3.注釋公式:用于描述一個公式如何使用、計算方法等內容。輸入后,在有關窗口按“用法注釋”按鈕可以查看公式注釋(可省略)。 4. 設計技術指標公式語句: 公式的形式由若干語句組成。每個語句得到一個計算結果,對于技術指標,就是一條指標線,語句間用分號(“;”)隔開。 一個語句由若干函數通過四則運算或邏輯運算而組成。函數是公式系統的基本成分,它是對數據做某種操作,如CLOSE()函數表示調用該分析周期的收盤價。
函數由函數名稱和參數組成,參數用函數名后的括號括起來,每個函數調用的參數可以是變量或常量,變量是一個隨著時間變化而變化的數據,例如收盤價;常量是一個不隨時間變化而變的數據。例如函數REF(X,N)用于引用N周期前的X值,X是一個變量,N是一個常量,REF(close(),1)表示計算上一周期的收盤價。函數若需調用幾個參數,則它們在括號內是有順序的。若沒有參數則可以省去括號,例如CLOSE()函數沒有參數,所以寫成 CLOSE和 CLOSE()都可以。函數計算得到的結果是一個變量。
計算符將函數連接成為語句。計算符分為算術計算符和邏輯計算符。算術計算符有+、-、*、/,分別是對計算符兩邊的數值進行加減乘除計算;邏輯計算符有>、<、<>、>=、<=、=、AND(與)、OR(或),分別是對計算符兩邊的數值做大于、小于、不等于、大于等于、小于等于、等于、邏輯與、邏輯或的邏輯運算,如果邏輯條件成立返回的計算結果為1,否則為0。例如:2>1的邏輯運算結果等于 1,1>2的邏輯運算結果就等于0。 語句得到的計算結果連成線就是所謂的指標線,不同的語句就得到不同的線,為了在指標圖形中互相區分,不同的線有不同的顏色,而且語句還可以有自己的名稱,在指標圖形中顯示在左上角位置。語句名寫在語句的前面,用一個冒號(“:”)將它與語句隔開。語句“上日收盤價:REF(close,1)”就表示該語句REF(close,1)的名稱為“上日收盤價”。該語句后而的語句若需引用它,則寫公式名即可,如 MA(上日收盤價,20)意思是對上日收盤價求20日平均。
設計中間語句:
一個語句將顯示一條指標線,一個復雜的公式往往有很多語句,而且有些語句沒必要顯示出來。這時我們可以把不需要顯示語句定義為中間語句,中間語句的寫法只需在一般語句的名稱與語句之間的等號,即“=”即可(亦可用通用的冒號加等于號“:=”)。例如,語句“上日收盤價=REF(close,1)”就表示該語句為中間語句。重復使用的語句也可以定義成中間語句。
設計其他公式語句:
其他類型的公式顯示的不是指標線,而是相應的操作,如條件選股公式顯示的是選股結果,交易系統公式顯示的是交易指示(用":>"表達),五彩 K線公式顯示的是K線顏色。這些公式需要有一條或幾條邏輯表達式表示這些操作的語句,當語句返回0時表示不需要進行相應的操作,當返回非0時表示需要進行相應的操作。其他的語句都應設定為中間語句。 條件選股公式只有一條邏輯表達式語句,用來表示選股條件是否成立,例如 CLOSE>REF(close,1)語句,表示選出當期收盤價高于上日收盤價的股票。其他的語句必須設定為中間語句,否則編輯器出現“只能有一個輸出結果”的警示。 交易系統公式需要邏輯表達式語句,分別為買入(在語句后加buy)、賣出條件(在語句后加sell),當這些語句返回非0時,表示需要進行相應的操作。其他的語句必須設定為中間語句,否則編輯器出現“非交易信號變量只能用:=賦值”的警示。條件中必須至少設定一個條件。
函數可以用簡寫,如收盤價開盤價分別用C,O來表示,在編寫中往往可以自動變成大寫字母,可以以此判斷。函數名編寫正確時字母變為大寫。編寫中要用彩色編輯,這樣可以指示出軟件對于此函數是否認可--應變成彩色。
公式編寫完測試公式通過后,還需進行曲線屬性的設置,在“曲線屬性”:如顯示曲線的位置是主圖,副圖,成交量圖等,還可以設置是否顯示曲線參數或只顯示參數而不顯示曲線,選擇顯示的圖標,提供象箭頭,圓,凌形(buy紅色向上箭頭,buy1黃色箭頭,1空心三角形,2空心圓,4空心菱形,5星花...), 曲線顏色等...最后再測試通過,確定退出編輯。
未來函數
公式系統對數據的運算是基于一系列函數,函數必須滿足時間不變性,即時間靠后的數據不對時間靠前的結果產生影響(判斷是否未來函數的依據)。這個很重要!對于未來函數可以理解為:某一量依賴另一量,如量 A和量B,B變化使A改變,那么A是B的函數,如果B是稍后的量,A是稍早的量,A跟著B變,A是B的未來函數。未來函數是有時間周期的,在一個短的周期內可能是未來函數,但在稍長的周期內就不是未來函數,比如"HIGH"(最高價),在一天收市前都是不確定的.如在交易沒有結束時我們可以看到某一個指標,如“賣出”跟著股價的高低一會出現,一會消失(這個現象很容易觀察到)。所以對于一個日周期的指標在分時周期具有“未來函數”特征。但一旦收盤該指標是定值,不應隨明日及以后的價而變,所以該指標在日周期中不是未來函數。
被人們普遍認為是未來函數的是比較長時間才被確認的ZIG函數,比如把參數設置為ZIG(3,5),就要等下一個ZIG(3,5)成立時才能被確認,就是說你把周期設置得越長,被確認的時間就越長(比如ZIG(3,30)),如果把它設置的很短(比如ZIG(3,1)),那就跟"high"差不多了.
有未來函數的公式對歷史模擬的相當準確,對號稱100%的.99%準確的公式要小心。
未來函數有:
zig
PEAK
PEAKBARS
TROUGH
TROUGHBARS
所以任何函數都具有未來函數特性,也沒什么可怕。第一不要依據公式入市,第二還是不要依據公式入市!不要迷信公式。
公式只能給你一個信號,最終判斷取舍要靠人。
關于未來函數的典型例子
有這么多人對一個叫鬼谷神算公式推崇,甚至將它說成'極品‘。我感到吃驚。應該把此公式的本質性的東西反映出來才是;該公式使用了未來函數,因而有“很高” 的準確率,因為它是馬后炮所以100%準。這是需要大家十分注意的。
我不反對使用未來函數,但要充分認識其特有的“欺騙性”--已經出現的“結果"因后面的數據的改變而改變。
在此,我要說的是本來是一個及其簡單的公式,故意弄成很復雜,高深,寫了那么多行毫無相干的東西。是忽悠人的。我給“簡化”了一下,只剩下6行。希望大家知道這樣的公式人人可寫。
這樣的公式恐怕是別有用心之人忽悠賣錢的。
改成下面的公式,而且完全顯示買賣兩個信號。其核心是Z字轉向于其他沒關系。Z字轉向即為未來函數
而ZIG函數的定義為 ,當前收盤價超過上次ZIG轉向輸出值的N%,則輸出當前收盤價并ZIG轉向。對該公式為50/5=10,即當價格變化量超過10%時轉向。
對于下面的公式:
第一行,ZIG函數,它輸出的是就是價格,為了欺騙乘以100;
第二行,是第一行的2日平均;
第三行,第四行是第一行,第二行的金叉,死叉;
而買賣信號的出現就是在于金叉,死叉。
請大家試試看。
簡化的公式:
B:zIG(3,50/5)*100,colorwhite;
G:MA(B,2),coloryellow;
D:=CROSS(B,G)*1000,colorred;
W:=CROSS(G,B)*1000,colorblue;
DRAWTEXT(W=1000,B*1.05,'賣' ),colorgreen;
DRAWTEXT(D=1000,B*1.05,'買'),colorred;
原公式
公式名稱:鬼谷神算
VAR1:=SUM(MAX(MAX(HIGH-LOW,ABS(HIGH-REF(CLOSE,1))),ABS(LOW-REF(CLOSE,1))),25);
VAR2:=HIGH-REF(HIGH,1);
VAR3:=REF(LOW,1)-LOW;
VAR4:=SUM(IF(VAR2>0 AND VAR2>VAR3,VAR2,0),25);
VAR5:=SUM(IF(VAR3>0 AND VAR3>VAR2,VAR3,0),25);
VAR6:=VAR4*100/VAR1;
VAR7:=VAR5*100/VAR1;
VAR8:=MA(ABS(VAR7-VAR6)/(VAR7+VAR6)*100,15);
VAR9:=(VAR8+REF(VAR8,15))/2;
A:=(VAR7>VAR6 AND VAR7>25 AND VAR6<25);
B:ZIG(3,50/5)*100,COLORWHITE;
G:MA(B,2),COLORYELLOW;
D:=CROSS(B,G)*1000,COLORRED;
W:=CROSS(G,B)*1000,COLORBLUE;
E:=REF(INDEXC,1);
F:=SMA(MAX(INDEXC-E,0),3,1)/SMA(ABS(INDEXC-E),3,1);
VAR10:=F AND F<8;
VAR11:=(CLOSE-LLV(LOW,9))/(HHV(HIGH,9)-LLV(LOW,9))*100;
VAR12:=SMA(VAR11,3,1);
VAR13:=SMA(VAR12,3,1);
VAR14:=VAR13 AND VAR13<20;
MM:=A AND D AND VAR10 AND VAR14 ;
DRAWTEXT(W=1000,B*1.05,'賣' ),COLORGREEN;
DRAWTEXT(D=1000,B*1.05,'買'),COLORRED;
語言規范:
在自定義公式里面的各種符號(如,“;” )只能用半角不能用全角。
關鍵字 if else while break continue return (無大小寫之分)
常數 浮點數、整數、字符串
分隔符 “ ” ‘ ’ ( ) ; { } 注釋/* */
標識符 由字母和數字組成,由字母開頭,不分大小寫
運算符(優先級從高到低排列,同級同行)
* /
+ -
!= > < >= <=
And
Or
語句 賦值 a = b
條件 IF (a==b) c=d;
循環 while a==b c=d;
函數調用 func(a,b)
賦值語句:
其一般形式為:
a=b; 含義為將b的值付給a。
幾個運算符“=”賦值、 “:=” 賦值“:”賦值并輸出數值或字符串“:>”賦值并輸出圖形。
注意:“=”和“:=”兩個運算符的意義、用法完全相同。這樣做主要是為了更好地兼容市場上目前的各種帶有公式編輯功能的分析軟件。
同花順公式函數注釋(常用部分)
邏輯函數:
1、條件函數:根據條件求不同的值。
用法:IF(X,A,B)若X不為0則返回A,否則返回B。 例如:(CLOSE>OPEN,HIGH,LOW)表示該周期收陽則返回最高值,否則返回最低值。
引用函數:
1、滿足條件的周期數:統計滿足條件的周期數。
用法:COUNT(X,N),統計N周期中滿足X條件的周期數,若N=0則從第一個有效值開始。例如:COUNT(CLOSE>OPEN,20)表示統計20周期內收陽的周期數。
2、第一個條件成立到當前的周期數:統計第一個條件成立到當前的周期數。
用法:BARSSINCE(X):第一次X不為0到現在的天數。例如:BARSSINCE(HIGH>10)表示股價超過10元時到當前的周期數。
3、上一次條件成立到當前的周期數:上一次條件成立到當前的周期數。
用法:BARSLAST(X),上一次X不為0到現在的天數。例如:BARSLAST(CLOSE/REF(CLOSE,1)>=1,1)表示上一個漲停板到當前的周期數。
4、有效周期數:求總的周期數。
用法:BARSCOUNT(X),第一個有效數據到當前的天數。
5、向前賦值:將當前位置到若干周期前的數據設為1。
用法:BACKSET(X,N),若X非0,則將當前位置到N周期前的數值設為1。例如:BACKSET(CLOSE>OPEN,2)若收陽則將該周期及前一周期數值設為1,否則為0。
6、求和:求總和。
用法:SUM(X,N),統計N周期中X的總和,N=0則從第一個有效值開始。例如:SUM(VOL,5)周期設為日線時,表示最近5個交易日的成交量之和。SUM(VOL,0)表示從傳數據過來第一天起的成交量總和,具體如在區間統計里統計“總手” SUM(VOL,0)即是指全區間的成交量之和。
7、移動平均:求移動平均。
用法:SMA(X,N,M),求X的N日移動平均,M為權重。算法: 若Y=SMA(X,N,M)則 Y=[M*X+(N-M)*Y']/N,其中Y'表示上一周期Y值,N必須大于M。例如:SMA(CLOSE,30,1)表示求30日移動平均價。
8、向前引用:引用若干周期前的數據。
用法:REF(X,A),引用A周期前的X值。例如:REF(CLOSE,1)表示上一周期的收盤價,在日線上就是昨收。
9、簡單移動平均:求簡單移動平均。
用法:MA(X,N),求X的N日移動平均值。算法:(X1+X2+X3+,,,+Xn)/N。例如:MA(CLOSE,10)表示求10日均價。
10、最低值:求最低值。
用法:LLV(X,N),求N周期內X最低值,N=0則從第一個有效值開始。例如:LLV(LOW,0)表示求歷史最低價。
11、最高值:求最高值。
用法:HHV(X,N),求N周期內X最高值,N=0則從第一個有效值開始。 例如:HHV(HIGH,30)表示求30日最高價。
12、指數平滑移動平均:求指數平滑移動平均。
用法:EMA(X,N),求X的N日指數平滑移動平均。算法:若Y=EMA(X,N)則Y=[2*X+(N-1)*Y']/(N+1),其中Y'表示上一周期Y值。例如:EMA(CLOSE,30)表示求30日指數平滑均價。
13、動態移動平均:求動態移動平均。
用法:DMA(X,A),求X的動態移動平均。算法: 若Y=DMA(X,A)則 Y=A*X+(1-A)*Y',其中Y'表示上一周期Y值,A必須小于1。例如:DMA(CLOSE,VOL/CAPITAL)表示求以換手率作平滑因子的平均價。
14、最高值周期數:求上一高點到當前的周期數。
用法:HHVBARS(X,N):求N周期內X最高值到當前周期數,N=0表示從第一個有效值開始統計。例如:HHVBARS(HIGH,0)求得歷史新高到到當前的周期數。
15、最低值周期數:求上一低點到當前的周期數。
用法:LLVBARS(X,N):求N周期內X最低值到當前周期數,N=0表示從第一個有效值開始統計。例如:LLVBARS(HIGH,10)求得10 日最低點到當前的周期數。
16、加權移動平均:求加權移動平均。
用法:WMA(X,A),求X的加權移動平均。
算法:若Y=WMA(X,A) 則Y=(N*X0+(N-1)*X1+(N-2)*X2)+...+1*XN)/(N+(N-1)+(N-2)+...+1) X0表示本周期值,X1表示上一周期值...。
例如:WMA(CLOSE,20)表示求20日加權均價。
17、求和:向前累加到指定值到現在的周期數。
用法:SUMBARS(X,A):將X向前累加直到大于等于A,返回這個區間的周期數。例如:SUMBARS(VOL,CAPITAL)求完全換手到現在的周期數。
時間函數:
1、總開盤分鐘:求當前代碼類型的開市交易時間。
用法:TRADETIME。返回交易時間,單位為分鐘。目前一般市場都返回242,與日期或具體的股票無關。
2、距開盤分鐘:求當前時刻距開盤有多長時間。
用法:FROMOPEN。返回當前時刻距開盤有多長時間,單位為分鐘。例如:當前時刻為早上十點,則返回31。
3、距午夜秒:求當前時刻距開盤有多長時間。
用法:FROMNIGHT。返回當前時刻距午夜有多長時間,單位為秒。例如:當前時刻為早上十點,則返回36000。
4、時間格式:轉換時間格式。
用法:FORMATTIME(N)。目前只支持 N=1 把當前時間轉換成距開盤分鐘數返回。例如:分時中的量比曲線公式:(VOL* (TRADETIME+1)*5)/(FORMATTIME(1)*FIVEDAYVOL)。
5、時間差:計算兩個時間之間的差。
用法:COUNTTIME(N,L,K)。N、L為時間,其格式為YYYYMMDD。K為1、2或者3。當K為1時返回第二個之間比第一個時間晚多少年。當K為2時返回第二個之間比第一個時間晚多少月。當K為3時返回第二個之間比第一個時間晚多少日。例如:COUNTTIME(20000808,19990606,2)其返回值為-2。注意:這里返回值有正負號。
算術函數:
1、絕對值:求絕對值。
用法:ABS(X)返回X的絕對值。例如:ABS(-34)返回34。
2、介于:介于兩個數之間。
用法:BETWEEN(A,B,C)表示A處于B和C之間時返回1,否則返回0
例如:BETWEEN(CLOSE,MA(CLOSE,10),MA(CLOSE,5))表示收盤價介于5日均線和10日均線之間。
3、最大值:求最大值。
用法:MAX(A,B)返回A和B中的較大值。例如:MAX(CLOSE-OPEN,0)表示若收盤價大于開盤價返回它們的差值,否則返回0。
4、最小值:求最小值。
用法:MIN(A,B)返回A和B中的較小值。例如:MIN(CLOSE,OPEN)返回開盤價和收盤價中的較小值。
5、求模運算:求模運算。
用法:MOD(A,B)返回A對B求模。例如:MOD(26,10)返回6。
6、求邏輯非:求邏輯非。
用法:NOT(X)返回非X,即當X=0時返回1,否則返回0。例如:NOT(5>3)返回0。
7、范圍:介于某個范圍之間。
用法:RANGE(A,B,C)表示A大于B同時小于C時返回1,否則返回0。例如:RANGE(CLOSE,MA(CLOSE,5),MA(CLOSE,10))表示收盤價大于5日均線并且小于10日均線。
8、求相反數:求相反數。
用法:REVERSE(X)返回-X。 例如REVERSE(CLOSE)返回-CLOSE。
9、余弦值:求余弦值。
用法:COS(X)返回X的余弦值。
10、正弦值:求正弦值。
用法:SIN(X)返回X的正弦值。
11、平方根:開平方。
用法:SQRT(X)為X的平方根。例如:SQRT(CLOSE)收盤價的平方根。
12、上穿:兩條線交叉。
用法:CROSS(A,B)表示當A從下方向上穿過B時返回1,否則返回0。例如:CROSS(MA(CLOSE,5),MA(CLOSE,10))表示 5日均線與10日均線交金叉。
13、維持:兩條線維持一定周期后交叉。
用法:LONGCROSS(A,B,N)表示A在N周期內都小于B,本周期從下方向上穿過B時返回1,否則返回0。例如:LONGCROSS(MA(CLOSE,5),MA(CLOSE,10),5)表示5日均線維持5周期后與10日均線交金叉。
14、空:判斷是否為空。
用法:ISNULL(A)表示如果A為空(即沒有數據)則返回1,否則返回0。
15、冪:求冪。
用法:POW(X,Y)。求X的Y次冪。例如:POW(2,3)為8。
繪圖函數
位圖
含義:在圖形上繪制位圖。
用法:
DRAWBMP(COND,PRICE,BMPFILE),當COND條件滿足時,在PRICE位置畫BMPFILE文件名指定的BMP位圖(缺省路徑為軟件安裝目錄登錄用戶名)。
例如:DRAWBMP(CLOSE>OPEN,LOW,'SUN')表示當收陽時在最低價位置畫軟件安裝目錄登錄用戶名Sun.BMP位圖。
※BMPFILE參數指定的BMP文件默認路徑為當前用戶目錄,如果不帶后綴名即表示BMP文件,也可帶后綴名使用JPG和GIF文件。
也可不用用戶目錄而使用全路徑,路徑中的''要寫兩個以下字符串作為參數都是合法的,如果文件存在的話:
"SUN","SUN.BMP","SUN.JPG","SUN.GIF","C:\hexin\SUN.JPG"
填充背景
含義:根據條件填充背景區域。
公式導入教程: 【通達信公式源碼導入方法教程】 【同花順公式源碼導入方法教程】 【大智慧新一代公式源碼導入方法教程】
如果以上指標公式不適用于您常用的行情軟件
或者您想改編成選股公式,以便快速選出某種形態個股的話,
- 上一篇:許多人要的折線
- 下一篇:沒有了!
相關文章
-
沒有相關內容