分享

飛狐易經函數公式的編寫

 lee8611 2011-09-24
飛狐易經函數公式的編寫 [轉貼 2010-03-27 00:29:47]   
我頂 字號:

基本函數全是遍歷所有從前到後(從第一根到最後一根)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

    0条评论

    发表

    请遵守用户 评论公约