交易系統(tǒng)編程
來源: 中期在線 分類:綜合-增值服務-工具 查看條件: 免費 2009-07-01 17:15:17
1、如何把熟悉的技術指標轉換成交易模型?
第一步:把KDJ指標公式COPY過來。
RSV:=(CLOSE-LLV(LOW,N))/(HHV(HIGH,N)-LLV(LOW,N))*100;{算出(收盤價-N周期內的最
低價)/(N周期的最高價—N周期內的最低價)*100的值,用RSV來表示。}
BACKGROUNDSTYLE(1);{確定背景的樣式,鈍化)}
K:SMA(RSV,M1,1),COLORWHITE;{RSV的移動加權平均的值用K表示,并且畫白色的線。}
D:SMA(K,M2,1),COLORYELLOW;{K的移動加權平均的值用D表示,并且畫黃色的線。}
J:3*K-2*D,COLORMAGENTA;{3倍的K減去2倍的D的值用J表示,并且畫紫色的線。}
第二步:原有公式主要是畫線,所以稍作修改。如下:
RSV:=(CLOSE-LLV(LOW,N))/(HHV(HIGH,N)-LLV(LOW,N))*100;{第一行不需要修改} {第二行
刪除,在交易模型中不用鈍化}
K:=SMA(RSV,M1,1); {在“:”后加上“=”變?yōu)橹欢x不用畫線,所以把后面的顏色函數(
COLORWHITE)也去掉}
D:=SMA(K,M2,1);{同上}
J:=3*K-2*D;{同上}
第三步:把自己總結的交易條件寫上,就可完成交易模型。如下:
RSV:=(CLOSE-LLV(LOW,N))/(HHV(HIGH,N)-LLV(LOW,N))*100;
K:=SMA(RSV,M1,1);
D:=SMA(K,M2,1);
J:=3*K-2*D;
CROSS(K,D),BK;{K向上穿越D,發(fā)出買開交易指令}
CROSS(J,100),SP;{J向上穿越100,發(fā)出賣平交易指令}
CROSS(D,K),SK;{K向下穿越D,發(fā)出賣開交易指令}
CROSS(0,J),BP;{J向下穿越0,發(fā)出買平交易指令} {{}內為文字說明,編寫模型時不用寫
出}
2、如何編制交叉(金叉/死叉)類型的交易模型?
MA5:=MA(CLOSE,5);{5個周期收盤價的簡單移動平均}
MA10:=MA(CLOSE,10);{10個周期收盤價的簡單移動平均}
MA20:=MA(CLOSE,20);{20個周期收盤價的簡單移動平均}
CROSS(MA10,MA20),BK;{當MA10上穿MA20時,發(fā)出買入開倉交易指令}
CROSS(MA10,MA5),SP;{當MA10上穿MA5時,發(fā)出賣出平倉交易指令}
CROSS(MA20,MA10),SK;{當MA20上穿MA10時,發(fā)出賣出開倉交易指令}
CROSS(MA5,MA10),BP;{當MA5上穿MA10時,發(fā)出買入平倉交易指令} {{}內為文字說明,編
寫模型時不用寫出}
3、如何編制多條件類型的交易模型?
RSV:=(CLOSE-LLV(LOW,9))/(HHV(HIGH,9)-LLV(LOW,9))*100;
K:=SMA(RSV,3,1);
D:=SMA(K,3,1);
J:=3*K-2*D;{以上為KDJ公式}
MA5:=MA(CLOSE,5);
MA10:=MA(CLOSE,10);{以上為定義5個周期收盤價的簡單移動平均和10個周期收盤價的簡
單移動平均}
(CROSS(MA5,MA10)&&REF(J,1)<70)||(CROSS(K,D)&&J<30),BK;{5周期均線上穿10周期均
線并且前一個周期的J值(KDJ)少于70或者KD金叉時并且J值小于30時發(fā)出買入開倉交易指
令}
CROSS(D,K)&&REF(J,1)>70,SP;{KD出現(xiàn)死叉并且前一個周期J值大于70時發(fā)出賣出平倉交易
指令}
(CROSS(MA10,MA5)&&REF(J,1)>30)||(CROSS(D,K)&&J>70),SK;{5周期均線下叉10周期均
線并且前一個周期的J值(KDJ)大于30或者KD死叉時并且J值大于70時發(fā)出賣出開倉交易指
令}
CROSS(K,D)&&REF(J,1)<30,BP;{KD出現(xiàn)金叉并且前一個周期J值小于30時發(fā)出買入平倉交易
指令} {{}內為文字說明,編寫模型時不用寫出}
4、如何編制REF(X,N)類型的交易模型?
A:=OPEN-(((REF(HIGH,1)-REF(LOW,1))+(REF(HIGH,2)-REF(LOW,2))+(REF(HIGH,3)-REF
(LOW,3))+(REF(HIGH,4)-REF(LOW,4)))/4)*1.8;{A=當前周期的開盤價 -[ (一個周期前
的最高價減最低價的差+兩個周期前的最高價減最低價的差+三個周期前的最高價減最低價
的差+四個周期前的最高價減最低價的差)/4]*1.8 }
REF(CLOSE,1)< REF(CLOSE,2)&&REF(CLOSE,2)< REF(CLOSE,3)&&REF(CLOSE,3)<
REF(CLOSE,4)&&CLOSE >A,BPK;{連續(xù)四個周期的收盤價小于前一周期的收盤價并且當前周
期的收盤價大于A時,發(fā)出買平并且買開(反手)交易指令}
REF(CLOSE,1)>REF(CLOSE,2)&&REF(CLOSE,2) >REF(CLOSE,3)&&REF(CLOSE,3)>REF(CLOSE,
4)&&CLOSE<=A,SPK;{連續(xù)四個周期的收盤價大于前一周期的收盤價并且當前周期的收盤價
小于等于A時,發(fā)出賣平并且賣開(反手)交易指令}{{}內為文字說明,編寫模型時不用寫
出}
5、如何編制價差類型的交易模型?
MA5:=MA(CLOSE,5);{5個周期收盤價的簡單移動平均}
MA10:=MA(CLOSE,10);{10個周期收盤價的簡單移動平均}
CROSS(MA10,MA5)||(CLOSE-MA5)>8,SK;{10周期均線上穿5周期均線或者收盤價與5周期均線
的差值大于8時,發(fā)出賣出開倉交易指令}
(MA5-CLOSE)>6,BP;{5周期均線與收盤價的差值大于6時,發(fā)出買入平倉交易指令}
CROSS(MA5,MA10)||(MA5-CLOSE)>8,BK;{5周期均線上穿10周期均線或者收盤價與5周期均線
的差值大于8時,發(fā)出買入開倉交易指令}
(CLOSE-MA5)>6,SP;{收盤價與5周期均線的差值大于6時,發(fā)出賣出平倉交易指令}{{}內為
文字說明,編寫模型時不用寫出}
6、如何編制簡單價差類型的套利模型?
CROSS(300,CLOSE),BKSK; {CLOSE為兩個品種的價差。當價差小于300時,買入開倉前一品
種,賣出開倉后一品種}
CROSS(CLOSE,500),SPBP;{當價差大于500時,賣出平倉前一品種,買入平倉后一品種}
CROSS(CLOSE,600),SKBK;{當價差大于600時,賣出開倉前一品種,買入開倉后一品種}
CROSS(400,CLOSE),BPSP;{當價差小于400時,買入平倉前一品種,賣出平倉后一品種}
{{}內為文字說明,編寫模型時不用寫出}
7、如何編制組合類型的套利模型?
RSV:=(CLOSE-LLV(LOW,N))/(HHV(HIGH,N)-LLV(LOW,N))*100;
K:=SMA(RSV,M1,1);
D:=SMA(K,M2,1);
J:=3*K-2*D;{以上為KDJ公式}
CLOSE<300&&CROSS(K,D),BKSK;{當價差小于300并且K上穿D時,買入開倉前一品種,賣出開
倉后一品種}
CROSS(CLOSE,500)||CROSS(D,K),SPBP;{當價差上穿500或者D上穿K時,賣出平倉前一品種
,買入平倉后一品種}
CLOSE>600&&CROSS(D,K),SKBK;{當價差大于600并且D上穿K時,賣出開倉前一品種,買入開
倉后一品種}
CROSS(400,CLOSE)||CROSS(K,D),BPSP;{當價差下穿400或者K上穿D時,買入平倉前一品種
,賣出平倉后一品種}{{}內為文字說明,編寫模型時不用寫出}
|
|
|
|
操作符
|
意義
|
例
|
|
+
|
加法
|
CLOSE+OPEN 表示求收盤價及開盤價的和。 CLOSE-OPEN 表示求收盤價及開盤價的差。 CLOSE*OPEN 表示求收盤價及開盤價的積。 CLOSE/OPEN 表示求收盤價及開盤價的商。
|
|
-
|
減法
|
|
*
|
乘法
|
|
/
|
除法
|
|
&&
|
與(并且)
|
CLOSE>OPEN 表示判斷當前周期是否收陽。 CLOSE=OPEN 表示判斷當前周期是否平盤。
|
|
||
|
或(或者)
|
|
>
|
大于
|
|
<
|
小于
|
|
>=
|
大于等于
|
|
<=
|
小于等于
|
|
<>
|
不等于
|
|
=
|
等于操作符
|
|
:=
|
只定義一個局部變量 (這個變量在畫圖時是不畫的)
|
TMP1:=(OPEN+CLOSE)/2; MA(TMP1,10); 上面的公式的第一個語句定義了一個局部變量TMP1,在下面一行中引用了這個局部變量,但是要注意的是這個公式在畫圖的時候只畫了第二條語句所求出的結果。 相反下面這個公式則需要畫出兩條線,第一條是自己定義的均價線,同時顯示了均價的名稱為AVP,第二條線是均價的簡單移動平均線。 AVP:(OPEN+CLOSE)/2; MA(AVP,10);
|
|
:
|
聲明了一個變量,在畫圖時畫出它并且按這個名字顯示。
|
|
|
|
|
1.引用數據
|
AVPRICE
|
引用均價(在盤后對于國內三個期貨交易所指結算價)
|
|
CLOSE
|
引用收盤價(在盤中指最新價)
|
|
HIGH
|
引用最高價
|
|
LOW
|
引用最低價
|
|
OPEN
|
引用開盤價
|
|
OPI
|
引用持倉量
|
|
REF(X,N)
|
引用X在N個周期前的值 例:REF(CLOSE,5);表示引用當前周期前第5個周期的收盤價
|
|
REFX(X,N)
|
引用N個周期后的數據。(N為大于等于1的整數)(未來函數) 例:REFX(CLOSE,5);表示引用自當前周期后第5個周期的收盤價
|
|
SETTLE
|
引用結算價(只有盤后才能引用當日的結算價)
|
|
VOL
|
引用成交量
|
2.金融統(tǒng)計
|
BACKSET(X,N)
|
若X非0,則將當前位置到N周期前的數值設為1。 例:BACKSET(CLOSE>OPEN,3);表示當K線收陽時,自當前位置到3周期前的數值設為1
|
|
BARSLAST(X)
|
求上一次條件成立到當前的周期數。
|
|
COUNT(X,N)
|
表示統(tǒng)計在N周期內滿足X條件的周期數。如果N為0則表示從第一天開始算起。 例:WR:=-100*(HHV(HIGH,N)-CLOSE)/(HHV(HIGH,N)-LLV(LOW,N)); COUNT(WR>80,5);表示統(tǒng)計在5個周期內滿足WR>80的次數
|
|
DMA(X,A)
|
返回X的動態(tài)移動平均,其中A必須介于0及1之間。 計算方法:DMA(N)=DMA(N-1)*(1-A)+X(N)*A 其中DMA(N-1)為第(N-1)天的DMA值
|
|
EMA(X,N)
|
表示求X在N周期內的平滑移動平均。(指數加權) 計算方法:EMA(X,N)=[2*X+(N-1)*EMA(N-1)]/(N+1) 其中EMA(N-1)為第(N-1)天的EMA值
|
|
EMA2(X,N)
|
表示求X在N周期內的加權平均。(線性加權) 計算方法:EMA2(N)=(N*X0+(N-1)*X1+(N-2)*X2+...+1*XN)/(N+(N-1)+(N-2)+...+1),X0表示本周期值,X1表示上一周期值...
|
|
HHV(X,N)
|
得到X在N周期內的最高值,如果N=0,則從第一個有效周期開始算起。 例:HHV(HIGH,13);求13個周期內的最高價的最大值。
|
|
HHVBARS(X,N)
|
得到X在N周期內的最高值位置到當前的周期數。如果N=0,則從第一個有效周期開始算起。 例:HHVBARS(VOL,0); 求歷史成交量最大的周期到當前的周期數
|
|
LLV(X,N)
|
得到X在N周期內的最小值,如果N=0,則從第一個有效周期開始算起。 例:LLV(LOW,25);表示求25個周期內最低價的最小值
|
|
LLVBARS(X,N)
|
得到X在N周期內的最小值的位置到當前的周期數。如果N=0則從第一個有效周期開始算起。 例:LLVBARS(VOL,0); 求歷史成交量最小的周期到當前的周期數
|
|
MA(X,N)
|
求X在N周期內的簡單移動平均。 計算方法:MA=(A1+A2+A3+A4+A5)/5 求A在5個周期內的簡單移動平均
|
|
ZIGZAG(X,P,C)
|
之字轉向(未來函數),當C取1,P為百分比數;當C取0,P為價位差值。 例:ZIGZAG(HIGH,10,1);表示最高價的10%的之字轉向 ZIGZAG(MA(HIGH,34),100,0);表示34個周期內最高價均線的100個價位的之字轉向
|
|
PEAK(X,P,M,C)
|
取得ZIGZAG前M個波峰的值。其中X為數據,P為轉折值(如果C為1的話,這個值為百分比,否則為絕對值),M為大于等于1的整數。(未來函數) 例:PEAK(HIGH,10,1,1);表示最高價的10%的之字轉向的上一個波峰的數值 PEAK(MA(HIGH,34),100,1,0);表示34個周期內最高價均線的100個價位的之字轉向的上一個波峰的數值
|
|
PEAKBARS(X,P,M,C)
|
取得ZIGZAG前M個波峰到當前周期的周期數。(未來函數) 例:PEAKBARS(HIGH,10,1,1);表示最高價的10%的之字轉向的上一個波峰到當前的周期數 PEAKBARS(MA(HIGH,34),100,1,0);表示34個周期內最高價均線的100個價位的之字轉向的上一個波峰到當前的周期數
|
|
TROUGH(X,P,M,C)
|
取得ZIGZAG前M個波谷的值。(未來函數) 例:TROUGH(LOW,10,1,1);表示最低價的10%的之字轉向的上一個波谷的數值 TROUGH (MA(LOW,34),100,1,0);表示34個周期內最低價均線的100個價位的之字轉向的上一個波谷的數值
|
|
TROUGHBARS(X,P,M,C)
|
取得ZIGZAG前M個波谷到當前周期的周期數 (未來函數) TROUGHBARS(LOW,10,1,1);表示最低價的10%的之字轉向的上一個波谷到當前的周期數 TROUGHBARS(MA(LOW,34),100,1,0);表示34個周期內最低價均線的100個價位的之字轉向的上一個波谷到當前的周期數
|
|
SAR(N, Step, Max)
|
得到拋物轉向值。N為計算周期,Step為步長,Max為極值。 例:SAR(17,3,30);表示計算17個周期拋物轉向,步長為3%,極限值為30%
|
|
SMA(X,N,M)
|
得到X在N個周期內的移動平均,M為權重。 計算方法:SMA(N)=SMA(N-1)*(N-M)/N+X(N)*M/N
|
|
SUM(X,N)
|
得到X在N周期內的總和,如果N=0,則從第一個有效周期開始算起。 例: SUM(VOL,10);表示統(tǒng)計10周期內的成交量總和
|
|
SUMBARS(X,A)
|
得到X向前累加直到大于A時的周期數。
|
|
TRMA(X,N)
|
求X在N周期內的三角移動平均。
|
|
TSMA(X,N)
|
求X在N周期內的時間序列移動平均。 計算方法:TSMA(X,N)= FOCAST(X,N)+SLOPE(X,N)
|
3.數理統(tǒng)計
|
AVEDEV(X,N)
|
求X在N周期內的平均絕對偏差。
|
|
DEVSQ(X,N)
|
數據偏差平方和。
|
|
FORCAST(X,N)
|
得到X的N周期線性回歸預測值。 例:FORCAST(CLOSE,5);表示求5周期線性回歸預測
|
|
SLOPE(X,N)
|
得到X在N周期內的線性回歸的斜率。 例:SLOPE(CLOSE,5);表示求5周期線性回歸線的斜率
|
|
STD(X,N)
|
得到X在N周期內的標準差。
|
|
STDP(X,N)
|
得到X在N周期內的總體標準差。
|
|
VAR(X,N)
|
得到X在N周期內的樣本方差。
|
|
VARP(X,N)
|
得到X在N周期內的總體樣本方差。
|
|
數理統(tǒng)計舉例說明:
|
設一個數列,數列中數據的總個數為N,以今天(2005-10-14)五天內的A0605收盤價為例,N就為5。數列的內容為:{2766,2805,2814,2886,2885}。 1、算術平均值MA(CLOSE,5):數據總和除以總個數N。 (2766+2805+2814+2886+2885)/5=2831.20??梢杂霉?span lang=EN-US>MA(CLOSE,5),從今天的值上看出。 2、偏差:每個數據,減去算術平均值的結果。 2766-2831.20=-65.2, 2805-2831.20=-26.2, 2814-2831.20=-17.2, 2886-2831.20=54.8, 2885-2831.20=53.8, 各偏差相加,應該是等于0的。 3、平均絕對偏差AVEDEV(X,N):將偏差的絕對值相加,除以總個數N。 (65.2+26.2+17.2+54.8+53.8)/5=43.44 4、數據偏差平方和DEVSQ(X,N):將偏差的平方相加。 (-65.2)²+ (-26.2)²+ (-17.2)²+ (54.8)²+ (53.8)²=11130.80 5、總體樣本方差VARP(X,N):將偏差的平方相加,總和除以總個數N。用公式可以這樣算: (-65.2)²+ (-26.2)²+ (-17.2)²+ (54.8)²+ (53.8)²/5=2226.16 6、樣本方差VAR(X,N):是總體方差的N/(N-1)倍。 2226.16*5/(5-1)=2782.70 估算樣本方差,總比總體樣本方差大一點,當N夠大時,兩者趨于相等。 7、總體標準差STDP(X,N):方差的開方。 [(-65.2)²+ (-26.2)²+ (-17.2)²+ (54.8)²+ (53.8)²/5]½=47.18 8、標準差STD(X,N):估算樣本方差的開方。 [2226.16*5/(5-1)]½=52.75 同樣,估算標準差也比總體標準差大一點,當N夠大時,兩者趨于相等。
|
4.邏輯判斷
|
BETWEEN(A,B,C)
|
判斷A是否位于B及C之間,如果A介于B,C之間則返回1,否則返回0。 例:BETWEEN(CLOSE,MA5,MA40); 表示收盤價介于5日均線與40日均線之間
|
|
CROSS(X,Y)
|
如果X上穿Y則返回1(yes),否則返回0(no)。 例:CROSS(CLOSE,MA(CLOSE,5));表示收盤線從下方向上穿過5日均線
|
|
EXIST(COND,N)
|
判斷過去N個周期內是否有滿足條件COND。 例:EXIST(CLOSE>REF(HIGH,1),10);表示10個周期中是否存在收盤價大于前一個周期的最高價
|
|
EVERY(COND,N)
|
判斷過去N個周期內是否一直滿足條件COND。 例:EVERY(CLOSE>OPEN,5);表示5個周期內一直是陽線
|
|
LAST(COND,N1,N2)
|
判斷過去N1到N2周期內是否一直滿足條件COND。 例:LAST(CLOSE>OPEN,10,5);表示從過去第10個周期到第5個周期內一直是陽線
|
|
LONGCROSS(A,B,N)
|
如果A在前N個周期內都小于B,本周期上穿B,則返回1。否則返回0。 例:LONGCROSS(CLOSE,MA(CLOSE,10),20);表示收盤線在10日均線之下持續(xù)20周期后從下向上穿過10日均線
|
|
NOFILTER
|
信號過濾函數。 公式后加“NOFILTER;”是指不需要過濾,出現(xiàn)任何交易指令都會執(zhí)行。公式后不加“NOFILTER;”是指當連續(xù)出現(xiàn)同方向的交易指令時,系統(tǒng)只顯示出第一個交易指令,其他交易指令自動被過濾。
|
|
IF(C,A,B)
|
如果C成立返回A,否則返回B。 例:IF(CLOSE>REF(CLOSE,1),1,0);表示若今日收盤價高于前一日收盤價,則返回1,否則返回0
|
|
ISDOWN
|
如果該周期收陰則返回1,否則返回0。
|
|
ISEQUAL
|
如果該周期平盤則返回1,否則返回0。
|
|
ISUP
|
如果該周期收陽則返回1,否則返回0。
|
|
ISLASTBAR
|
取得當前周期是否為最后一根K線。最后一個周期返回值為1,其余為0。
|
|
VALUEWHEN(COND,DATA)
|
當條件COND滿足時,取當時的DATA的值,否則取得VALUEWHEN的前一個值。 例:VALUEWHEN(HIGH>REF(HIGH,5),HIGH);表示當前最高價大于前五個周期最高價的最大值時返回當前最高價
|
5.數學運算
|
ABS(X)
|
求X的絕對值。 例:ABS(CLOISE-10) 返回收盤價和10的價差的絕對值
|
|
ACOS(X)
|
求X的反余弦值。
|
|
ASIN(X)
|
求X的反正弦值。
|
|
ATAN(X)
|
求X的反正切值。
|
|
CEILING(X)
|
向上舍入。返回沿X數值增大方向最接近的整數。
|
|
COS(X)
|
返回X的余弦值。
|
|
EXP(X)
|
表示求e的X次冪。
|
|
FLOOR(X)
|
向下舍入。返回沿X數值減小方向最接近的整數。
|
|
INTPART(X)
|
取X的整數部分。INTPART(X)返回沿X絕對值減小方向最接近的整數。
|
|
LN(X)
|
得到X的自然對數。以e為底的對數。 例:LN(OPEN);求開盤價的自然對數。
|
|
LOG(X)
|
得到X的常用對數。取得X的以10為底的對數。 例:LOG(OPEN);求開盤價的以10為底的對數。
|
|
MAX(A,B)
|
求A,B中的較大者。 例:MAX(CLOSE-OPEN,0);表示若收盤價大于開盤價返回它們的差值,否則返回0
|
|
MIN(A,B)
|
求A,B中的較小者。 例:MIN(OPEN,CLOSE);返回開盤價和收盤價中的較小值
|
|
MOD(A,B)
|
返回A對B得到模。 例:MOD(CLOSE,OPEN);收盤價除以開盤價所得余數
|
|
NOT(X)
|
當X為0時返回1,否則返回0。 例:NOT(TIME=0905);表示該周期對應的時間不是9:05AM
|
|
POW(A,B)
|
得到A的B次冪。 例:POW(CLOSE,2);求得收盤價的2次方
|
|
REVERSE(X)
|
取反。 例:REVERSE(LOW);返回-LOW
|
|
SGN(X)
|
得到X的符號,如果X>0則返回1,如果X<0則返回-1,否則返回0。
|
|
SIN(X)
|
得到X的正弦值。
|
|
SQRT(X)
|
得到X的平方根。 例:SQRT(CLOSE);收盤價的平方根
|
|
SQUARE(X)
|
得到X的平方。 例:SQUARE(CLOSE);收盤價的平方
|
|
TAN(X)
|
得到X的正切值。
|
時間函數
|
BARPOS
|
取得當前K線的位置。
|
|
DATE
|
取得當前周期的日期數(700101-341231)。
|
|
DAY
|
取得當前周期的日數(1-31)。
|
|
HOUR
|
取得當前周期的小時數(0-23)。
|
|
MINUTE
|
取得當前周期的分鐘數(0-59)。
|
|
MONTH
|
取得當前周期的月數(1-12)。
|
|
TIME
|
取得當前周期的時間數(0-2359)。
|
|
WEEKDAY
|
取得當前周期的星期數(0-6)。
|
|
YEAR
|
取得當前周期的年數(1970-2034)。
|
7.繪圖
|
DRAWLINE (C1,P1,C2,P2, COLOR)
|
當條件C1及C2均滿足時,從P1畫直線到P2,顏色為COLOR。 例:DRAWLINE(MA18< CLOSE,OPEN,MA5 >CLOSE,CLOSE,COLORCYAN); 表示當收盤價大于18日均線并且小于5日均線時,從開盤價畫青色直線到收盤價。
|
|
DRAWTEXT(C,P,TEXT)
|
表示當條件C滿足時在P上寫TEXT文字。 例:DRAWTEXT(CLOSE< OPEN&&REF(CLOSE,1)< REF(OPEN,1) &&REF(VOL,1)*1.1< VOL,LOW,'注'); 表示連續(xù)兩日收陰并且成交量比前一日至少多10%時,在最低價上寫“注”字。
|
|
DRAWSL(COND,DATA, SLOPE,LEN,EXPAND, COLOR)
|
畫斜線,當條件COND滿足時,從DATA開始以每個周期相差SLOPE個點的斜率畫斜線,劃線長度為LEN個周期,EXPAND為線段的延長方式(0:不延伸;1:向左延伸;2:向右延伸;3:雙向延伸)。 例:DRAWSL(LOW=LLV(LOW,50),LOW,5,3,2,COLORRED); 表示當前最低價等于50周期內的最小值時,從當前最小值開始以每隔5個點的斜率畫長度為3個周期向右延伸的斜線,顏色為紅色
|
|
DRAWNUMBER (COND,DATA,NUMBER,PRECISION,COLOR)
|
畫數字。當條件COND滿足時,在DATA位置寫數字NUMBER(為數組),精度為PRECISION(小數點后有幾位數字)。 例:DRAWNUMBER(CLOSE/OPEN>1.08,HIGH,(CLOSE-OPEN)/OPEN*100,2,COLORRED); 表示當日漲幅大于8%時在最高價位置顯示漲幅(相對開盤價的百分比)。
|
|
FILLRGN (COND,DATA1,DATA2,COLOR)
|
填充區(qū)域,當條件COND滿足時,填充DATA1及DATA2包圍的區(qū)域。 例:FILLRGN(MA5>MA10,MA5,MA10,COLORRED); 表示MA5>MA10時以紅色填充MA5和MA10之間的區(qū)域。
|
|
POLYLINE (COND,DATA,COLOR)
|
畫折線,當條件COND滿足時,連接各個DATA點。 例:POLYLINE(CLOSE>=HHV(CLOSE,100),CLOSE,COLORRED); 表示在收盤價創(chuàng)100天新高點之間畫折線。
|
|
PARTLINE (COND,DATA,COLOR)
|
同POLYLINE。 例:PARTLINE(HIGH>REF(HIGH,1),HIGH,COLORRED); 表示當期最高價大于前期最高價用紅色繪制最高價連線。
|
|
STICKLINE (C,P1,P2,Color,Empty)
|
如果條件C滿足時,從P1到P2畫柱線,顏色為Color,如果Empty不為0,則為空心柱,否則為實心柱。 例:STICKLINE(OPEN-CLOSE>0,OPEN,CLOSE,COLORCYAN,0); 表示當開盤價大于收盤價時,從開盤價到收盤價畫青色的實心柱,即K線陰線的實體部分。
|
|
VERTLINE (COND,COLOR)
|
畫垂直線,當條件COND滿足時,畫垂直線。 例:VERTLINE(HIGH>=HHV(HIGH,30),COLORRED); 表示在價格創(chuàng)30天新高時畫垂直線。
|
|
|
|
|
交易模型中的交易指令如下:
|
圖示
|
指令
|
意義
|
|
|
BK 或 BUY
|
買開指令
|
|
|
BP
|
買平指令
|
|
|
SK
|
賣開指令
|
|
|
SP 或 SELL
|
賣平指令
|
|
|
BPK
|
買平同時等價等量買開指令
|
|
|
SPK
|
賣平同時等價等量賣開指令
|
套利模型中的交易指令如下:
|
圖示
|
指令
|
意義
|
|
|
BKSK
|
甲合約買開;乙合約賣開信號
|
|
|
BPSP
|
甲合約買平;乙合約賣平信號
|
|
|
SKBK
|
甲合約賣開;乙合約買開信號
|
|
|
SPBP
|
甲合約賣平;乙合約買平信號
|
|
請注意,在效果測試使用如下機制:
連續(xù)的開倉指令只使用第一個指令進行開倉,開倉時使用當時的全部資金,連續(xù)的平倉指令,只有第一個有效,平掉當時的全部持倉,其他的平倉指令算做錯誤指令!
編輯平臺的語法
1.關于公式名稱:
公式的名稱不可以和已經存在的公式重復。
2.關于參數:
每個自編公式最多可以定義四個參數,參數的定義如下, 首先是參數名稱,然后是參數的最小值,最大值,最后是參數的默認值。在定義參數時要注意的是參數名稱不可以重復。
3.關于變量名稱:
變量名稱不可以互相重復,不可以和參數名重復,不可以和函數名稱重復。
4.關于公式內容:
公式的每個語句應該以分號結束,包括最后一條語句。在數據公式的時候請您注意一定要使用半角輸入。 在編寫公式的過程中,如果您不記得某個函數的確切寫法,可以選擇插入函數來插入函數。
5.如果您在編寫公式之后,想給這個公式加上注釋,說明之類的東西,可以使用公式說明來輸入。
|