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

奇狐社區論壇 (http://www.chiefox.com.tw/bbs/index.php)
- 問題交流 (http://www.chiefox.com.tw/bbs/forumdisplay.php?forumid=28)
-- [求救]如何能取得VALUEWHEN函數 (http://www.chiefox.com.tw/bbs/showthread.php?threadid=10651)


由 mowtua 在 2008-11-14 22:09 發表:

[求救]如何能取得VALUEWHEN函數

[求救] 如何能取得VALUEWHEN函數


謝謝


由 peter109 在 2008-11-15 10:15 發表:

先看valuewhen函數定義

VALUEWHEN(COND,DATA)當條件COND滿足時,取當時的DATA的值,否則取得VALUEWHEN的前一個值。

換成 奇狐的寫法
使用IF函數

IF(CONDITION,DATA1,DATA2);
當條件COND滿足時,取當時的DATA1的值,否則取得DATA2的值
這DATA1或者DATA2 都是您自己定義的

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


由 cgjj 在 2008-11-17 09:16 發表:

回覆: [求救]如何能取得VALUEWHEN函數

引用:
最初由 mowtua 發表
[求救] 如何能取得VALUEWHEN函數


謝謝



VALUEWHEN 在新版的奇狐中會提供(v5.1)
語法: ValueWhen( cond, data)

ValueWhen( 條件, Close);

相等於

REF(Close,BARSLAST(條件));


由 alpha 在 2008-11-17 17:16 發表:

版主您好:

ValueWhen( 條件, Close);

如果能夠分成

條件>0 時 ==> REF(Close,BARSLAST(條件);==> 由左向右畫

條件<0 時 ===> 由右向左畫 ===> 目前是要用 SetVal() 來實現 , 由右向左畫還蠻常用到的, 所以希望能有更簡潔明瞭的指令可取代 SetVal()

那 ValueWhen() 應該會更完美 , 而不是只能做 "單一方向 Ref()" 功用 , 也能夠做 Refx() 的方向

當然這樣設計也是會有缺點 , 缺點就是沒有辦法 "直接從指令名字" 看出他是向左畫 , 還是向右畫 , 必須觀察 "條件" 是大於0 還是<0 才能判斷

__________________
偶而是不是也感覺有些老
像個大人般的戀愛
有時心情糟
請你相信我在你身邊別忘了


由 cgjj 在 2008-11-17 18:21 發表:

引用:
最初由 alpha 發表
版主您好:

ValueWhen( 條件, Close);

如果能夠分成

條件>0 時 ==> REF(Close,BARSLAST(條件);==> 由左向右畫

條件<0 時 ===> 由右向左畫 ===> 目前是要用 SetVal() 來實現 , 由右向左畫還蠻常用到的, 所以希望能有更簡潔明瞭的指令可取代 SetVal()

那 ValueWhen() 應該會更完美 , 而不是只能做 "單一方向 Ref()" 功用 , 也能夠做 Refx() 的方向

當然這樣設計也是會有缺點 , 缺點就是沒有辦法 "直接從指令名字" 看出他是向左畫 , 還是向右畫 , 必須觀察 "條件" 是大於0 還是<0 才能判斷



以純畫水平線來說
使用 DRAWSL 是最方便的

DRAWSL(COND,PRICE,SLOPE,LEN,D)
 SLOPE 設 0
 LEN 決定長度
 D 可決定往左或右或雙向畫


由 cgjj 在 2008-11-17 18:28 發表:

若以設值來考量(水平線應用)

SetVal
由左向右設值 和 由右向左設值
都是可以的唷

SETVAL(X,Q,N,V)
方向由V值之正負值來決定


由 alpha 在 2008-11-17 19:45 發表:

(1)
沒錯哦
我是以設值來考量(水平線應用)
為了方便說明 , 才會用 "由左往右畫" 字眼

(2)
SetVal 是可以雙向 ,但是就是覺得他不夠直覺易用 ( 因為它是屬於萬用型 )

(3)
看到版主說奇狐要增加各 ValueWhen( 條件, Close); 指令, 又提到 它 = REF(Close,BARSLAST(條件);

REF(Close,BARSLAST(條件); 已經非常簡潔方便了 , 但是奇狐新版竟然還要增加各 ValueWhen( ) 來讓它 "更簡潔"
這讓我"聯想" 到若也能同時處理 " 由右向左設值" 那就更好了

舉例
http://www.chiefox.com.tw/bbs/showt...ighlight=SetVal

ck:=MOD(MINUTE,15)=0 or barpos=datacount;
sp:=ref(barslast(ck),1)+1;
MH:HHV(H,SP);
MH:=SETVAL(CK,MH,-SP+1,MH);
MH:=SETVAL(CK,MH,0,MH);

若 ValueWhen() 具備條件<0 時 ==> 由右向左設值 , 那寫法就如下

MH:= ValueWhen( -CK, MH) ; // 比用 SetVal 更易用明瞭

__________________
偶而是不是也感覺有些老
像個大人般的戀愛
有時心情糟
請你相信我在你身邊別忘了


由 cgjj 在 2008-11-18 08:46 發表:

引用:
最初由 alpha 發表
..........
若 ValueWhen() 具備條件<0 時 ==> 由右向左設值 , 那寫法就如下
MH:= ValueWhen( -CK, MH) ; // 比用 SetVal 更易用明瞭



ValueWhen 是取值不是設值唷
設值還是用 SetVal 靈活些

註:
ValueWhen 是博庭那邊主動加入新版的
SetVal 則是之前我們建議博庭加入的


由 mowtua 在 2008-11-21 00:13 發表:

ck:=MOD(MINUTE,15)=0 or barpos=datacount;
sp:=ref(barslast(ck),1)+1;
MH:HHV(H,SP),COLORYELLOW;
MH2:LLV(L,SP),COLORYELLOW;


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


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

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