奇狐社區論壇
在這個頁面顯示本主題全部的 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=24163)


由 Koogi 在 2024-12-26 18:37 發表:

[問題]畫水平線後,條件消除後怎麼讓它消失

假設我有一個變數TT,可能是1或-1
我現在是看下一根的值畫水平紅線或綠線
要等到K棒退出畫面,線才會不見

有沒有可能改成,在若干K棒後,若TT值變了,就讓已經畫出的線消失?

謝謝

S1:=REFX(TT,1)=1;
S2:=REFX(TT,1)=-1;

DRAWSL(S1,C,0,0,0) colorred;
DRAWSL(S2,C,0,0,0) colorgreen;


由 cgjj 在 2024-12-27 08:34 發表:

回覆: [問題]畫水平線後,條件消除後怎麼讓它消失

引用:
最初由 Koogi 發表
假設我有一個變數TT,可能是1或-1
我現在是看下一根的值畫水平紅線或綠線
要等到K棒退出畫面,線才會不見

有沒有可能改成,在若干K棒後,若TT值變了,就讓已經畫出的線消失?

謝謝

S1:=REFX(TT,1)=1;
S2:=REFX(TT,1)=-1;

DRAWSL(S1,C,0,0,0) colorred;
DRAWSL(S2,C,0,0,0) colorgreen;



DRAWSL 的 S1 和 S2 是條件
依據的是當前計算的這根,您所指定的條件有無成立來畫線,成立位置為畫線起點

後續K棒TT值改變
但劃線起點TT值沒變(條件仍成立),是不會讓它的畫線消失的
因為畫不畫線,是依據當前計算的那根之結果

故重點在於條件
例如將條件設為 "只在近期最後一個 S1 和 S2 成立之處畫線"
那麼過去的線就不會被畫出

所以您要去思考,什麼樣的條件才能做到合乎您要觀看的效果


由 Koogi 在 2024-12-27 08:59 發表:

回覆: 回覆: [問題]畫水平線後,條件消除後怎麼讓它消失

引用:
最初由 cgjj 發表
DRAWSL 的 S1 和 S2 是條件
依據的是當前計算的這根,您所指定的條件有無成立來畫線,成立位置為畫線起點

後續K棒TT值改變
但劃線起點TT值沒變(條件仍成立),是不會讓它的畫線消失的
因為畫不畫線,是依據當前計算的那根之結果

故重點在於條件
例如將條件設為 "只在近期最後一個 S1 和 S2 成立之處畫線"
那麼過去的線就不會被畫出

所以您要去思考,什麼樣的條件才能做到合乎您要觀看的效果




謝謝解釋

另外再請教一下
如果我想改成用DRAWLINE畫水平線段
達成TT條件開始,TT改變停止,要怎麼寫price2來抓當初達成條件的收盤價以劃出水平線呢?

DRAWLINE(TT=1,C,TT-REF(TT,1)<>0,PRICE2,0)


由 Koogi 在 2024-12-27 09:17 發表:

回覆: 回覆: [問題]畫水平線後,條件消除後怎麼讓它消失

引用:
最初由 cgjj 發表
DRAWSL 的 S1 和 S2 是條件
依據的是當前計算的這根,您所指定的條件有無成立來畫線,成立位置為畫線起點

後續K棒TT值改變
但劃線起點TT值沒變(條件仍成立),是不會讓它的畫線消失的
因為畫不畫線,是依據當前計算的那根之結果

故重點在於條件
例如將條件設為 "只在近期最後一個 S1 和 S2 成立之處畫線"
那麼過去的線就不會被畫出

所以您要去思考,什麼樣的條件才能做到合乎您要觀看的效果



我原本的想法是用FOR迴圈,讓他一直往後抓,直到數值改變

FOR i=1 to 100 DO BEGIN
S1:=REFX(TT,i)=1;
DRAWSL(S1,C,0,0,0) colorred;
IF REFX(TT,i)-REFX(TT,i-1)<>0 THEN BREAK;

但他說語法錯誤,不知道該怎麼修改
還有這樣BREAK後,i似乎會停留在中斷時的數值?下次不會再從1開始?


由 cgjj 在 2024-12-27 09:47 發表:

回覆: 回覆: 回覆: [問題]畫水平線後,條件消除後怎麼讓它消失

引用:
最初由 Koogi 發表
謝謝解釋

另外再請教一下
如果我想改成用DRAWLINE畫水平線段
達成TT條件開始,TT改變停止,要怎麼寫price2來抓當初達成條件的收盤價以劃出水平線呢?

DRAWLINE(TT=1,C,TT-REF(TT,1)<>0,PRICE2,0)



看看這樣是否為您想要的效果?

TTSP:=barslast(TT<>ref(TT,1) or barpos=lbound(TT));
PARTLINE(TT=1 and TTSP>0,ref(C,TTSP)) colorred;
PARTLINE(TT=-1 and TTSP>0,ref(C,TTSP)) colorgreen;


由 cgjj 在 2024-12-27 09:50 發表:

回覆: 回覆: 回覆: [問題]畫水平線後,條件消除後怎麼讓它消失

引用:
最初由 Koogi 發表
我原本的想法是用FOR迴圈,讓他一直往後抓,直到數值改變

FOR i=1 to 100 DO BEGIN
S1:=REFX(TT,i)=1;
DRAWSL(S1,C,0,0,0) colorred;
IF REFX(TT,i)-REFX(TT,i-1)<>0 THEN BREAK;

但他說語法錯誤,不知道該怎麼修改
還有這樣BREAK後,i似乎會停留在中斷時的數值?下次不會再從1開始?



BREAK 後就跳出迴圈了,不會再重新開始!

奇狐有兩種IF,請參考一下這篇的說明
http://www.chiefox.com.tw/bbs/showt...93788#post93788


由 Koogi 在 2024-12-27 10:03 發表:

回覆: 回覆: 回覆: 回覆: [問題]畫水平線後,條件消除後怎麼讓它消失

引用:
最初由 cgjj 發表
BREAK 後就跳出迴圈了,不會再重新開始!

奇狐有兩種IF,請參考一下這篇的說明
http://www.chiefox.com.tw/bbs/showt...93788#post93788



感謝以上兩篇回答,我再研究研究


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


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

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