 |
kending
中級會員
註冊日期: Apr 2006
來 自:
文章數量: 43 |
操作數類型錯誤
請問一下,我要寫一個技術指標,但是相關函數的參數是動態的.
但是在Compile 時,出現了 操作數類型錯誤 , 在 RSIVal 那一行有一個
變數是在前幾列運算出來的.
這一行出錯: 只因用了 Td 這個變數當成參數,用了常數就OK了.
RSIVal := SMA(MAX(CLOSE-LC,0),Td,1)/SMA(ABS(CLOSE-LC),Td,1)
而且我在處理Td 時,有用INTPART函數,避免了有小數點的問題.
煩請大大,撥空釋疑.謝謝!
指標 Source Code :
=====================================================
TdMax:= 30;
TdMin:= 5;
StdA := EMA(Std(Close,5),10);
Vi := IIF(StdA <> 0,Std(Close,5) / StdA,1);
Td := IIF(Vi <>0,INTPART(14 / Vi),1);
Td := IIF(Td > TdMax,TdMax,Td);
Td := IIF(Td < TdMin,TdMin,Td);
LC := REF(CLOSE,1);
RSIVal := SMA(MAX(CLOSE-LC,0),Td,1)/SMA(ABS(CLOSE-LC),Td,1)*100;
SDMI:1;
======================================================
kending 附帶上了此圖片:
|
最後由 kending 在 2006-04-26 01:26 編輯 |
向版主報告此篇 |  |
|
2006-04-26 01:18 |
|
|
|  |
 |
cgjj
總版主

註冊日期: Oct 2003
來 自:
文章數量: 18095 |
SMA(X,N,M),求X的N日移動平均,M為權重。
算法:
若Y=SMA(X,N,M) 則 Y=(M*X+(N-M)*Y')/N, 其中Y'表示上一週期Y值,N必須大於M。
例如:
SMA(CLOSE,20,1)
表示求20日移動平均價
SMA(X,N,M) 其中的 N 和 M 必需為常數
您導入的 TD 為一個數值數列, 非單一數值
所以會出現操作數類型錯誤
cgjj 附帶上了此圖片:
|
|
向版主報告此篇 |  |
|
2006-04-26 09:05 |
|
|
|  |
 |
kending
中級會員
註冊日期: Apr 2006
來 自:
文章數量: 43 |
請問,那如果用 EMA() 函數呢 ?
而怎麼將數值數列,變成單一數值呢 ?
如果可以轉換就可以使用了吧.
|
|
向版主報告此篇 |  |
|
2006-04-26 09:16 |
|
|
|  |
 |
kending
中級會員
註冊日期: Apr 2006
來 自:
文章數量: 43 |
請問 datacount 是從0開始,還是1 .. ,如果要取LAST 是填多少 ?
Td:= Td[datacount];
|
|
向版主報告此篇 |  |
|
2006-04-26 14:58 |
|
|
|  |
 |
kending
中級會員
註冊日期: Apr 2006
來 自:
文章數量: 43 |
謝謝,總版主.
如果在一個數值陣列,我要知道目前是在什麼位置.
CurrentPosition
For Example :
Td := Td[datacount] ; // 這是取出LAST 位置 Td 的值
那可以這樣嗎 ?
Td := Td[CurrentPos] ; // 目前陣列的 INDEX
這樣是取得最後的位置資料,那如果要在每次運算時(K BAR),取得目前的位置. 而不是得到陣列的最後一個值,那又該怎麼寫呢 ?
因為Td 這個數值陣列,他的每一個CELL 的值,都會不一樣,會依目前的K線,運算出來,而其他的函數也都是用這個 變數.
|
最後由 kending 在 2006-04-26 22:56 編輯 |
向版主報告此篇 |  |
|
2006-04-26 22:40 |
|
|
|  |
本站所有內容未經作者授權禁止轉貼節錄, 發表言論僅供參考勿作為投資決策依據。瀏覽本站請使用 IE 5.5 以上版本, 最佳瀏覽解析度 1024 x 768 全彩。
|
Powered by: vBulletin Version 2.3.0 - Copyright©2000-, Jelsoft Enterprises Limited.
簡愛洋行 製作 Copyright 2003-. All Rights Reserved. 聯絡我們
|