GetField的頻率可否用變數

  •   458 
  • 最後發表   Willie  2024 十月 07
Willie 發文於   2023/05/03

請問GetField的"頻率"可否用儲存有字串的變數?例如以下是一個函數程式,但編譯無法辨識Frequency,表示其非字串:

SetBarMode(1);

input:

Frequency(string);

Length(string);

Var:HV(0), LV(0), _Index(0);

HV = GetField("High", Frequency)[1];

LV = GetField("Low", Frequency)[1];

If Length>1 then

Begin

  For _Index = 2 to (Length + 1)

  Begin

    If HV <= GetField("High", Frequency)[_Index] then HV = Frequency[_Index];

    If LV >= GetField("Low", Frequency)[_Index] then LV = Frequency[_Index];

  End;

End;

If GetField("Close", Frequency) > HV then Tower = 1

Else if GetField("Close", Frequency) < LV then Tower = -1;

 

 

 

排序方式: 標準 | 最新
XQ小幫手 發文於   2023/05/05

Hello Willie,

 

GetField 函數裡面只能夠傳入固定的字串,不能夠是參數或變數。

  • 按讚來自於
  • Weiyu169
Willie 發文於   2023/05/05

謝謝您。那看來只能用If選擇了。

無情卻慈悲 發文於   2024/09/02

這個仍無法嗎?真的希望可以。

  • 按讚來自於
  • YYFrankLi0813
XS小編 發文於   2024/09/06

Hello 無情卻慈悲,

 

就小編所知是沒有辦法的。

FrankLi 發文於   2024/09/25

希望有這功能+1,總覺得就技術角度, 這不難實現,

現況使用者要自己用if else判斷後, 再寫死常數, 就出現很多重覆雜亂的程式碼. 

XS小編 發文於   2024/09/27

Hello FrankLi,

 

就小編所知,策略在運作時是先準備好資料後才運算的,所以像這種運算後才決定要取什麼資料的目前是無法作到的。

建議可以考慮將會重複使用到的部分改為函數,讓策略腳本簡潔些。

 

舉例來說,您會在腳本中用到1、10、30跟日頻率的high的話,可以寫個函數 GetHigh:

input: _freq(StringSimple);

 

if _freq = "1" then retval = getfield("High", "1")

else if _freq = "10" then retval = getfield("High", "10")

else if _freq = "30" then retval = getfield("High", "30")

else if _freq = "D" then retval = getfield("High", "D");

 

這樣只要在腳本中呼叫 GetHigh("1") ~ GetHigh("D") 就可以取得對應頻率的資料。

不過要注意這樣的話頻率會跟執行頻率相同。

  • 按讚來自於
  • YYFrankLi0813
FrankLi 發文於   2024/09/29

自己目前也是用函式來處理, 把GetField再封裝一層, 類似你上面的做法.

 

運算前先準備資料合理, GetField 函式也不需支援 var ,

但有沒有可能 【允許填入 input 參數】? 

input 參數運算前就已經確定, 運算後也不允許再賦值或改變, 

例如: SetTotalBar 函式就可以填 input 參數.

GetField 是不是也有機會做到? 

XS小編 發文於   2024/10/07

Hello FrankLi,

 

就小編所知,目前只有 GetSymbolField 裡的商品代碼欄位可以使用input欄位作設定。

會將您的意見轉告相關人員作參考。

  • 按讚來自於
  • YYFrankLi0813
  • jaylooloomi
發表回覆
Close