EMA計算方式

  •   215 
  • 最後發表   Alex嘉  2024 三月 02
Alex嘉 發文於   2024/02/29

我想請問一下 我想要修改 EMA的計算方式,是直接從函數內的EMA修改嗎?

SetBarMode(2);

 

input:thePrice(numericseries); //"價格序列"

input:Length(Numeric);   //"計算期間"

 

variable:  Factor(0);

 

if length + 1 = 0 then Factor = 1 else Factor = 2 / (Length + 1);

 

if CurrentBar = 1 then

EMA = thePrice

else if CurrentBar <= Length then

    EMA = (thePrice + (EMA[1]*(CurrentBar-1)))/CurrentBar

else

 

EMA = EMA[1] + Factor * (thePrice - EMA[1]);
但我新建一個函數,複製原本內建的EMA,卻顯示EMA要宣告?? 請問是該從哪邊修改呢?

排序方式: 標準 | 最新
貓市 發文於   2024/02/29

EMA是原本的函數用來把數值回傳的方式, 用函數名稱EMA來做回傳

把EMA取代改成你新的函數名稱, 或是改成ret就可以了

Alex嘉 發文於   2024/02/29

謝謝解答。再請教一下 意思是 原本EMA 已被內建, 我要改一個新的函數名稱在宣告var,即可,對嗎?

的確改成ret 就可以了。謝謝

Alex嘉 發文於   2024/02/29

可以再請教一下嗎?

Value1 = XAverageg(price, FastLength) - XAverageg(price, SlowLength);

Value2 = XAverageg(Value1, MACDLength) ;

Value3 = Value1 - Value2 ;

 

condition1=  value2 cross under 0 ;

condition2 = value3>0;

condition3=  value2 cross over 0 ;

condition4=  value3 <0 ;

 

Plot1(Value1, "DIF");

Plot2(Value2, "MACD");

Plot3(Value3, "Osc");

 

plot4(condition1,"MACD大於0");

plot5(condition2,"柱礦體大於0");

plot6(condition3,"MACD小於0");

 

plot7(condition4,"柱狀體小於0");

我另外將plot4-7從線條改成點,
為什麼 我的plot4-plot7 都會每個K棒都會有圖示呢?

XS小編 發文於   2024/03/01

 Hello Alex嘉,

 

condition 是內建的 True/False 函數,直接畫出的話會顯示 1 或 0。

故畫出的話每根Bar都會有對應的數值沒錯。

您想作的應該是用 condition 當作條件,像是:

if condition1 then plot4(1, "MACD大於0") else noplot(4);

這樣就只會在 condition1 符合時畫出1。

Alex嘉 發文於   2024/03/02

清楚了,因為每隻都有回應1,0 所以要指定回應哪個要畫,謝謝。

發表回覆
Close