到奇狐勝券首頁 奇狐社區論壇 購買奇狐勝券 試用奇狐勝券
 
論壇首頁 你可以在這裡編輯你的資料,查看短訊,訂閱主題和論壇參數等等 免費會員註冊 會員列表 論壇幫助 論壇日曆 論壇搜索 加入我的最愛 登出論壇  
奇狐社區論壇 : Powered by vBulletin version 2.3.0 奇狐社區論壇 > 指標公式 > 問題交流 > [問題]奇狐支援的VBS是否有字數限制?
總頁數 (2): [1] 2 »   上一主題   下一主題
作者
主題 發表新主題    回覆主題
KV1566
中級會員

註冊日期: Jun 2009
來  自:
文章數量: 95

[問題]奇狐支援的VBS是否有字數限制?

我在寫指標公式時用到了VBS,因為程式內容很長,長到了400多條程式碼,每條程式碼還都有部份是用冒號串連起來的,

我寫一小段就會停下來離開編輯檢查結果,後來,寫到相當大數量的程式碼後,突然發生錯誤訊息!

我以為程式碼有誤,檢查了半天卻沒發現問題!因為程式碼中有加入註解,索性將一些註解的內容簡化以減少字數,結果,竟然程式又正常可以執行了!

之後我繼續增加VBS程式碼,很快又出現問題!我再將程式碼中可以精簡的部份做小幅度精簡,結果就又可以執行了!

感覺上,好像是VBS達到一定的字數(比較可能)或指令數(比較不可能,因為我刪減註解也可以達到目的)後,便會出現錯誤訊息!

請問,
1、奇狐是否有VBS程式碼字數的限制?
2、若是有,限制是多少字?
3、而若是真有字數限制,卻又非得增加VBS程式碼時,要如何解決?

謝謝!

向版主報告此篇 | 查IP位址
Old Post 2009-07-17 12:59
KV1566 現在離線 點選這裡查看 KV1566 的個人資料 點選這裡給 KV1566 傳送一條短訊 查找更多關於 KV1566 的文章 增加 KV1566 至你的好友列表 編輯/刪除訊息 引用回覆
cgjj
總版主

註冊日期: Oct 2003
來  自:
文章數量: 18091

回覆: [問題]奇狐支援的VBS是否有字數限制?

引用:
最初由 KV1566 發表
我在寫指標公式時用到了VBS,因為程式內容很長,長到了400多條程式碼,每條程式碼還都有部份是用冒號串連起來的,

我寫一小段就會停下來離開編輯檢查結果,後來,寫到相當大數量的程式碼後,突然發生錯誤訊息!

我以為程式碼有誤,檢查了半天卻沒發現問題!因為程式碼中有加入註解,索性將一些註解的內容簡化以減少字數,結果,竟然程式又正常可以執行了!

之後我繼續增加VBS程式碼,很快又出現問題!我再將程式碼中可以精簡的部份做小幅度精簡,結果就又可以執行了!

感覺上,好像是VBS達到一定的字數(比較可能)或指令數(比較不可能,因為我刪減註解也可以達到目的)後,便會出現錯誤訊息!

請問,
1、奇狐是否有VBS程式碼字數的限制?
2、若是有,限制是多少字?
3、而若是真有字數限制,卻又非得增加VBS程式碼時,要如何解決?

謝謝!



目前版本奇狐單一公式最大能寫到 128KB
大多數的應用應該已經非常足夠了

其實奇狐內建的語法, 就可以處理大多數的程序
且速度大都比用 VBS 處理來的快

VBS是否有限制, 這要問問技術核心人員
這幾天聯絡上後, 才能答覆您

向版主報告此篇 | 查IP位址
Old Post 2009-07-17 14:40
cgjj 現在離線 點選這裡查看 cgjj 的個人資料 點選這裡給 cgjj 傳送一條短訊 查找更多關於 cgjj 的文章 增加 cgjj 至你的好友列表 編輯/刪除訊息 引用回覆
KV1566
中級會員

註冊日期: Jun 2009
來  自:
文章數量: 95

回覆: 回覆: [問題]奇狐支援的VBS是否有字數限制?

引用:
最初由 cgjj 發表
目前版本奇狐單一公式最大能寫到 128KB
大多數的應用應該已經非常足夠了

其實奇狐內建的語法, 就可以處理大多數的程序
且速度大都比用 VBS 處理來的快

VBS是否有限制, 這要問問技術核心人員
這幾天聯絡上後, 才能答覆您


謝謝回覆!

我是在寫高低折線圖,用奇狐內建語法,我想了好久都沒能順利寫出!
奇狐的DRAWLINE是從一個合乎條件的點畫到另一個合乎條件的點,而該另一個合乎條件的點一旦被使用,就無法在同一條指令中再從該根k線的另一個高或低點位置繼續與下一個高低點做連線,所以必須用其他變通的方式寫!

我用程式邏輯極度壓縮減少程式碼數量,最後終於還是完成了!用VBS完成了,運算顯示速度上很好,選擇指標後立刻就會正常出現高低折線圖,不會因為使用VBS而延遲!只是,字數限制上,也讓我無法再對其做額外的處理了!

不過,還好終究是完成了!額外需要做的處理應該就可以用奇狐內建語法來處理!但是,若有能夠解決VBS字數限制的方法,那當然更好了!

這問題已經暫時不急!靜待您的答覆,謝謝!

向版主報告此篇 | 查IP位址
Old Post 2009-07-17 14:57
KV1566 現在離線 點選這裡查看 KV1566 的個人資料 點選這裡給 KV1566 傳送一條短訊 查找更多關於 KV1566 的文章 增加 KV1566 至你的好友列表 編輯/刪除訊息 引用回覆
cgjj
總版主

註冊日期: Oct 2003
來  自:
文章數量: 18091

回覆: 回覆: 回覆: [問題]奇狐支援的VBS是否有字數限制?

引用:
最初由 KV1566 發表
謝謝回覆!

我是在寫高低折線圖,用奇狐內建語法,我想了好久都沒能順利寫出!
奇狐的DRAWLINE是從一個合乎條件的點畫到另一個合乎條件的點,而該另一個合乎條件的點一旦被使用,就無法在同一條指令中再從該根k線的另一個高或低點位置繼續與下一個高低點做連線,所以必須用其他變通的方式寫!

我用程式邏輯極度壓縮減少程式碼數量,最後終於還是完成了!用VBS完成了,運算顯示速度上很好,選擇指標後立刻就會正常出現高低折線圖,不會因為使用VBS而延遲!只是,字數限制上,也讓我無法再對其做額外的處理了!

不過,還好終究是完成了!額外需要做的處理應該就可以用奇狐內建語法來處理!但是,若有能夠解決VBS字數限制的方法,那當然更好了!

這問題已經暫時不急!靜待您的答覆,謝謝!



奇狐有畫折線的函數唷, 就是 POLYLINE
另外 DRAWSL 亦可畫線
試試吧

向版主報告此篇 | 查IP位址
Old Post 2009-07-17 15:07
cgjj 現在離線 點選這裡查看 cgjj 的個人資料 點選這裡給 cgjj 傳送一條短訊 查找更多關於 cgjj 的文章 增加 cgjj 至你的好友列表 編輯/刪除訊息 引用回覆
KV1566
中級會員

註冊日期: Jun 2009
來  自:
文章數量: 95

回覆: 回覆: 回覆: 回覆: [問題]奇狐支援的VBS是否有字數限制?

引用:
最初由 cgjj 發表
奇狐有畫折線的函數唷, 就是 POLYLINE
另外 DRAWSL 亦可畫線
試試吧


底下這張圖是我用VBS搭配計算畫出來的高低折線圖,其中,必須對「母子」線及「子母」線組合做處理!

請問,POLYLINE可以畫出來嗎?

POLYLINE兩個參數,一個是符合的條件,一個是價位數列
如果我將處理完的轉折價位放入數列中,當遇到子母、母子,且有可能要在其該根K線的高點及低點同時往左往右畫出與其他高低點連結的線條時,如何用POLYLINE辦到?!

這個函數比較不熟,尚請指導!謝謝!

KV1566 附帶上了此圖片:

向版主報告此篇 | 查IP位址
Old Post 2009-07-17 15:25
KV1566 現在離線 點選這裡查看 KV1566 的個人資料 點選這裡給 KV1566 傳送一條短訊 查找更多關於 KV1566 的文章 增加 KV1566 至你的好友列表 編輯/刪除訊息 引用回覆
cgjj
總版主

註冊日期: Oct 2003
來  自:
文章數量: 18091

回覆: 回覆: 回覆: 回覆: 回覆: [問題]奇狐支援的VBS是否有字數限制?

引用:
最初由 KV1566 發表
底下這張圖是我用VBS搭配計算畫出來的高低折線圖,其中,必須對「母子」線及「子母」線組合做處理!

請問,POLYLINE可以畫出來嗎?

POLYLINE兩個參數,一個是符合的條件,一個是價位數列
如果我將處理完的轉折價位放入數列中,當遇到子母、母子,且有可能要在其該根K線的高點及低點同時往左往右畫出與其他高低點連結的線條時,如何用POLYLINE辦到?!

這個函數比較不熟,尚請指導!謝謝!



您有同根是低轉折又是高轉折的狀況
故無法用POLYLINE處理

向版主報告此篇 | 查IP位址
Old Post 2009-07-17 19:36
cgjj 現在離線 點選這裡查看 cgjj 的個人資料 點選這裡給 cgjj 傳送一條短訊 查找更多關於 cgjj 的文章 增加 cgjj 至你的好友列表 編輯/刪除訊息 引用回覆
cgjj
總版主

註冊日期: Oct 2003
來  自:
文章數量: 18091

但是可以用 DRAWSL 來處理, 範例如下:


//==================模擬區段開始===================
ZZ:=ZIG(4,3);
HP:=ZZ>ref(ZZ,1) and ZZ>refx(ZZ,1); //轉折高點
LP:=ZZ<ref(ZZ,1) and ZZ<refx(ZZ,1); //轉折低點
//當 HP=1 和 LP=1 , 則 SS=1 代表轉折高低點在同根K棒
SS:=LP and mod(sum(LP,0),4)=0;
HP:=HP or SS; //當SS=1時, 讓 HP=LP
LP:= LP or ref(SS,1); //當SS=1, 將次根設為轉折低點
//==================模擬區段終止===================
//此區段為模擬的假狀況
//實際狀況請自行替代帶入,接下面三行
// HP:=轉折高點;
// LP:=轉折低點;
// SS:=HP and LP;

CK:=HP or LP;
SP:=ref(BARSLAST(CK),1)+1;
CK1:=CK and ref(SS,1)=0; //一般畫法
CK2:=CK and ref(SS,1)=1; //特殊畫法
MM1:=if(LP,L,H); //轉折價1
MM2:=if(LP,H,L); //轉折價2(同根用)
VERTLINE(SS) linedot color888888; //標示同根轉折K棒
DRAWSL(CK1,MM1,(MM1-ref(MM1,SP))/SP,-SP,1) COLORYELLOW;
DRAWSL(CK2,MM1,(MM1-ref(MM2,SP))/SP,-SP,1) COLORYELLOW;
STICKLINE(SS,MM1,MM2,0.1,0) COLORYELLOW;

cgjj 附帶上了此圖片:

向版主報告此篇 | 查IP位址
Old Post 2009-07-17 19:38
cgjj 現在離線 點選這裡查看 cgjj 的個人資料 點選這裡給 cgjj 傳送一條短訊 查找更多關於 cgjj 的文章 增加 cgjj 至你的好友列表 編輯/刪除訊息 引用回覆
KV1566
中級會員

註冊日期: Jun 2009
來  自:
文章數量: 95

引用:
最初由 cgjj 發表
[B]但是可以用 DRAWSL 來處理, 範例如下:


嗯,再次感謝!我找時間再來試試這種寫法,謝謝!

向版主報告此篇 | 查IP位址
Old Post 2009-07-17 21:28
KV1566 現在離線 點選這裡查看 KV1566 的個人資料 點選這裡給 KV1566 傳送一條短訊 查找更多關於 KV1566 的文章 增加 KV1566 至你的好友列表 編輯/刪除訊息 引用回覆
cgjj
總版主

註冊日期: Oct 2003
來  自:
文章數量: 18091

已得到答覆了

並非是限制造成的
是系統的 Bug , 新版會修正此問題

謝謝您!

向版主報告此篇 | 查IP位址
Old Post 2009-07-30 14:26
cgjj 現在離線 點選這裡查看 cgjj 的個人資料 點選這裡給 cgjj 傳送一條短訊 查找更多關於 cgjj 的文章 增加 cgjj 至你的好友列表 編輯/刪除訊息 引用回覆
KV1566
中級會員

註冊日期: Jun 2009
來  自:
文章數量: 95

引用:
最初由 cgjj 發表
已得到答覆了
並非是限制造成的
是系統的 Bug , 新版會修正此問題
謝謝您!


謝謝您繼續關懷回覆此問題!等待更版的好消息!

從那天之後,我有試著將之改為奇狐系統內建的For...do begin及If...then begin來處理,
所有的程式邏輯通通不變,只是由VBScript修過來而已,
結果發現,用VBScript寫出來的執行速度,竟然還是比內建方式寫出來的快!

看來,有些時候還是得用VBScript來處理會比較好!

期待更版中。。。

向版主報告此篇 | 查IP位址
Old Post 2009-07-30 14:59
KV1566 現在離線 點選這裡查看 KV1566 的個人資料 點選這裡給 KV1566 傳送一條短訊 查找更多關於 KV1566 的文章 增加 KV1566 至你的好友列表 編輯/刪除訊息 引用回覆
cgjj
總版主

註冊日期: Oct 2003
來  自:
文章數量: 18091

引用:
最初由 KV1566 發表
謝謝您繼續關懷回覆此問題!等待更版的好消息!

從那天之後,我有試著將之改為奇狐系統內建的For...do begin及If...then begin來處理,
所有的程式邏輯通通不變,只是由VBScript修過來而已,
結果發現,用VBScript寫出來的執行速度,竟然還是比內建方式寫出來的快!

看來,有些時候還是得用VBScript來處理會比較好!

期待更版中。。。



檢查看看

For...do begin 中
是否有用到 if(cond,a,b) 這樣的式子
有的話一定會慢
因為 if(cond,a,b) 是專責處理數列用的
不適合放入 For...do begin 之中

在 For...do begin 中, 要讓其都是元素對元素運算
迴圈中把 if(cond,a,b) 改為 if ...then ...else 會快上非常多

當然也要視您算的東西
有些處理程序 VBScript 還是有它的優勢在

迴圈中只要堅守都是元素對元素的運算
能不在迴圈中處理的, 就以數列對數列在迴圈外部先行處理好
真需要迴圈的再帶入計算
如此速度就可大幅提升

向版主報告此篇 | 查IP位址
Old Post 2009-07-30 15:20
cgjj 現在離線 點選這裡查看 cgjj 的個人資料 點選這裡給 cgjj 傳送一條短訊 查找更多關於 cgjj 的文章 增加 cgjj 至你的好友列表 編輯/刪除訊息 引用回覆
alpha
資深會員

註冊日期: Oct 2006
來  自:
文章數量: 225

測試過了慢也不會慢多少
快也不會快多少

======== 1.406 秒

C1:=C;
B12:=C*0;

for w2 = 1 to 30 do begin
for w = 2 to datacount do begin
if C1[w] > C1[w-1] then begin
B12[w]:=1;
end;
end;
end;

======= 1.641 秒

for w2 = 1 to 30 do begin
J:=1;
<%
C1 = FFL.VarData("C1")
B12 = FFL.VarData("B12")
lb = lbound(C1)+1
ub = ubound(C1)

for w = lb to ub
if C1(w) < C1(w-1) then B12(w)= 1
next

FFL.VarData("C1") =C1
FFL.VarData("B12")=B12

%>

end;


=======1.31 秒 ( 雙迴圈 皆在 VBS 裡面, 少了 29 次的 VarData() 轉換)

<%
C1 = FFL.VarData("C1")
B12 = FFL.VarData("B12")
lb = lbound(C1)+1
ub = ubound(C1)

for w2 = 1 to 30
for w = lb to ub
if C1(w) < C1(w-1) then B12(w)= 1
next
next

FFL.VarData("C1") =C1
FFL.VarData("B12")=B12

%>

__________________
偶而是不是也感覺有些老
像個大人般的戀愛
有時心情糟
請你相信我在你身邊別忘了

最後由 alpha 在 2009-07-30 18:08 編輯 向版主報告此篇 | 查IP位址
Old Post 2009-07-30 18:02
alpha 現在離線 點選這裡查看 alpha 的個人資料 點選這裡給 alpha 傳送一條短訊 查找更多關於 alpha 的文章 增加 alpha 至你的好友列表 編輯/刪除訊息 引用回覆
cgjj
總版主

註冊日期: Oct 2003
來  自:
文章數量: 18091

舉個實例好嚕
看看 if(cond,a,b) 與 if... then ...else 兩者在迴圈內應用
速度的比較

此段跑很慢

原碼:

MM
:C*0;
CK:=C>O;
OO:=OHH:=H;
for 
i=1 to 900000 do begin
 MM
[datacount]:=if(CK[datacount]=1,OO[datacount],HH[datacount]);
end;



此段跑很快
原碼:

MM
:C*0;
CK:=C>O;
OO:=OHH:=H;
for 
i=1 to 900000 do begin
 
if CK[datacount]=1 then begin
   MM
[datacount]:=OO[datacount];
 
end else begin
   MM
[datacount]:=HH[datacount];
 
end;
end;

向版主報告此篇 | 查IP位址
Old Post 2009-07-30 20:53
cgjj 現在離線 點選這裡查看 cgjj 的個人資料 點選這裡給 cgjj 傳送一條短訊 查找更多關於 cgjj 的文章 增加 cgjj 至你的好友列表 編輯/刪除訊息 引用回覆
alpha
資深會員

註冊日期: Oct 2006
來  自:
文章數量: 225

幫 c 大測試這段

=========== 102.61 秒 ~~ 驚呆了 ( 以上的datacount 都是 30000 根 )

C1:=C;
O1:=C;
B12:=C*0;

for w2 = 1 to 30 do begin
for w = 2 to datacount do begin

B12[w]:=if(C1[w]=1,O1[w],C1[w]);
end;
end;


// ===

把 if() 改成 MAX() 函數 , 同樣以單值傳入

B12[w] := MAX(B12[w],C1[w]);

MAX() 函數只要 1.31 秒

若說 if() 如此費時是因為不停配置記憶體

但是 Max() 函數它又不會

不知道 if() 在搞什東東

__________________
偶而是不是也感覺有些老
像個大人般的戀愛
有時心情糟
請你相信我在你身邊別忘了

最後由 alpha 在 2009-07-30 22:22 編輯 向版主報告此篇 | 查IP位址
Old Post 2009-07-30 22:15
alpha 現在離線 點選這裡查看 alpha 的個人資料 點選這裡給 alpha 傳送一條短訊 查找更多關於 alpha 的文章 增加 alpha 至你的好友列表 編輯/刪除訊息 引用回覆
cgjj
總版主

註冊日期: Oct 2003
來  自:
文章數量: 18091

引用:
最初由 alpha 發表
..............
若說 if() 如此費時是因為不停配置記憶體
但是 Max() 函數它又不會
不知道 if() 在搞什東東



if(cond,a,b) 是專為數列對數列之計算, 為目的設計的
故不適合放入 For...do begin 之中
PS:之前有詢問過核心的人員嚕

與 MAX 相當不同

向版主報告此篇 | 查IP位址
Old Post 2009-07-30 23:14
cgjj 現在離線 點選這裡查看 cgjj 的個人資料 點選這裡給 cgjj 傳送一條短訊 查找更多關於 cgjj 的文章 增加 cgjj 至你的好友列表 編輯/刪除訊息 引用回覆
全部時間均為台灣時間, 現在時間為02:26 發表新主題    回覆主題
總頁數 (2): [1] 2 »   上一主題   下一主題
顯示可列印版本 | 訂閱此主題

論壇跳轉:
主題評分:

論壇規定:
你不可以發表新主題
你不可以回覆文章
你不可以上傳附件
你不可以編輯自己的文章
HTML語法禁止
vB 語法核准
表情符號核准
貼圖語法[IMG]核准
 

本站所有內容未經作者授權禁止轉貼節錄, 發表言論僅供參考勿作為投資決策依據。瀏覽本站請使用 IE 5.5 以上版本, 最佳瀏覽解析度 1024 x 768 全彩。

Powered by: vBulletin Version 2.3.0 - Copyright©2000-, Jelsoft Enterprises Limited.

簡愛洋行 製作 Copyright 2003-. All Rights Reserved.  聯絡我們