iInfo 資訊交流: MultiCharts 與Excel:由日K棒價格看台指與摩台每月換倉成本

最新消息

[公告2014/05/30] 如有需要將部落格中,任何一篇文章的程式碼使用在商業用途,請與我聯繫。

[公告2015/04/26] Line版的 iInfo程式與投資應用 群組已上線想加入的朋友們,請先查看 "入群須知" 再與我聯繫 Line : aminwhite5168,加入請告知身分與回答 "入群須知" 的問題。

[公告2017/02/20] 近來有網友詢問 MultiCharts 與 Excel 畫冰火能量圖 (8)MultiCharts 與Excel 畫冰火能量圖(11) --- 更名「台股儀表板」 文章中教學檔案取得方式,有興趣的朋友可透過 Line了解詳情 (請勿以為是免費分享),Line : aminwhite5168。

[公告2018/04/22] 台北 Python + Excel VBA 金融資訊爬蟲課程,課程如網頁內容 金融資訊爬蟲班:台北班 Python 金融資訊爬蟲、EXCEL VBA 金融資訊爬蟲,請盡快把握機會,歡迎券商、大專院校邀約講座。

[公告2018/06/01] 台指能量儀表板教學課程,課程如網頁內容 台北班:台指能量儀表板

2016年7月16日 星期六

MultiCharts 與Excel:由日K棒價格看台指與摩台每月換倉成本

很多人常會在電視節目上看到分析師在講每個月台指期與摩台指換倉成本,但至今卻沒有一個比較標準的計算方式,這裡筆者僅提供自己使用的方法讓大家參考,並將內容轉成MultiCharts程式碼,大家可以自行參考。
以下內容僅供教學分享使用,請勿以此作為投資方法,如採用作為投資方法,盈虧自負,一概不負相關責任。
以下程式碼,請以MultiCharts指標來使用,台指期與摩台指的結算日、成本計算方法,請自行修改。
Inputs : iLineName1("Cost1"), iLineName2("Cost2");

vars : vDT1(0), vDT2(0), vDT3(0), vDT4(0), vDT(0), ii(0), 
       vDS1(0), vDS2(0), vDS3(0), vDS4(0), vDS(0), vThisdate(0), vNextdate(0),
       String1(""), String2("");

array : TXF[12](0), TW[12](0);

TXF[0]  = 1160120;
TXF[1]  = 1160217;
TXF[2]  = 1160316;
TXF[3]  = 1160420;
TXF[4]  = 1160518;
TXF[5]  = 1160615;
TXF[6]  = 1160720;
TXF[7]  = 1160817;
TXF[8]  = 1160921;
TXF[9]  = 1161021;
TXF[10] = 1161116;
TXF[11] = 1161221;

TW[0]  = 1160129;
TW[1]  = 1160225;
TW[2]  = 1160330;
TW[3]  = 1160428;
TW[4]  = 1160530;
TW[5]  = 1160629;
TW[6]  = 1160728;
TW[7]  = 1160830;
TW[8]  = 1160929;
TW[9]  = 1161028;
TW[10] = 1161129;
TW[11] = 1161229;

once cleardebug;

value1 = GetAppInfo(aiLeftDispDateTime);

vThisdate = 0;
vNextdate = 0;
for ii = 0 to array_getmaxindex(TXF) - 1 begin
 if TXF[ii] <= JulianToDate(computerdatetime) and JulianToDate(computerdatetime) < TXF[ii + 1] then begin
  vThisdate = datetojulian(TXF[ii]);
  vNextdate = datetojulian(TXF[ii + 1]);
 end;
end;

if D = JulianToDate(vThisdate - 2) then vDT1 = round(avglist(O, H, L, C), 0);
if D = JulianToDate(vThisdate - 1) then vDT2 = round(avglist(O, H, L, C), 0);
if D = JulianToDate(vThisdate)     then vDT3 = round(avglist(O, H, L, C), 0);
if D = JulianToDate(vThisdate + 1) then vDT4 = round(avglist(O, H, L, C), 0);
if D > JulianToDate(vThisdate ) and D <= JulianToDate(vNextdate) then begin
 vDT = round(avglist(vDT1, vDT2, vDT3, vDT4), 0);
 value2 = tl_new(d, t, vDT, d, t, vDT); 
 tl_setcolor(value2, RGB(0, 191, 255));
 tl_setextleft(value2, True);
 tl_setextright(value2, True);
 if D = JulianToDate(vThisdate + 2) then begin
  String1 = iLineName1 + Spaces(1) + NumToStr(vDT, 0);
  value2 = text_new(JulianToDate(value1 + 3), t, vDT + 40, String1);
  text_setattribute(value2, 1, True);
  text_setcolor(value2, RGB(0, 191, 255));
  text_setstyle(value2, 0, 2);
  text_setsize(value2, 16);
 end;
end;

vThisdate = 0;
vNextdate = 0;
for ii = 0 to array_getmaxindex(TW) - 1 begin
 if TW[ii] <= JulianToDate(computerdatetime) and JulianToDate(computerdatetime) < TW[ii + 1] then begin
  vThisdate = datetojulian(TW[ii]);
  vNextdate = datetojulian(TW[ii + 1]);
 end;
end;

if D = JulianToDate(vThisdate - 2) then vDS1 = round(avglist(O, H, L, C), 0);
if D = JulianToDate(vThisdate - 1) then vDS2 = round(avglist(O, H, L, C), 0);
if D = JulianToDate(vThisdate)     then vDS3 = round(avglist(O, H, L, C), 0);
if D = JulianToDate(vThisdate + 1) then vDS4 = round(avglist(O, H, L, C), 0);
if D > JulianToDate(vThisdate) and D <= JulianToDate(vNextdate) then begin
 vDS = round(avglist(vDS1, vDS2, vDS3, vDS4), 0);
 value3 = tl_new(d, t, vDS, d, t, vDS);
 text_setstring(value3, iLineName2);
 tl_setcolor(value3, RGB(191, 62, 255));
 tl_setextleft(value3, True);
 tl_setextright(value3, True);
 if D = JulianToDate(vThisdate + 2) then begin
  String2 = iLineName2 + Spaces(1) + NumToStr(vDS, 0);
  value3 = text_new(JulianToDate(value1 + 3), t, vDS + 40, String2);
  text_setattribute(value3, 1, True);
  text_setcolor(value3, RGB(191, 62, 255));
  text_setstyle(value3, 0, 2);
  text_setsize(value3, 16);
 end;
end;
程式碼說明:
第09~20行:台指期結算日。
第22~33行:摩台期結算日。
第   37  行:找出當前圖表視窗最左邊K棒的日期。
第39~46行:找出當月台指期結算日與次月結算日。
第48~51行:計算台指期可能的換倉成本。
第52~66行:畫台指期換倉成本趨勢線。
第68~75行:找出當月摩台期結算日與次月結算日。
第77~80行:計算摩台期可能的換倉成本。
第81~96行:畫摩台期換倉成本趨勢線。

在MC圖表視窗中設定中文字
Step 1. 在圖表視窗中右鍵、設定指標。

Step 2. 點選設定修改內容。

Step 3. 將"Cost1"、 "Cost2" 換成 "台指成本"、"摩台成本"。

Step 4. 設定為成後,回到設定物件對話框就可見到內容已改為中文。

最後MultiCharts的畫面。

參考資料: