奇狐社區論壇
在這個頁面顯示本主題全部的 7 個文章

奇狐社區論壇 (http://www.chiefox.com.tw/bbs/index.php)
- 問題交流 (http://www.chiefox.com.tw/bbs/forumdisplay.php?forumid=28)
-- 過濾 (http://www.chiefox.com.tw/bbs/showthread.php?threadid=23535)


由 peter109 在 2022-12-25 07:16 發表:

過濾

條件A出現時 過濾B
B:IF(A,FILTERX(B,N),B);
不知哪錯了 沒能過濾掉B
煩請指正 謝謝您

__________________
至誠能勝天下至偽
至拙能勝天下至巧


由 cgjj 在 2022-12-25 19:44 發表:

回覆: 過濾

引用:
最初由 peter109 發表
條件A出現時 過濾B
B:IF(A,FILTERX(B,N),B);
不知哪錯了 沒能過濾掉B
煩請指正 謝謝您



FILTERX(X,N)
是當X滿足條件時,會將其前面N週期內的數據置為0 (不會改變當前此根)

跟您要的想法是不相同的!


由 peter109 在 2022-12-25 21:53 發表:

您說的我懂

就是要過濾掉前面的B
但結果卻沒過濾掉 因此 不知錯在哪了

我也嘗試過另設新變數的做法
AA:=IF(A,SETVAL(A,1,-N,1),0);
B:=IF(B AND AA,0,B);
結果也沒能如願

煩請指導可能出錯處 謝謝您

__________________
至誠能勝天下至偽
至拙能勝天下至巧


由 peter109 在 2022-12-25 22:22 發表:

這是 源碼 寫法不是上述A與B 但架構相同

__________________
至誠能勝天下至偽
至拙能勝天下至巧


由 peter109 在 2022-12-25 22:24 發表:

這是結果

__________________
至誠能勝天下至偽
至拙能勝天下至巧


由 cgjj 在 2022-12-25 23:23 發表:

引用:
最初由 peter109 發表
您說的我懂

就是要過濾掉前面的B
但結果卻沒過濾掉 因此 不知錯在哪了

我也嘗試過另設新變數的做法
AA:=IF(A,SETVAL(A,1,-N,1),0);
B:=IF(B AND AA,0,B);
結果也沒能如願

煩請指導可能出錯處 謝謝您



IF(A,FILTERX(B,N),B);

你說的沒濾掉,並非沒濾,也不是函數的問題
看來是因為,您組合應用 IF() 認知上的問題!

當不符合A時,該根位置取的是原始的B
當符合A時,該根位置取的是經FILTERX處理的B

X:=IF(A,FILTERX(B,N),B);

IF它是整個判斷計算完後,結果才會入存入X
您把X,換成B,也是相同~~
IF整個判斷計算完後,結果才會入存入新B中
該行計算中途,並不會拿到X(也就是新B),帶入中途後續的計算

您所想的
應該是累用前面的已新改變的B,接著去算出後面的B
如此的計算,是有用先前結果,續累算出下根結果~~
當有這種累算情況時,就必須採取迴圈做法,才能實現!

看看 EMA 自行計算的例子吧(有累算)
http://www.chiefox.com.tw/bbs/showt...=&threadid=9836


由 peter109 在 2022-12-26 06:17 發表:

收到 謝謝您

__________________
至誠能勝天下至偽
至拙能勝天下至巧


全部時間均為台灣時間, 現在時間為02:42
在這個頁面顯示本主題全部的 7 個文章


Powered by: vBulletin Version 2.3.0 - Copyright©2000-, Jelsoft Enterprises Limited.

簡愛洋行 製作 Copyright 2003-. All Rights Reserved.