在函數裡是否無法使用 EMA 功能

  •   321 
  • 最後發表   蔣大哥  2024 八月 04
蔣大哥 發文於   2024/08/03

小幫手 你好
我嚐試在函數中使用 EMA, 不論我變化任何期數, 它永遠送回同一數值 ?
value1
= EMA(Close,5); //計算5期收盤價的XQ EMA

排序方式: 標準 | 最新
虎科大許教授 發文於   2024/08/03

函數裡面呼叫函數是OK的。

//函數腳本名稱:test

input: days(numeric,"天數");

ret=ema(close,days);

 

//交易腳本名稱:test

print(date,time,test(5));

 

執行交易腳本,監控股票:2330台積電,頻率5分鐘,運作正常。

蔣大哥 發文於   2024/08/04

我想從函數中一次傳回五個不同期數的EMA  , 勞請許教授幫忙指正以下程式碼, 何處有誤,   以致VC34,VC144,VC169,VC576,VC676 等永遠傳回都是相同數值,

//====== VegasChannel function ====== VegasChannel function ====2024/08/03 

//====== TO REURN VALUE 1 IF IN ASCENDING ORDER

//====== TO REURN VALUE -1 IF IN DECENDING ORDER

//====== TO REURN VALUE 0 WHATEVER ELSE

//======= VALUE1 = EMA_Function(VC34,VC144,VC169,VC576,VC676);

 

SetBarMode(2);

input :

VC34( numericref, "EMA34"),

VC144(numericref, "EMA144"),

VC169(numericref, "EMA169"),

VC576(numericref, "EMA576"),

VC676(numericref, "EMA676");

//---------------------------------------------

VAR : RTNV(0);

VC34 = EMA( Getfield("Close","D"), 34);

VC144 = EMA( Getfield("Close","D"),144);

VC169 = EMA( Getfield("Close","D"),169);

VC576 = EMA( Getfield("Close","D"),576);

VC676 = EMA( Getfield("Close","D"),676);

//---------------------------------------------

IF VC34 > 0.5*(VC144 + VC169 ) and (VC144 + VC169 ) > (VC576 + VC676 )

   then RTNV = 1

else 

IF VC34 < 0.5*(VC144 + VC169 ) and (VC144 + VC169 ) < (VC576 + VC676 )

    then RTNV = -1;

EMA_Function = RTNV ;

虎科大許教授 發文於   2024/08/04

程式沒有問題,我用2330台積電的日資料測試,都正常。你的問題可能出在準備的資料太少,EMA需要大量資料,我這邊設6000筆。

//交易腳本名稱:test_EMA

setTotalBar(6000);

value101=EMA_Function(value1,value2,value3,value4,value5);

print(date,value1,value2,value3,value4,value5,value101);

蔣大哥 發文於   2024/08/04

感謝許教授指點, 果然是沒有指定足夠資料所致!

發表回覆
Close