飞狐易经函数公式的编写

基本函数全是遍历所有从前到后(从第一根到最后一根)K线的,取得每根K线上的时间,就用时间函数了。

  飞狐有独有的自然日、阴阳历、节气、月相、易学相关分析,在时间函数中就有相应的体现。

  day-天,

  weekday-周,

  moonth-月,

  year-年

  lday-农历日,

  lmonth-农历月,

  lyear-农历年

  这些函数所输出的数值,与我们平时使用时是真实对应的,比如DAY返回3,当时就是3号。

小周期K线中使用大周期的时间函数不成问题,反之则不行。比如在分笔成交图中,也可以取得年、月等。

  {阴阳历对照表}

  年:YEAR,LINETHICK0;月:MONTH;日: DAY;

  农历年: LYEAR,LINETHICK0;农历月: LMONTH;农历日: LDAY;

取得当年的节气日

lsolartermdate lsolartermday

取得当年的节气日期。

LSOLARTERMDATE(X) 参数:X为序列变量或常数,格式与DATE同,有效值范围为(700101-1341231),表示19700101-20341231

取得节气后的第几日。LSOLARTERMDAY(X)。参数:X为序列变量或常数,格式与DATE同,有效值范围为(800101-1301231),表示19800101-20301231

如求当年的立春的日期为:

LSOLARTERMDATE(3)

当前周期是前一节气后的第几日:

LSOLARTERMDAY(DATE)

取得日期之间的时间

取得日期之间的时间间隔方便我们判断时间周期

取得日期之间的时间间隔。DATEDIFF(DATE1,DATE2) 参数:DATE1,DATE2为序列变量或常数,格式与DATE同,有效值范围为(800101-1301231),表示19800101-20301231。如果DATE1晚于DATE2,则DATEDIFF函数返回负数

这个函数返回两个自然日之间相隔的天数。

如:

当年立春到当前周期相差的天数:

DATEDIFF(LSOLARTERMDATE(3),DATE)

低点和前一个高点相差的自然日天数:

tj1:=backset(REF(H,2)=HHV(H,5),3);

hd:=tj1>ref(tj1,1);{高点位置}

drawicon(hd,h*1.01,10);

tj2:=backset(REF(l,2)=llv(l,5),3);

ld:=tj2>ref(tj2,1);{低点位置}

drawicon(ld,l*0.99,11);

nn:=datediff(ref(date,barslast(hd)),date);{高低点相差交易日天数}

{nn:=barslast(hd)-barslast(ld)也可如此写}

drawnumber(ld,l*0.98,nn,2),align2;

lsolarterm节气

节气:LSOLARTERM(x) 参数:X为序列,格式与DATE同,有效值范围为(700101-1341231),表示19700101-20341231. 返回(0-24)

 节气 0 1 2 3 4 5 6 7 8

 不在内 小寒 大寒 立春 雨水 惊蛰 春分 清明 谷雨

9 10 11 12 13 14 15 16

立夏 小满 芒种 夏至 小暑 大暑 立秋 处暑

17 18 19 20 21 22 23 24

白露 秋分 寒露 霜降 立冬 小雪 大雪 冬至

例子:

j:=LSOLARTERM(DATE);stickline(j,0,1,0,0);{取自然日坐标}

drawtext(j=1,0,'小寒');drawtext(j=2,0,'大寒');

drawtext(j=3,0,'立春');drawtext(j=4,0,'雨水');

drawtext(j=5,0,'惊蛰');drawtext(j=6,0,'春分');

drawtext(j=7,0,'清明');drawtext(j=8,0,'谷雨');

drawtext(j=9,0,'立夏');drawtext(j=10,0,'小满');

drawtext(j=11,0,'芒种');drawtext(j=12,0,'夏至');

drawtext(j=13,0,'小暑');drawtext(j=14,0,'大暑');

drawtext(j=15,0,'立秋');drawtext(j=16,0,'处暑');

drawtext(j=17,0,'白露');drawtext(j=18,0,'秋分');

drawtext(j=19,0,'寒露');drawtext(j=20,0,'霜降');

drawtext(j=21,0,'立冬');drawtext(j=22,0,'小雪');

drawtext(j=23,0,'大雪');drawtext(j=24,0,'冬至');

时间锁

Var1:=IF(date>1021101,0,1);

RSV:=(CLOSE-LLV(LOW,9))/(HHV(HIGH,9)-LLV(LOW,9))*100;

K:SMA(RSV,3,1)*var1;

D:SMA(K,3,1)*var1;

date函数与干支

date:

日期。返回有效值范围为(700101-1341231),表示19700101-20341231

例:

日干支: DRAWYITEXT(date,20,ganzhi(date,o,2),0);

月干支: DRAWYITEXT(date,19,ganzhi(date,o,1),0);

年干支: DRAWYITEXT(date,18,ganzhi(date,o,0),0);

五行旺衰

以农历正月二月为例

cu:lmonth=1 or lmonth=2;

drawtext(cu>ref(cu,1),0,'土死');

drawtext(cu>ref(cu,1),1,'金囚');

drawtext(cu>ref(cu,1),2,'水休');

drawtext(cu>ref(cu,1),3,'火相');

drawtext(cu>ref(cu,1),4,'木旺');

附函数介绍:

函数:REF(X,N)

参数:X为数组,N为计算周期

返回:返回数组

说明:引用N周期前的X值。

示例:REF(CLOSE,1)

表示上一周期的收盘价,在日线上就是昨收

在图形上显示文字:drawtext

用法:

DRAWTEXT(COND,PRICE,TEXT)

当COND条件满足时,在PRICE位置书写文字TEXT,可用'\n'换行,可ALIGN0-5定义对齐方式。

例如:DRAWTEXT(CLOSE/OPEN>1.08,LOW,'大阳线')

表示当日涨幅大于8%时在最低价位置显示'大阳线'字样。

K线成卦

KGUA(TYPE, N):TYPE取爻次序,为0表示以第一个周期为初爻,当前周期为上爻,不为0则反之

N为所取的周期数,为0取3个周期,不为0表示取6个周期

返回:K线卦象,若N为0,返回八卦代码(1-8),否则返回六十四卦代码(11-88),请参考易卦代码表

示例:KGUA(1, 1)以当前周期为初爻,取6个周期组成的某个六十四卦

升为阳,跌为阴,平盘则相对前收盘(如果也相等?)

反日k线:若改为阳线为阴爻,阴线为阳爻,则可写成 99-KGUA(1,1)

正K象: DRAWYITEXT(date,0,KGUA(1,1),1),coloryellow;{坐标线-1;0;1;}

反K象: DRAWYITEXT(date,1,99-KGUA(1,1),1),colorred;

地支冲害刑

DZGX(DZ1, DZ2):DZ1, DZ2为地支代码的数组或常数,有效值范围为(0-11)

返回:返回地支关系代码,有效值范围为(0-5),依次表示无关(0)、DZ1生DZ2(1)、DZ1克DZ2(2)、相冲(3)、相害(4)、DZ1刑DZ2(5) dzgx 子 丑 寅 卯 辰 巳 午 未 申 酉 戍 亥

0 1 2 3 4 5 6 7 8 9 10 11

无关 生 克 冲 害 刑

例:

子午:dzgx(0,6);{=3子午相冲}

卯巳:dzgx(3,5);{=1卯木生巳火}

辰亥:dzgx(4,11);{=2辰土克亥水}

DZXH(DZ1, DZ2, DZ3, DZ4):DZ1, DZ2, DZ3, DZ4为地支代码的数组或常数,有效值范围为(0-11),若求六合,则DZ3为-1, DZ4除算申子辰化合成水局外为-1

返回:返回合成的五行代码,有效值范围为(-1-4),-1表示无相合关系 dzxh 子 丑 寅 卯 辰 巳 午 未 申 酉 戍 亥

0 1 2 3 4 5 6 7 8 9 10 11

金 水 木 火 土

dzxh(0,1,-1,-1);{返回4,表示子丑合而化土}

dzxh(8,0,4,-1);{返回1,表示申子辰化合成水局}

干支

GANZHI(DATE, TIME, TYPE):取得日期的年、月、日、时的干支代码

DATE为数组或常数,有效值范围( 年月日 800101-1301231)),

表示19800101-20301231

TIME为数组或常数,有效值范围( 时分秒 000000-235959)

TYPE为常数,取0--3,分别表示计算的是0=年、1=月、2=日、3=时的干支

返回六十甲子代码,有效值范围为(0-59), 依次表示甲子、乙丑.....癸亥

ganzhi表示法:

0  1  2  3

年 月 日 时

例:

坐标线:0;1;2;3;}

年干支: DRAWYITEXT(date,1,ganzhi(date,0,0),0);

月干支: DRAWYITEXT(date,2,ganzhi(date,0,1),0);

日干支: DRAWYITEXT(date,3,ganzhi(date,0,2),0);

五行旺相休囚死

取得不同时间的力度(旺相休囚死)对应的五行代码

WXLD( JI, LD):JI为四季数代码,春-0、夏-1、秋-2、冬-3、四季土-4

LD为五行四季力度代码,旺(4)、相(3)、休(2)、囚(1)、死(0);

返回五行代码, 依次表示金-0,水-1,木-2,火-3,土-4.

wxld 4 3 2 1 0

旺 相 休 囚 死

0 春 木 火 水 金 土

1 夏 火 土 木 水 金

2 秋 金 水 土 火 木

3 冬 水 木 金 土 火

4 四季 土 金 火 木 水

例:

土:wxld(0,0);{=4土死}

金:wxld(0,1);{=0金囚}

水:wxld(0,2);{=1水休}

火:wxld(0,3);{=3火相}

木:wxld(0,4);{=2木旺}

干支函数

函数: GANZHI(DATE, TIME, TYPE)

参数: DATE为数组或常数,有效值范围( 年月日 80010100-130123123)

TIME为数组或常数,有效值范围( 时分秒 000000-235959)

TYPE为常数,取0--3,分别表示计算的是年、月、日、时的干支

返回: 返回六十甲子代码,有效值范围为(0-59), 依次表示甲子、乙丑.....癸亥

说明: 取得日期的年、月、日、时的干支代码

示例: GANZHI(DATE, 0,2) 取得该周期的日干支代码

GANZHI(DATE, TIME, 3) 取得该周期的时干支代码

GANZHI(1010901, 0, 0) 取得2001年9月1 日的年干支代码

这样:

MOD(GANZHI(DATE, 0, 2), 10) 即可得到该周期的对应的日天干代码。0-9分别表示甲、乙...癸

MOD(GANZHI(DATE, 0,1), 12) 即可得到该周期的对应的月地支代码。0-11分别表示子、丑...亥

INTPART(GANZHI(DATE, 0,2)/10) 即可得到该周期的旬代码(0-5), 依次表示甲子旬、…、.甲寅旬

(5 - INTPART(GANZHI(DATE, 0,2)/10)) * 2 即可得到该周期的第一个旬空地支代码

(5 - INTPART(GANZHI(DATE, 0,2)/10)) * 2 + 1 即可得到该周期的第二个旬空地支代码

五行

取得天干、地支、八卦对应的五行代码

WUXING(X, TYPE):TYPE为常数,取0--2,分别表示计算的是天干、地支、八卦对应的五行,X为对应的代码,数组或常数

返回五行代码,有效值范围为(0-4), 依次表示金水木火土

wuxing

0    1  2

天干 地支 八卦

0     1    2   3  4

金   水    木  火 土

例:

drawyitext(date,1,ganzhi(date,0,2),0);

a:=wuxing(mod(ganzhi(date,0,2),12),1);

{取得日地支对应的五行代码}

drawtext(a=0,0,'金'),colorwhite;

drawtext(a=1,0,'水') colorgray;

drawtext(a=2,0,'木') colorgreen;

drawtext(a=3,0,'火') colorred;

drawtext(a=4,0,'土') coloryellow;

.

五行生克制化

取得五行相生相克反克的关系。WXGX(WX1, WX2):WX1,WX2为五行代码的数组或常数,有效值范围为(0-4), 依次表示金水木火土

返回五行生克关系代码,有效值范围为(0-3),依次表示WX1无关WX2、WX1生WX2、WX1克X2、WX1反克WX2

五行序数的相生次序:0-1-2-3-4-0

五行序数的相克次序:0-2-4-1-3-0

五行序数的反克次序:0-3-1-4-2-0

wxgx 0   1   2  3

无关 生  克  反克

drawyitext(date,1,ganzhi(date,0,2),0);{日干支}

a:=wuxing(mod(ganzhi(date,0,2),12),1);{取得日地支对应的五行代码}

b:=WXGX(0,a);

drawtext(b=0,2,'金旺');

drawtext(b=1,2,'金生水');

drawtext(b=2,2,'金克木');

drawtext(b=3,2,'火克金');

五行旺衰

取得五行旺衰十二阶段(原生旺死绝)对应的地支代码

WXSS(WX, SS),参数:WX为五行代码的数组或常数,SS五行盛衰十二阶段

返回:地支代码,0-11分别表示子、丑...亥 wxss 子 丑 寅 卯 辰 巳 午 未 申 酉 戍 亥

0 1 2 3 4 5 6 7 8 9 10 11

绝 胎 养 长生 沐浴 冠带 临官 帝旺 衰 病 死 墓

0 金 寅 卯 辰 巳 午 未 申 酉 戍 亥 子 丑

1 水 巳 午 未 申 酉 戍 亥 子 丑 寅 卯 辰

2 木 申 酉 戍 亥 子 丑 寅 卯 辰 巳 午 未

3 火 亥 子 丑 寅 卯 辰 巳 午 未 申 酉 戍

4 土 巳 午 未 申 酉 戍 亥 子 丑 寅 卯 辰

例:

金:wxss(0,0);{=2金绝于寅}

水:wxss(1,0);{=5水绝于巳}

木:wxss(2,0);{=8木绝于申}

火:wxss(3,0);{=11火绝于亥}

土:wxss(4,0);{=5土绝于巳}

当前有所谓的传统与新派,大家可以根据各自的修改。

旬空

:=INTPART(GANZHI(DATE,0,2)/10);

{得到该周期的旬代码(0-5)依次表示甲子旬…甲寅旬}

a:=(5-s)*2;{得到该周期的第一个旬空地支代码}

b:=a+1;{得到该周期的第二个旬空地支代码}

地支旬空: DRAWYITEXT(lday,15,a,0)

证券代码数,返回证券代码数zqdmnum zqdmsum numbersum

zqdmnum zqdmsum numbersum

证券代码数,返回证券代码数,

如0001返回1,600001返回600001,指数返回1

证券代码数和,返回证券代码各位数字之和,

如0001返回1,600001返回7,指数返回3

数字之和,NUMBERSUM(NUMBER, N)

参数:NUMBER为待计算的数据,N表示小数点后取几位

返回:各位数字之和

示例:NUMBERSUM(CLOSE, 2) 则收盘价为9.53时返回17

证券代码数:ZQDMNUM;

证券代码数和:ZQDMSUM;

收盘价:c;

收盘价和(2位):NUMBERSUM(c,2)

(0)

相关推荐