[分享] 你會寫跨周期調用嗎? [通達信]
-
咨詢內容:
跨周期調用實例詳解
看到好幾個人的帖子寫的跨周期調用都犯了“習慣性”錯誤。例如,在日線公式里,為讀取上一天的收盤價,寫:
ref(c,1)
為讀取上一周的周收盤價,很習慣地就寫成:
c1:= ref(c#week,1) ;
錯了。(但也并非總錯,在某些天可能是對的。*注1)
一般地,ref(x,1)是昨天的x,于是,c1=ref(c#week,1)就是昨天的c#week,所以,如果當前是星期三,c1則是本周星期二所在周的收盤價,星期二和星期三都是本周的,所以應該有相同的周收盤價。(這里假定星期二和星期三都開盤。)
如果你一定要在日線公式里,用c#week來得到上一周的周收盤價c1,應該怎樣寫呢?
可以這樣寫:
A:=barslast(weekofyear != ref(weekofyear,1)); *注2
c1:=ref(c#week, A+1);
當然,此時直接寫
c1:=ref(c,A+1); *注3
也行。
正確的跨周期調用的寫法(讀取上周的收盤價、成交量)
1) 建立一個(被調用的)指標公式,例如取名為“zuotian”,其內容是:
{zuotian}
c1:ref(c,1);
v1:ref(v,1);
2) 在主公式里
為了讀取上一周的收盤價,寫
c1:=zuotian.c1#week; {接收變量名任意,并非一定取名c1}
為了讀取上一周的成交量,寫
v1:=zuotian.v1#week;
為了讀取上一月的收盤價,寫
c1:=zuotian.c1#month;
為了讀取上一月的成交量,寫
v1:=zuotian.v1#month;
為什么要這樣? 現以在日線公式里執行 c1:=zuotian.c1#week 為例說明:
按通達信的語法,
D1:=zuotian.c1;
是調用指標公式zuotian,令它在(本股票的)相同的周期(此時是日線)下執行,并把它在當前日K線上的輸出C1賦值給本公式的D1變量。即D1將是昨天的收盤價, 因為公式zuotian在日周期下執行,輸出的c1=ref(c,1)當然是昨天的close。
現在解釋
c1:=zuotian.c1#week;
按通達信語法,該語句的語意是:調用指標公式zuotian,令它在week周期下執行,并把它在(本日K線所對應的)周K線上的輸出c1賦值給本公式的c1變量。
公式zuotian在week周期下執行,輸出在周K線上的c1=ref(c,1)當然是上一周的close。
注: 本日所對應的周/月是指本日所在的周/月。如果在日線中用 #MIN60跨周期調用,本日所對應的小時K線是指本日的最后交易小時即15:00那條60分鐘K線。
如果你愿意,請回答以下問題:
*注1 “但也并非總錯,在某些天可能是對的。” 在哪些天是對的?
*注2 本語句這種寫法也是不全對。你知道在什么情況下它是錯的嗎?
*注3 c1:=ref(c,A+1)為什么對? 為得上周的成交量,寫v1:=ref(v,A+1)對嗎?
本人仔細閱讀了tdxluntan老師的有關跨周期的帖子,現在把心得貼出來,與大家分享。借此對tdxluntan老師表示深謝。
-
通達信技術部:
學習下。
只是這個網頁被太多彈窗及不良提示鏈接了。那些管理或版主們你們被豬了???
-
通達信客服:
本人寫這個帖子花了差不多1個小時,有30個人看過了,只有一個人回帖,太不夠意思了。本人鄭重聲明,以后只幫在此貼回貼的人-- 因為他們可能是性情中人,值得你去交的朋友。沒回帖的人,也許也是性情中人,只是因為他看此貼并沒有收獲才不回。那說明他已經不需要別人幫助了。(根本沒看此貼的人就不得而知了,請勿怪失言。)哈,就這么定了。
-
網友交流:
頂樓主,我正為此煩惱,終于有所明白了
-
網友交流:
c1:zuotian.c1#MIN15;
在日線中c1顯示的是開盤價,在15分鐘圖中c1顯示的是收盤價
我想做一個13:45-14:00的條件預警,不知怎么搞?
有思路,想編寫各種指標公式,程序化交易模型,選股公式,預警公式的朋友
可聯系技術人員 QQ: 1145508240 進行 有償 編寫!(不貴!點擊查看價格!)
相關文章
-
沒有相關內容