St: =ABS((CLOSE-OPEN)/OPEN)/SQRT(VOL)*100000; //计算St因子
I: TODAYBAR;
VARIABLE:STI[240]=0; //STI数组用来储存每一周期的St因子,下同
VARIABLE:VI[240]=0;
VARIABLE:CI[240]=0;
VARIABLE:VWAPsmart=0; //初始化聪明钱成交量加权平均价VWAPsmart
VARIABLE:VWAPall=0; //初始化所有交易成交量加权平均价VWAPall
VARIABLE:SUMQ=0;
STI[I]:=St; //记录当前K线的St
VI[I]:=VOL; //记录当前K线的成交量
CI[I]:=CLOSE; //记录当前K线的收盘价
DAYCOUNT: STKINDI(\'\',\'DAYROUNCOUNT.NOWDAY\',2,6,0); //DAYCOUNT标记当前为第几个交易日,每10个交易日循环一次
IF I=240 THEN BEGIN
FOR J=1 TO I DO
BEGIN
COUN[J]: =HOD2(STI,240,STI[J]); //计算第J根K线的St在当前日的St中的排序,赋予COUN[J]
IF COUN[J]<0.2*I THEN BEGIN
VWAPsmart:= VWAPsmart+CI[J]*VI[J]; //计算St最大的前20%根K线的成交量加权平均价
A: VWAPsmart;
END
VWAPall :=VWAPall+CI[J]*VI[J]; //计算所有SK线的成交量加权平均价
B: VWAPall;
END
Q: VWAPsmart/VWAPall; //当日的Q因子
VWAPsmart:=0; //每日末重新清0
VWAPall:=0; //每日末重新清0
IF DAYCOUNT > 0 THEN BEGIN
SUMQ:=SUMQ+Q; //前九个交易日的Q逐日累加,记为SUMQ
END
IF DAYCOUNT=0 THEN
BEGIN
SmartQ:SUMQ+Q;
SUMQ:=0; //第十个交易日SUMQ重新清0
END
END
//第三个函数TEST,做回测的函数。周期:1分钟线,交易时间坐标
I: TODAYBAR;
DAYCOUNT: STKINDI(\'\',\'DAYROUNCOUNT.NOWDAY\',0,6,0);
IF I=240 AND DAYCOUNT=0 THEN
BEGIN
SELL(\'\',0,THISCLOSE);
END
IF I=240 AND DAYCOUNT=0 THEN
BEGIN
BUY(SELFDATAS(\'SmartMoney\') < 21,1000,THISCLOSE);
END
自定义数据排序设置