請問我應該如何修改才能撈到我自訂函數的資料呢

  •   299 
  • 最後發表   小豪很仁慈  2025 五月 21
小豪很仁慈 發文於   2025/05/08

//均線值   

INput: v1(10, "日頻率X均線值:");

INput: v2(10, "60分頻率X均線值:");

INput: v3(10, "30分頻率X均線值:");

INput: v4(10, "15分頻率X均線值:");

INput: v5(5, "10分頻率X均線值:");

INput: v6(5, "5分頻率X均線值:");

value27 = Average(getfield("close","d"),v1);

value28 = Average(getfield("close","60"),v2);

value29 = Average(getfield("close","30"),v3);

value30 = Average(getfield("close","15"),v4);

value31 = Average(getfield("close","10"),v5);

value32 = Average(getfield("close","5"),v6); 

if date <> date[1] then begin

  condition11 = false;

  condition12 = false;

  condition13 = false;

  condition14 = false;

  condition15 = false;

  condition16 = false;

end;

condition11 = close[1] >= value27[1];//均線值

condition12 = close[1] >= value28[1];//均線值

condition13 = close[1] >= value29[1];//均線值

condition14 = close[1] >= value30[1];//均線值

condition15 = close[1] >= value31[1];//均線值

condition16 = close[1] >= value32[1];//均線值

VARS: myCondition(false);  

myCondition =

    time >= 090100

    and condition11 and condition12 and condition13 and condition14 and condition15 and condition16

if myCondition then

    ret = 1;


請問上面程式碼我單獨放在策略雷達去執行是可以的正常使用

但是我如果複製到函數腳本把它包裝成 myCondition 

我也有把

VARS: myCondition(false);

if myCondition then ret = 1;刪除才放進去

回傳類型用的是邏輯值

然後另外寫一個雷達只寫

if myCondition() then

    ret = 1;

目的是希望可以單純用雷達去撈函數的資料

請問我應該如何修改才能撈到我自訂函數的資料呢

 

排序方式: 標準 | 最新
GammaCEO 發文於   2025/05/08

你把VARS: myCondition(false);刪除

改成if currenttime>= 090100 and condition11 and condition12 and condition13

and condition14 and condition15 and condition16

then myCondition=1;

if currenttime>= 090100 and condition11 and condition12 and condition13

and condition14 and condition15 and condition16 then

myCondition=ture

else

myCondition=false;

 

雷達語法改

ret= myCondition=1;

if myCondition=ture then ret=1;

試試看

虎科大許教授 發文於   2025/05/08

v1、v2...這些參數若要放在函數,必須賦予資料類型。

小豪很仁慈 發文於   2025/05/08

好的謝謝妳,我在測試看看

小豪很仁慈 發文於   2025/05/08

謝謝許教授,那如果我改成以下程式碼就可以了嗎?

 

//均線值   

 

value27 = Average(getfield("close","d"),10);

 

value28 = Average(getfield("close","60"),10);

 

value29 = Average(getfield("close","30"),10);

 

value30 = Average(getfield("close","15"),10);

 

value31 = Average(getfield("close","10"),5);

 

value32 = Average(getfield("close","5"),5); 

 

if date <> date[1] then begin

 

  condition11 = false;

 

  condition12 = false;

 

  condition13 = false;

 

  condition14 = false;

 

  condition15 = false;

 

  condition16 = false;

 

end;

 

condition11 = close[1] >= value27[1];//均線值

 

condition12 = close[1] >= value28[1];//均線值

 

condition13 = close[1] >= value29[1];//均線值

 

condition14 = close[1] >= value30[1];//均線值

 

condition15 = close[1] >= value31[1];//均線值

 

condition16 = close[1] >= value32[1];//均線值

 

 

myCondition =

 

    time >= 090100

 

    and condition11 and condition12 and condition13 and condition14 and condition15 and condition16

 

 

虎科大許教授 發文於   2025/05/08

沒有參數的函數,OK。

XS小編 發文於   2025/05/21

Hello 小豪很仁慈,

 

小編補充,若希望知道 input 如何使用在函數中,可參考 XSHelp 中 Input 的說明。

宣告時需輸入資料類型。

發表回覆
Close