软件名称:[B]经典白糖程序化交易模型源码[文华财经公式][/B]
软件类型:国产软件
运行环境:Win2000/WinXP/Win2003/WinVista
软件语言:简体中文
授权方式:共享软件
软件大小:0 Bytes
官方主页:Home Page
更新时间:2013-03-04 06:41:39
软件简介:
//该模型模型不错,主要是一些高手提供出来给大家学习
// 文华财经免FEI白糖
BA:= BARPOS; // 当前K线位置(从1开始)
VOL1:= IFELSE(LLV(VOL,0)=0, 1, INTPART(VOL*100)); // 从头到尾遍历。只要出现 成交量=0时,返回1。否则,返回VOL*100取整。
HC:=LLV(IFELSE(H-C=0, 1000, H-C), 0); // 从头到尾遍历,寻找最小的 最高价与 收盘价的距离。默认当最高价= 最低价时,返回1000。
CL:=LLV(IFELSE(C-L=0, 1000, ABS(C-L)), 0); // 从头到尾遍历,寻找最小的收盘价与最低价距离。
CO:=LLV(IFELSE(C-O=0, 1000, ABS(C-O)), 0); // 从头到尾遍历,寻找最小的收盘价与 开盘价距离。
ZXBD:=MIN(HC, MIN(CL, CO)); // 找当前周期之前的最小的HC, CL, CO。
DFX:= REF(L, 2)=LLV(L,15) && REF(L,1)>REF(L,2) && L>REF(L,1) && REF(L,2)<=REF(L,3); // 是否上涨起点。原:“L>REF(L, 2)” 【参数】
GFX:= REF(H, 2)=HHV(H,9) && REF(H,1)<REF(H,2) && H<REF(H,1) && REF(H,2)>=REF(H,3); // 是否下跌起点。 原:“H<REF(H, 2)” 【参数】
DFXI:= VALUEWHEN(DFX, BA); // 取上涨起点的K线位置。若是上涨起点,则返回K线位置。反之返回前一个上涨起点的K线位置。
GFXI:= VALUEWHEN(GFX, BA); // 跟上面类似,取下跌起点K线位置。
DDP1:= VALUEWHEN(DFX, REF(L, 2)); // 取上涨起点的最低值。
GDP1:= VALUEWHEN(GFX, REF(H, 2)); // 取下跌起点的最高值。
DDP:= VALUEWHEN(DFX && DDP1<>REF(DDP1, 1), DDP1); // 取当前的上涨起点最低值。实际等于DDP1。
GDP:= VALUEWHEN(GFX && GDP1<>REF(GDP1, 1), GDP1); // 取当前的下跌起点最高值。实际等于GDP1。
DFX1I:= VALUEWHEN(DFX, REF(DFXI, 1)); // 取上涨起点的前一个上涨起点的K线位置。
DFX1P:= VALUEWHEN(DFX, REF(DDP, BA-DFX1I)); // 取上涨起点的前一个上涨起点的K线位置的最低值。原"DFX1P:= VALUEWHEN(DFX, REF(DDP, BA-DFX1I+1));"。
GFX1I:= VALUEWHEN(GFX, REF(GFXI, 1)); // 取下跌起点的前一个下跌起点的K线位置。
GFX1P:= VALUEWHEN(GFX, REF(GDP,BA-GFX1I)); // 取下跌起点的前一下跌起点的K线位置的最高值。原"GFX1P:= VALUEWHEN(GFX, REF(GDP,BA-GFX1I+1));"。
DFXP:= VALUEWHEN(DFX && DDP<>REF(DDP,1), MIN(DDP, MIN(DFX1P, REF(DDP, 1)))); // 取当前上涨起点最低值、前一个上涨起点值、上一个周期最低值中的最低值。
GFXP:= VALUEWHEN(GFX && GDP<>REF(GDP,1), MAX(GDP, MAX(GFX1P, REF(GDP, 1)))); // 取当前下跌起点最高值、前一个下跌起点值、上一个周期最高值中的最高值。
// ---------------------------------------抛物转向------------------------------------------
SA:= SAR(4, 0.02, 0.2); // 抛物转向值 【参数】
DZZ:= SA>0 && REF(SA, 1)<=0; // 抛物转向值是否上涨启动。原"SA>0 && NOT(REF(SA,1)>0) || BA=0"。
GZZ:= SA<0 && REF(SA, 1)>=0; // 抛物转向值是否下跌启动。原"SA<0 && NOT(REF(SA,1)<0) || BA=0"。
DZZI:= VALUEWHEN(DZZ, BA); // 返回抛物转向值上涨的K线位置。
GZZI:= VALUEWHEN(GZZ, BA); // 返回抛物转向值下跌的K线位置。
DZZ0I:= IFELSE(
NOT(
VALUEWHEN(
DFX && REF(SA, 2)<0 && REF(L, 2)=LLV(L, BA-GZZI), // 原"REF(L, 2)=LLV(L, BA-GZZI+1)"
BA-2)>=0
),
0,
VALUEWHEN(
(DFX && REF(DZZ, 2)=1)
|| (DFX && REF(SA, 2)<0 && REF(L, 2)=LLV(L, BA-GZZI)), // 原"REF(L, 2)=LLV(L, BA-GZZI+1)"
BA-2)
); // 确认DFXI-2位置上是否是最低点,找DFX的最低点。是:返回DFXI-2。否:返回上一个DZZ0I。
GZZ0I:= IFELSE(
NOT(
VALUEWHEN(
GFX && REF(SA, 2)>0 && REF(H, 2)=HHV(H, BA-DZZI+1), // 原"REF(H, 2)=HHV(H, BA-DZZI+1)"
BA-2)>=0),
0,
VALUEWHEN(
(GFX && REF(GZZ, 2)=1)
|| (GFX && REF(SA, 2)>0 && REF(H, 2)=HHV(H, BA-DZZI+1)), // 原"REF(H, 2)=HHV(H, BA-DZZI+1)"
BA-2)
); // 确认GFXI-2位置上是否是最高点,找GFX的最高点。是:返回GFXI-2。否:返回上一个GZZ0I。
DD0I:= VALUEWHEN(DZZ || DZZ0I=0, DZZ0I); // 返回抛物转向上涨启动最低点。落后于DZZ0I。
GD0I:= VALUEWHEN(GZZ || GZZ0I=0, GZZ0I); // 返回抛物转向下跌启动最高点。落后于GZZ0I。
DZZ0P:= VALUEWHEN(DZZ && DZZI-GZZI>3, LLV(L, BA-GZZ0I)); // 抛物转向上涨启动对应的最低点。原"LLV(L, BA-GZZ0I+1)"。 【参数】
GZZ0P:= VALUEWHEN(GZZ && GZZI-DZZI>3, HHV(H, BA-DZZ0I)); // 抛物转向下跌启动对应的最高点。原"HHV(H, BA-DZZ0I+1)"。 【参数】
DD0P:= VALUEWHEN(DZZ, DZZ0P); // 等于DZZ0P。实际与DD0I并不是一一对应。
GD0P:= VALUEWHEN(GZZ, GZZ0P); // 等于GZZ0P。实际与GD0I并不是一一对应。
DD0RP:= VALUEWHEN(DZZ, REF(DD0P,1)); // DD0P前一个周期值。
GD0RP:= VALUEWHEN(GZZ, REF(GD0P,1)); // GD0P前一个周期值。
DZP:= VALUEWHEN(DZZ, MIN(DD0P, DD0RP)); // DD0P与DD0RP最小值。一路下来,抛物转向上涨启动的最低点。
GZP:= VALUEWHEN(GZZ, MAX(GD0P, GD0RP)); // GD0P与GD0RP最大值。一路下来,抛物转向下跌启动的最高点。
QSI:= IFELSE(DZZ0I=0, 0, VALUEWHEN(DZZ, REF(DZZ0I, BA-GZZI))); // 上涨启动时,返回前面一个DZZ0I。原"REF(DZZ0I, BA-GZZI+1)"。
GQSI:= IFELSE(GZZ0I=0, 0, VALUEWHEN(GZZ, REF(GZZ0I, BA-DZZI))); // 下跌启动时,返回前面一个GZZ0I。原"REF(GZZ0I, BA-DZZI+1)"。
SZR:= IFELSE(SA>0, 1, 0); // 是否在上涨。是:1;否:0。
XDR:= IFELSE(SA<0, 1, 0); // 是否在下跌。是:1;否:0。
XDTS2:= VALUEWHEN(DZZ && SUM(XDR, DZZI-GZZI+1) > 3, SUM(XDR, DZZI-GZZI+1)); // 抛物转向上涨启动 && 前面下跌超过3个单位时,统计前面下跌的周期。【参数】
SZTS2:= VALUEWHEN(GZZ && SUM(SZR, GZZI-DZZI+1) > 3, SUM(SZR, GZZI-DZZI+1)); // 抛物转向下跌启动 && 前面上涨超过3个单位时,统计前面上涨的周期。【参数】
XDTS2I:= VALUEWHEN(DZZ && SUM(XDR, DZZI-GZZI+1) > 3, BA); // 满足XDTS2条件的上涨起点位置。
SZTS2I:= VALUEWHEN(GZZ && SUM(SZR, GZZI-DZZI+1) > 3, BA); // 满足SZTS2条件的下跌起点位置。
XDTS1:= VALUEWHEN(DZZ && SUM(SZR, DZZI-REF(GZZI, BA-REF(DZZI, 2))+1) < 4, DZZI-REF(GZZI, BA-REF(DZZI, 2))); // 上涨启动 && 至前2个上涨周期的上涨小于4个单位时,返回这个时间跨度。【参数】
XDTS1I:= VALUEWHEN(DZZ && SUM(SZR, DZZI-REF(GZZI, BA-REF(DZZI, 2))+1) < 4, BA); // XDTS1的位置。 【参数】
XDTS:= IFELSE(DZZ && SUM(SZR, DZZI-REF(GZZI, BA-REF(DZZI, 2))+1) < 4, XDTS1, XDTS2); // 上涨启动 && 至前2个上涨周期的上涨小于4个单位时,返回XSDTS1。否则返回XDTS2。 【参数】
SZTS1:= VALUEWHEN(GZZ && SUM(XDR, GZZI-REF(DZZI, BA-REF(GZZI, 2))+1) < 4, GZZI-REF(DZZI, BA-REF(GZZI, 2))); // 下跌启动 && 至前2个下跌周期的下跌小于4个单位时,返回这个时间跨度。【参数】
SZTS1I:= VALUEWHEN(GZZ && SUM(XDR, GZZI-REF(DZZI, BA-REF(GZZI, 2))+1) < 4, BA); // SZTS1的位置。 【参数】
SZTS:= IFELSE(GZZ && SUM(XDR, GZZI-REF(DZZI, BA-REF(GZZI, 2))+1) < 4, SZTS1, SZTS2); // 下跌启动 && 至前2个上涨周期的上涨小于4个单位时,返回SZTS1。否则返回SZTS2。 【参数】
// DZZ0I是在BA前2个单位,个人认为此判断条件不会成立(除了第一根K线外)。TODO: 不理解。
DINI:= IFELSE(BA=DZZ0I || BA-DZZ0I=1, SUM(L*VOL1, BA-QSI+1) / SUM(VOL1, BA-QSI+1) , SUM(L*VOL1, BA-DZZ0I+1) / SUM(VOL1, BA-DZZ0I+1));
GINI:= IFELSE(BA=GZZ0I || BA-GZZ0I=1, SUM(H*VOL1, BA-GQSI+1) / SUM(VOL1, BA-GQSI+1), SUM(H*VOL1, BA-GZZ0I+1) / SUM(VOL1, BA-GZZ0I+1));
DDT0:= DFX && (REF(C, 2)<REF(DINI, 2) || REF(C, 3)<REF(DINI, 3));
DDT0I:= VALUEWHEN(DDT0, DZZ0I);
DDT01I:= VALUEWHEN(DDT0, REF(DDT0I, 1));
DINI0:= IFELSE(BA=DDT0I || BA-DDT0I=1, SUM(L*VOL1, BA-DDT01I+1) / SUM(VOL1, BA-DDT01I+1), SUM(L*VOL1, BA-DDT0I+1) / SUM(VOL1, BA-DDT0I+1));
DDT00:= (DZZ && SZTS<=XDTS && DZZI-GZZI>3);
DDT00I:= IFELSE(NOT(DDT00), 0, VALUEWHEN(DDT00, DD0I));
DZ00I:= VALUEWHEN(DFX &&am
[url=http://www.70822.com/soft/sort013/sort049/down-59550.html]经典白糖程序化交易模型源码[文华财经公式][/url]