dunhilltc 發表於 12-3-15 10:06

請問powerlanguage中的ema寫法

小弟上網找的寫法如下
input:FastDay(20),SlowDay(10);variable:EMA_F(0),EMA_S(0);EMA_F = EMA_F * ((FastDay - 1) / FastDay) + close * ( 1 / FastDay);EMA_S = EMA_S * ((SlowDay - 1) / SlowDay) + close * ( 1 / SlowDay); if marketposition=0 and EMA_F Cross Above EMA_S then beginbuy("buy") next bar at market;end;想法是當20ema穿越過10ema的時候進場買多但是用永豐eleader測試的時候跟用mc測試的時候數據差太大想說是不是ema的語法弄錯了軟體都買了無法實際上線真的很痛苦阿

saucer 發表於 12-3-15 10:38

EMA 會因為 k棒數不同, 出現數值不一樣的情形
永豐eleader 1000k 棒 vs 永豐eleader 2000k 棒
你看到的 ema 值就會不一樣
這是正常的




曾永政 發表於 12-3-15 17:16

我一直以為 MultiCharts 上的 EMA 就是 xAverage(price, length) 咧?

dunhilltc 發表於 12-3-15 17:24

這....請問20ema的語法是怎麼寫的呢
一直麻煩大家真的很抱歉

saucer 發表於 12-3-15 18:37

ema20 = XAverage(C, 20);

dunhilltc 發表於 12-3-16 00:07

小弟貼一下改變過後的語法好了
input:FastDay(20),SlowDay(10);

variable:EMA_F(0),EMA_S(0);

EMA_F = XAverage(C, 20);
EMA_S = XAverage(C, 10);

if marketposition=0 and EMA_F Cross Above EMA_S then begin

buy("buy") next bar at market;

end;

在永豐eleader上面的寫法則是
cross(ema(c,20), ema(c,10))

如果mc的ema語法正確的話
回測的結果兩邊應該一樣
但是mc這邊數據卻很難看
有高手可以指導嗎
感謝

saucer 發表於 12-3-16 09:03

本帖最後由 saucer 於 12-3-16 09:13 編輯

改用

EMA_F = XAverageOrig(C, 20);
EMA_S = XAverageOrig(C, 10);

看看

dunhilltc 發表於 12-3-16 10:13

感謝saucer兄的提供
不過數據跑出來好像更難看了
真的無解阿@@
程式交易真是個大門檻

saucer 發表於 12-3-16 10:19

本帖最後由 saucer 於 12-3-16 10:22 編輯

XAverageOrig 演算規則和你貼的 code 完全一樣


XAverageOrig , XAverage 其實就差在係數而已
規則和 ema 是一樣的

XAverage乘以係數2 / ( 週期 + 1 ) ;

XAverageOrig   乘以係數1 / ( 週期 + 0 ) ;


dunhilltc 發表於 12-3-16 12:53

那小弟設定的宣告變數是如下寫的
input:FastDay(20),SlowDay(10);
variable:EMA_F(0),EMA_S(0);
EMA_F = XAverageOrig(C, 20);
EMA_S =XAverageOrig(C, 10);

是否是宣告變數的地方寫錯了呢

saucer 發表於 12-3-16 13:26

應該是
EMA_F = XAverageOrig(C, 10);
EMA_S =XAverageOrig(C, 20);

_F = Fast = 短週期
_S = Slow = 長週期


dunhilltc 發表於 12-3-16 21:32

小弟的想法其實就是長週期穿越短週期之後買多
但是依照s兄的方式改來改去還是無法達到eleader上面所顯示的績效
在想說會不會是eleader測試有問題了
真的一團亂
白頭髮多好多根

Android 發表於 12-3-18 00:05

會不會是歷史資料不一樣造成。
把兩邊的資料用Excel比對看看。

dunhilltc 發表於 12-3-18 00:57

喔咧
資料可能會不一樣啊
那我再問問看兩邊的資訊人員
看歷史資料要怎麼抓出來
感謝

bacardi 發表於 12-3-18 09:34

在MC中, 把EMA_F跟EMA_S用print指令印出, 再跟eleader比對, 看看是否資料相同, 如果不同, 訊號進出點當然也會不同
頁: [1] 2 3
查看完整版本: 請問powerlanguage中的ema寫法