googleandy 發表於 12-10-28 10:32

請問 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 10:53

本帖最後由 雙巴神 於 12-10-28 12:15 編輯

那是錯的

裡面沒有0617這個日期~

_CloseDate = 1100222;   
default:

他就只"人工"加到20100222

後面你要手動去補上

後面還有幾個日期要補

你仔細看到程式寫的邏輯,這是大錯特錯的

先視"正常結算日"為結算日

再將"非正常結算日"視為特殊函數

實際上不是這樣子來決定結算日的
如果所有結算日都能用"函數"決定出來,我服了他

你知道真正答案是什麼嗎?






























20100616 端午節 {:4_170:} 我記得很清楚,那天我還出來上班....

解決方法:那個函數可以丟了,我建議是用寫死日期的
不要以為想用函數解決結算日的問題,同理可證颱風天是"預定"的結算日時也是一樣(最近的日期好像有一個喔)
官網提供的函數...嗯...我自己寫好了
我只能說那個函數的寫法不是正確的   
自己設一個清單列表比較快









googleandy 發表於 12-10-28 11:34

雙巴神 發表於 12-10-28 10:53 static/image/common/back.gif
那是錯的

裡面沒有0617這個日期~


謝謝雙大回覆。

我現在不在電腦前,印象中,有20100617那根K棒,
但沒標示出來。

不過,全部結算日共一百多天而已,
用列舉的,不用函數,應是很好的主意。

謝謝!

googleandy 發表於 12-10-28 11:46

雙巴神 發表於 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:07

本帖最後由 雙巴神 於 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;   



folkchen 發表於 12-10-28 12:09

沒有人可以預知未來那天有放國定假日,也不知那個結算日會碰到颱風假
正常結算日可以用算的,但是特殊結算日就必需自已去告知電腦
如果有人有更好的方式,麻煩告知~

folkchen 發表於 12-10-28 12:10

googleandy 發表於 12-10-28 11:34 static/image/common/back.gif
謝謝雙大回覆。

我現在不在電腦前,印象中,有20100617那根K棒,


全都結算日都用人工填,會比只填特殊結算日來的好嗎?

bacardi 發表於 12-10-28 12:55

雙巴神 發表於 12-10-28 10:53 static/image/common/back.gif
那是錯的

裡面沒有0617這個日期~


請問巴大手邊有台指期10年來每個月的結算日期嗎?
小弟也想一個一個加在程式中, 無奈網路上好像找不到完整的日期資料

googleandy 發表於 12-10-28 12:57

folkchen 發表於 12-10-28 12:10 static/image/common/back.gif
全都結算日都用人工填,會比只填特殊結算日來的好嗎?

我不知咧,我才學MC power language 兩個月。
所以才請教各位前輩。

用列舉的不知會不會影響速度。

googleandy 發表於 12-10-28 12:59

bacardi 發表於 12-10-28 12:55 static/image/common/back.gif
請問巴大手邊有台指期10年來每個月的結算日期嗎?
小弟也想一個一個加在程式中, 無奈網路上好像找不到完 ...

期交所就有了。

資料最完整。

bacardi 發表於 12-10-28 13:02

googleandy 發表於 12-10-28 12:59 static/image/common/back.gif
期交所就有了。

資料最完整。

原來andy大上面期交所的連結就有了 {:5_252:}
真歹勢, 感謝andy大

folkchen 發表於 12-10-28 13:09

我剛剛去查了一下官網上的特殊結算日有不少是錯的
特殊結算日應該只有以下幾個才對

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;

googleandy 發表於 12-10-28 13:20

folkchen 發表於 12-10-28 13:09 static/image/common/back.gif
我剛剛去查了一下官網上的特殊結算日有不少是錯的
特殊結算日應該只有以下幾個才對



是,
應該把MC官網,交易所官網,逐筆核對。

folkchen 發表於 12-10-28 13:22

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;

folkchen 發表於 12-10-28 13:24

googleandy 發表於 12-10-28 13:20 static/image/common/back.gif
是,
應該把MC官網,交易所官網,逐筆核對。

我是沒有逐筆去對,寫個小程式去比對沒有K棒的結算日就可以了

頁: [1] 2 3
查看完整版本: 請問 bug 在那裡呀?