 |
Markchu7
資深會員
註冊日期: Nov 2007
來 自:
文章數量: 1501 |
5.0 & 5.1期貨版公視寫法差異請指導
U1轉換參數:=IF(DATATYPE=1,5,IF(DATATYPE=2,3,IF(DATATYPE=3,2,IF(DATATYPE=4,2,5))));
IF STKLABEL='FITX1' AND DATATYPE<6 THEN U1H:REF(STKINDI('','VKL引用.攻防H',0,DATATYPE+1),U1轉換參數),COLORRED,LINETHICK;
IF STKLABEL='FITX1' AND DATATYPE<6 THEN U1L:REF(STKINDI('','VKL引用.攻防L',0,DATATYPE+1),U1轉換參數),COLORBLUE,LINETHICK;
U1M:(U1H+U1L)/2,COLORBLACK,LINETHICK;
STICKLINE(DATATYPE<6,U1H,U1M,10,0),COLORBBBBBB;
STICKLINE(DATATYPE<6,U1L,U1M,10,0),COLORAAAAAA;
以下為引用之子公式:
V1:=V;
VTK:=V1,COLORRED,LINETHICK1;
VKN:=SORT(VtK,0,LBOUND(VtK),UBOUND(VtK));
VSTTK:=SETLBOUND(Vtk,0);
巨量:VTK[INTPART(VKN*IF(DATATYPE>2,0.90,IF(DATATYPE=2,0.95,0.9618)))],COLORBLUE,LINETHICK;
VK:V>巨量;
攻防H:REF(H,BARSLAST(VK));
攻防L:REF(L,BARSLAST(VK));
相同的公式卻呈現不同的結果!5.0版是我需要的結果,請問5.1期貨版要如何修改?而原因何在?請指導!感恩!
本樓為5.0版
Markchu7 附帶上了此圖片:
|
|
向版主報告此篇 |  |
|
2013-09-10 09:22 |
|
|
|  |
 |
cgjj
總版主

註冊日期: Oct 2003
來 自:
文章數量: 18114 |
回覆: 5.0 & 5.1期貨版公視寫法差異請指導
引用: 最初由 Markchu7 發表
..............
以下為引用之子公式:
V1:=V;
VTK:=V1,COLORRED,LINETHICK1;
VKN:=SORT(VtK,0,LBOUND(VtK),UBOUND(VtK));
VSTTK:=SETLBOUND(Vtk,0);
巨量:VTK[INTPART(VKN*IF(DATATYPE>2,0.90,IF(DATATYPE=2,0.95,0.9618)))],COLORBLUE,LINETHICK;
VK:V>巨量;
攻防H:REF(H,BARSLAST(VK));
攻防L:REF(L,BARSLAST(VK));
VSTTK:=SETLBOUND(Vtk,0);
與版本無關
兩個版本算出的東西都是錯的
因為您公式沒寫對, 已經越界存取數列了
SETLBOUND(Vtk,0)
您指定 0, 是把 Vtk 設成一個無效數列
既然是無效數列, 後續就不能 VTK[n] 的方式去存取它
(存取到的可能是個亂數)
|
|
向版主報告此篇 |  |
|
2013-09-10 10:11 |
|
|
|  |
 |
Markchu7
資深會員
註冊日期: Nov 2007
來 自:
文章數量: 1501 |
真是錯的渾然不知啊!以前都沒發生如此的狀況,也就一直誤用下去!
請教總版主:
1.如果我要設下界為800,則VSTTK:=SETLBOUND(Vtk,800);寫法是否正確?以成交量來說這樣寫是不是800(含)以上才會納入序列?
2.如果全部序列變量最大值為9999,則VSTTK:=SETLBOUND(Vtk,10000);就會使序列無效,是否正確?
3.如果不寫VSTTK:=SETLBOUND(Vtk,800);這條公式(也就是不指定下界),會有何影響呢?
4.抓到亂數!所以說5.0版呈現正常畫面,只是運氣好,如果5.0版是錯的畫面,也不一定會錯的跟5.1期貨版一個樣!是否如此?
請指導!
|
最後由 Markchu7 在 2013-09-10 22:54 編輯 |
向版主報告此篇 |  |
|
2013-09-10 22:27 |
|
|
|  |
 |
cgjj
總版主

註冊日期: Oct 2003
來 自:
文章數量: 18114 |
引用: 最初由 Markchu7 發表
真是錯的渾然不知啊!以前都沒發生如此的狀況,也就一直誤用下去!
請教總版主:
1.如果我要設下界為800,則VSTTK:=SETLBOUND(Vtk,800);寫法是否正確?以成交量來說這樣寫是不是800(含)以上才會納入序列?
2.如果全部序列變量最大值為9999,則VSTTK:=SETLBOUND(Vtk,10000);就會使序列無效,是否正確?
3.如果不寫VSTTK:=SETLBOUND(Vtk,800);這條公式(也就是不指定下界),會有何影響呢?
4.抓到亂數!所以說5.0版呈現正常畫面,只是運氣好,如果5.0版是錯的畫面,也不一定會錯的跟5.1期貨版一個樣!是否如此?
請指導!
Re1: Yes
Re2: Yes
Re3: 要看您做何用途? 一般公式較不需要用到它
(應該問您自己當初加它的用意為何?)
Re4: Yes
越界存取, 相當於去存取一個未被配置或被其他東西佔據的區域
越界讀取到的內容, 是無法預料的數值或字元
若有越界寫入, 甚至有可能因此導致奇狐或其他程式當掉
|
|
向版主報告此篇 |  |
|
2013-09-11 10:07 |
|
|
|  |
 |
Markchu7
資深會員
註冊日期: Nov 2007
來 自:
文章數量: 1501 |
U1轉換參數:=IF(DATATYPE=1,5,IF(DATATYPE=2,3,IF(DATATYPE=3,2,IF(DATATYPE=4,2,5))));
IF STKLABEL='FITX1' AND DATATYPE<6 THEN U1H:REF(STKINDI('','VKL引用.攻防H',0,DATATYPE+1),U1轉換參數),COLORRED,LINETHICK;
IF STKLABEL='FITX1' AND DATATYPE<6 THEN U1L:REF(STKINDI('','VKL引用.攻防L',0,DATATYPE+1),U1轉換參數),COLORBLUE,LINETHICK;
U1M:(U1H+U1L)/2,COLORBLACK,LINETHICK;
STICKLINE(DATATYPE<6,U1H,U1M,10,0),COLORBBBBBB;
STICKLINE(DATATYPE<6,U1L,U1M,10,0),COLORAAAAAA;
以下為引用之子公式:
V1:=V;
VTK:=V1,COLORRED,LINETHICK1;
VKN:=SORT(VtK,0,LBOUND(VtK),UBOUND(VtK));
巨量:VTK[INTPART(VKN*IF(DATATYPE>2,0.90,IF(DATATYPE=2,0.95,0.9618)))],COLORBLUE,LINETHICK;
VK:V>巨量;
攻防H:REF(H,BARSLAST(VK));
攻防L:REF(L,BARSLAST(VK));
以上為導致結果差異的公式源碼.
================================================
因為推估是時間切割導致的問題,所以更改子公式末三行:
VK:REF(V>巨量,1)=1;
攻防H:REF(REF(H,1),BARSLAST(VK));
攻防L:REF(REF(L,1),BARSLAST(VK));
公式引用的部分:
IF STKLABEL='FITX1' AND DATATYPE<6 THEN U1H:STKINDI('','VKL引用.攻防H',0,DATATYPE+1),COLORRED,LINETHICK;
IF STKLABEL='FITX1' AND DATATYPE<6 THEN U1L:STKINDI('','VKL引用.攻防L',0,DATATYPE+1),COLORBLUE,LINETHICK;
所以已經解決問題了!對不起!麻煩總版主了,感謝!
|
|
向版主報告此篇 |  |
|
2013-09-11 15:46 |
|
|
|  |
 |
cgjj
總版主

註冊日期: Oct 2003
來 自:
文章數量: 18114 |
引用: 最初由 Markchu7 發表
U1轉換參數:=IF(DATATYPE=1,5,IF(DATATYPE=2,3,IF(DATATYPE=3,2,IF(DATATYPE=4,2,5))));
IF STKLABEL='FITX1' AND DATATYPE<6 THEN U1H:REF(STKINDI('','VKL引用.攻防H',0,DATATYPE+1),U1轉換參數),COLORRED,LINETHICK;
IF STKLABEL='FITX1' AND DATATYPE<6 THEN U1L:REF(STKINDI('','VKL引用.攻防L',0,DATATYPE+1),U1轉換參數),COLORBLUE,LINETHICK;
U1M:(U1H+U1L)/2,COLORBLACK,LINETHICK;
STICKLINE(DATATYPE<6,U1H,U1M,10,0),COLORBBBBBB;
STICKLINE(DATATYPE<6,U1L,U1M,10,0),COLORAAAAAA;
以下為引用之子公式:
V1:=V;
VTK:=V1,COLORRED,LINETHICK1;
VKN:=SORT(VtK,0,LBOUND(VtK),UBOUND(VtK));
巨量:VTK[INTPART(VKN*IF(DATATYPE>2,0.90,IF(DATATYPE=2,0.95,0.9618)))],COLORBLUE,LINETHICK;
VK:V>巨量;
攻防H:REF(H,BARSLAST(VK));
攻防L:REF(L,BARSLAST(VK));
以上為導致結果差異的公式源碼.
================================================
因為推估是時間切割導致的問題,所以更改子公式末三行:
VK:REF(V>巨量,1)=1;
攻防H:REF(REF(H,1),BARSLAST(VK));
攻防L:REF(REF(L,1),BARSLAST(VK));
公式引用的部分:
IF STKLABEL='FITX1' AND DATATYPE<6 THEN U1H:STKINDI('','VKL引用.攻防H',0,DATATYPE+1),COLORRED,LINETHICK;
IF STKLABEL='FITX1' AND DATATYPE<6 THEN U1L:STKINDI('','VKL引用.攻防L',0,DATATYPE+1),COLORBLUE,LINETHICK;
所以已經解決問題了!對不起!麻煩總版主了,感謝!
問題不是在時間切割, 兩個版本分線切割方式是一致的
應該是併筆產生的差異性, 兩個版本算的應該都沒有錯
不需做 REF 偏移動作(做了反而是錯的)
您可以去比較看看 v5.0 和 v5.1 每一根分線的成交量
會有少許差異
v5.1 是沒併筆的量, v5.0 有併筆過的量
該分最末幾筆的成交量, 在 v5.0 中可能被併入歸到下一根中
但在 v5.1 仍是歸在本根之中
量彼此不完全一樣, 兩邊 SORT 的結果就會有少許差異
這是正常的, 沒有對錯
v5.1 的分線數據 不會完全相等於 v5.0 的分線數據
(因為無併筆vs有併筆, 包含開高低收量)
要先有這樣的認知, 再去進行比對唷
|
|
向版主報告此篇 |  |
|
2013-09-11 17:33 |
|
|
|  |
 |
Markchu7
資深會員
註冊日期: Nov 2007
來 自:
文章數量: 1501 |
總版主真是貼心,鉅細靡遺的說明,就怕狐友誤用!我會持續觀察與詳細比對,再有問題還是要麻煩總版主的啦!感謝!
|
|
向版主報告此篇 |  |
|
2013-09-11 23:32 |
|
|
|  |
 |
Markchu7
資深會員
註冊日期: Nov 2007
來 自:
文章數量: 1501 |
昨晚還想到一個問題:
9/10 5.1版一開始是錯誤圖形後來變正確有可能是我一 直沒有切換到5分鐘週期,所以5分鐘數據沒有補進來的關係,後來切換過後再到該畫面就又變正確了,這可能會是原因,向總版主報告!
|
|
向版主報告此篇 |  |
|
2013-09-13 08:26 |
|
|
|  |
本站所有內容未經作者授權禁止轉貼節錄, 發表言論僅供參考勿作為投資決策依據。瀏覽本站請使用 IE 5.5 以上版本, 最佳瀏覽解析度 1024 x 768 全彩。
|
Powered by: vBulletin Version 2.3.0 - Copyright©2000-, Jelsoft Enterprises Limited.
簡愛洋行 製作 Copyright 2003-. All Rights Reserved. 聯絡我們
|