跨周期調(diào)用實(shí)例詳解
看到好幾個(gè)人的帖子寫的跨周期調(diào)用都犯了“習(xí)慣性”錯(cuò)誤。例如,在日線公式里,為讀取上一天的收盤價(jià),寫:
ref(c,1)
為讀取上一周的周收盤價(jià),很習(xí)慣地就寫成:
c1:= ref(c#week,1) ;
錯(cuò)了。(但也并非總錯(cuò),在某些天可能是對的。*注1)
一般地,ref(x,1)是昨天的x,于是,c1=ref(c#week,1)就是昨天的c#week,所以,如果當(dāng)前是星期三,c1則是本周星期二所在周的收盤價(jià),星期二和星期三都是本周的,所以應(yīng)該有相同的周收盤價(jià)。(這里假定星期二和星期三都開盤。)
如果你一定要在日線公式里,用c#week來得到上一周的周收盤價(jià)c1,應(yīng)該怎樣寫呢?
可以這樣寫:
A:=barslast(weekofyear != ref(weekofyear,1)); *注2
c1:=ref(c#week, A+1);
當(dāng)然,此時(shí)直接寫
c1:=ref(c,A+1); *注3
也行。
正確的跨周期調(diào)用的寫法(讀取上周的收盤價(jià)、成交量)
1) 建立一個(gè)(被調(diào)用的)指標(biāo)公式,例如取名為“zuotian”,其內(nèi)容是:
{zuotian}
c1:ref(c,1);
v1:ref(v,1);
2) 在主公式里
為了讀取上一周的收盤價(jià),寫
c1:=zuotian.c1#week; {接收變量名任意,并非一定取名c1}
為了讀取上一周的成交量,寫
v1:=zuotian.v1#week;
為了讀取上一月的收盤價(jià),寫
c1:=zuotian.c1#month;
為了讀取上一月的成交量,寫
v1:=zuotian.v1#month;
為什么要這樣? 現(xiàn)以在日線公式里執(zhí)行 c1:=zuotian.c1#week 為例說明:
按通達(dá)信的語法,
D1:=zuotian.c1;
是調(diào)用指標(biāo)公式zuotian,令它在(本股票的)相同的周期(此時(shí)是日線)下執(zhí)行,并把它在當(dāng)前日K線上的輸出C1賦值給本公式的D1變量。即D1將是昨天的收盤價(jià), 因?yàn)楣絲uotian在日周期下執(zhí)行,輸出的c1=ref(c,1)當(dāng)然是昨天的close。
現(xiàn)在解釋
c1:=zuotian.c1#week;
按通達(dá)信語法,該語句的語意是:調(diào)用指標(biāo)公式zuotian,令它在week周期下執(zhí)行,并把它在(本日K線所對應(yīng)的)周K線上的輸出c1賦值給本公式的c1變量。
公式zuotian在week周期下執(zhí)行,輸出在周K線上的c1=ref(c,1)當(dāng)然是上一周的close。
注: 本日所對應(yīng)的周/月是指本日所在的周/月。如果在日線中用 #MIN60跨周期調(diào)用,本日所對應(yīng)的小時(shí)K線是指本日的最后交易小時(shí)即15:00那條60分鐘K線。
如果你愿意,請回答以下問題:
*注1 “但也并非總錯(cuò),在某些天可能是對的。” 在哪些天是對的?
*注2 本語句這種寫法也是不全對。你知道在什么情況下它是錯(cuò)的嗎?
*注3 c1:=ref(c,A+1)為什么對? 為得上周的成交量,寫v1:=ref(v,A+1)對嗎?
本人仔細(xì)閱讀了tdxluntan老師的有關(guān)跨周期的帖子,現(xiàn)在把心得貼出來,與大家分享。借此對tdxluntan老師表示深謝。
學(xué)習(xí)下。
只是這個(gè)網(wǎng)頁被太多彈窗及不良提示鏈接了。那些管理或版主們你們被豬了???