請問 bug 在那裡呀?
在下嘗試 從2000年到今天為止, 所有的結算日, 寫一指標, 在日K線上標出來,結算日的函數是從 multicharts官網下載, 異常結算日(遇颱風或春節長假等)有修正.
結果全部正常, 唯有 2010年6月17日沒有標出來, 請問 bug 在那裡? 謝謝!
函數名稱: _closedate程式碼如下:
---------------------------------------------------------
var: pMon("");
var: pVar1(0);
pMon = MidStr(NumToStr(date,0),1,IFF(date < 1000101,4,5));
VALUE1 = StrToNum(pMon + "01");
VALUE2 = 3-DayOfWeek(VALUE1);
if VALUE2 < 0 then begin
VALUE2 = VALUE2 + 7;
end;
_CloseDate = StrToNum(pMon)*100 + (VALUE2 + 15);
pVar1 = StrToNum(pMon)*100 + (VALUE2 + 15);
switch pVar1 begin
case 990217:
_CloseDate = 990220;
case 1021016:
_CloseDate = 1021017;
case 1030115:
_CloseDate = 1030116;
case 1030521:
_CloseDate = 1030522;
case 1030618:
_CloseDate = 1030620;
case 1030917:
_CloseDate = 1030918;
case 1031015:
_CloseDate = 1031016;
case 1040121:
_CloseDate = 1040127;
case 1040721:
_CloseDate = 1040722;
case 1070221:
_CloseDate = 1070226;
case 1100217:
_CloseDate = 1100222;
default:
_CloseDate = pVar1;
end;-------------------------------------------------------
指標程式碼:
-------------------------------------------------------
var:NumberOfText(0);
ifdate= _closedate then begin
ARW_new(date, time, low, false);
NumberOfText=NumberOfText+1;
arw_setstyle(NumberOfText,14);
arw_setsize(NumberOfText,20);
arw_setcolor(NumberOfText,yellow);
arw_settextbgcolor(NumberOfText,Blue);
arw_settextcolor(NumberOfText,White);
arw_settext(NumberOfText, MidStr(NumToStr(_closedate,0),2,6));
end;
----------------------------------------------------------
本帖最後由 雙巴神 於 12-10-28 12:15 編輯
那是錯的
裡面沒有0617這個日期~
_CloseDate = 1100222;
default:
他就只"人工"加到20100222
後面你要手動去補上
後面還有幾個日期要補
你仔細看到程式寫的邏輯,這是大錯特錯的
先視"正常結算日"為結算日
再將"非正常結算日"視為特殊函數
實際上不是這樣子來決定結算日的
如果所有結算日都能用"函數"決定出來,我服了他
你知道真正答案是什麼嗎?
20100616 端午節 {:4_170:} 我記得很清楚,那天我還出來上班....
解決方法:那個函數可以丟了,我建議是用寫死日期的
不要以為想用函數解決結算日的問題,同理可證颱風天是"預定"的結算日時也是一樣(最近的日期好像有一個喔)
官網提供的函數...嗯...我自己寫好了
我只能說那個函數的寫法不是正確的
自己設一個清單列表比較快
雙巴神 發表於 12-10-28 10:53 static/image/common/back.gif
那是錯的
裡面沒有0617這個日期~
謝謝雙大回覆。
我現在不在電腦前,印象中,有20100617那根K棒,
但沒標示出來。
不過,全部結算日共一百多天而已,
用列舉的,不用函數,應是很好的主意。
謝謝!
雙巴神 發表於 12-10-28 10:53 static/image/common/back.gif
那是錯的
裡面沒有0617這個日期~
http://www.taifex.com.tw/chinese/5/FutIndxFSP.asp
交易所有2010•6•17
這天的結算資料,
那天應有上班。
本帖最後由 雙巴神 於 12-10-28 12:11 編輯
googleandy 發表於 12-10-28 11:46 static/image/common/back.gif
http://www.taifex.com.tw/chinese/5/FutIndxFSP.asp
交易所有2010•6•17
裡面沒有0617這個日期~
我指的是官網的程式裡面沒有標0617,不是指歷史資料SORRY沒說清楚
20100617當然有開市
case 990217:
_CloseDate = 990220;
case 1021016:
_CloseDate = 1021017;
case 1030115:
_CloseDate = 1030116;
case 1030521:
_CloseDate = 1030522;
case 1030618:
_CloseDate = 1030620;
case 1030917:
_CloseDate = 1030918;
case 1031015:
_CloseDate = 1031016;
case 1040121:
_CloseDate = 1040127;
case 1040721:
_CloseDate = 1040722;
case 1070221:
_CloseDate = 1070226;
case 1100217:
_CloseDate = 1100222;
沒有人可以預知未來那天有放國定假日,也不知那個結算日會碰到颱風假
正常結算日可以用算的,但是特殊結算日就必需自已去告知電腦
如果有人有更好的方式,麻煩告知~
googleandy 發表於 12-10-28 11:34 static/image/common/back.gif
謝謝雙大回覆。
我現在不在電腦前,印象中,有20100617那根K棒,
全都結算日都用人工填,會比只填特殊結算日來的好嗎?
雙巴神 發表於 12-10-28 10:53 static/image/common/back.gif
那是錯的
裡面沒有0617這個日期~
請問巴大手邊有台指期10年來每個月的結算日期嗎?
小弟也想一個一個加在程式中, 無奈網路上好像找不到完整的日期資料
folkchen 發表於 12-10-28 12:10 static/image/common/back.gif
全都結算日都用人工填,會比只填特殊結算日來的好嗎?
我不知咧,我才學MC power language 兩個月。
所以才請教各位前輩。
用列舉的不知會不會影響速度。
bacardi 發表於 12-10-28 12:55 static/image/common/back.gif
請問巴大手邊有台指期10年來每個月的結算日期嗎?
小弟也想一個一個加在程式中, 無奈網路上好像找不到完 ...
期交所就有了。
資料最完整。
googleandy 發表於 12-10-28 12:59 static/image/common/back.gif
期交所就有了。
資料最完整。
原來andy大上面期交所的連結就有了 {:5_252:}
真歹勢, 感謝andy大
我剛剛去查了一下官網上的特殊結算日有不少是錯的
特殊結算日應該只有以下幾個才對
switch pVar1 begin
case 990217: _CloseDate = 990220;
case 1040121: _CloseDate = 1040127;
case 1070221: _CloseDate = 1070226;
case 1100217: _CloseDate = 1100222;
case 1100616: _CloseDate = 1100617;
default: _CloseDate = pVar1;
end;
folkchen 發表於 12-10-28 13:09 static/image/common/back.gif
我剛剛去查了一下官網上的特殊結算日有不少是錯的
特殊結算日應該只有以下幾個才對
是,
應該把MC官網,交易所官網,逐筆核對。
http://www.multicharts.com.tw/dis/dis_Content.aspx?rd=1&D_ID=2&SN=1697
剛剛去查了一下,原文的第6樓有提到0617的手動加上去
之後就沒有其他特殊結算日了,但他前面的結算日有抓錯,改用我的那五天特殊結算日應該就可以了
因為本文是五月發的
六月有碰到特殊日期
所以要自已手動加進去
end else if pVar1 = 1100616 then begin
_CloseDate = 1100617;
googleandy 發表於 12-10-28 13:20 static/image/common/back.gif
是,
應該把MC官網,交易所官網,逐筆核對。
我是沒有逐筆去對,寫個小程式去比對沒有K棒的結算日就可以了