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

奇狐社區論壇 (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=18128)


由 vino8210 在 2013-11-11 15:45 發表:

[求救]條件成立觸發次數的問題

大大您好~~
請問類似C=C++這種 COUNTER要如何實行?
例如我的買進條件成立五次,我想在K棒下面標示1,2,~,5並且只顯示第一次觸發的買進紅箭頭即可!!一直到賣出訊號觸發將COUNTER歸零,等下一波買進再由1開始編號,請問該如何寫?

PS: 嘗試過BARSLAST(CK)+1,BARSSINCE,BARSCOUNTER似乎不可行!

PS: DRAWNUMBER可以執行,只是1~5數值跟CK歸零我不會做 >"<

PS:附帶請教~~顯示日期格式為1131109,我們有辦法只顯示1109或是11月9日這種嗎?(嘗試過DATE-1130000但是2012年就沒輒了)(也嘗試過DATE/10000 製造出113.1109, 但是如何濾掉整數部分又想不出來了>"< )

懇請板大幫幫忙, 小弟感激不盡


由 cgjj 在 2013-11-11 20:56 發表:

回覆: [求救]條件成立觸發次數的問題

引用:
最初由 vino8210 發表
大大您好~~
請問類似C=C++這種 COUNTER要如何實行?
例如我的買進條件成立五次,我想在K棒下面標示1,2,~,5並且只顯示第一次觸發的買進紅箭頭即可!!一直到賣出訊號觸發將COUNTER歸零,等下一波買進再由1開始編號,請問該如何寫?

PS: 嘗試過BARSLAST(CK)+1,BARSSINCE,BARSCOUNTER似乎不可行!

PS: DRAWNUMBER可以執行,只是1~5數值跟CK歸零我不會做 >"<

PS:附帶請教~~顯示日期格式為1131109,我們有辦法只顯示1109或是11月9日這種嗎?(嘗試過DATE-1130000但是2012年就沒輒了)(也嘗試過DATE/10000 製造出113.1109, 但是如何濾掉整數部分又想不出來了>"<)

懇請板大幫幫忙, 小弟感激不盡



目前的描述, 模糊空間較大
建議用實例圖形標示說明一下您的需求
這樣比較能正確的協助您處理


日期格式為1131109 只顯示1109的方法, 如下:(用餘數處理)
MOD(DATE,10000);


由 vino8210 在 2013-11-12 22:21 發表:

[求助]條件觸發次數

親愛板大晚安~~多謝指導~~
上次描述不夠清楚,讓您傷眼,十分抱歉~為了貼圖清楚,所以不使用均線交叉,只用跳空缺口示意我的困難點,這當然不能當成買賣點啦^^
***簡單描述程式如下**************************
GAPE_UP := IF (L>ref(H,1), L-ref(H,1), 0);
GAPE_DOWN :=IF (H<ref(L,1), ref(L,1)-H, 0);
DRAWICON(GAPE_UP,LOW*0.9995, 4),align1;
********以下程式省略煩請參考附圖*********
<問題一>
現在小弟卡在條件含數不合法( XXXX 無法判別GAPE_UP,系統無法使用等號或不等式), 所以無法弄出 counter來顯示或判斷!!
IF XXXX THEN begin
UP := UP+1;
DOWN;=0;
end;

<問題二>
若使用 IF ( 條件成立, 則同時做2件事或3件事 , , );
如上描述, 可以有辦法辦到嗎?

<問題三>
突然想到 HHV( H,2) 表示要取今天跟昨天所出現的最高價~~但若我想忽略今天跟昨天, 想取前天跟大前天的最高價該如何寫呢?

感謝板大不辭辛勞看到這邊, 真不好意思^^||


由 cgjj 在 2013-11-13 13:46 發表:

回覆: [求助]條件觸發次數

引用:
最初由 vino8210 發表
親愛板大晚安~~多謝指導~~
上次描述不夠清楚,讓您傷眼,十分抱歉~為了貼圖清楚,所以不使用均線交叉,只用跳空缺口示意我的困難點,這當然不能當成買賣點啦^^
***簡單描述程式如下**************************
GAPE_UP := IF (L>ref(H,1), L-ref(H,1), 0);
GAPE_DOWN :=IF (H<ref(L,1), ref(L,1)-H, 0);
DRAWICON(GAPE_UP,LOW*0.9995, 4),align1;
********以下程式省略煩請參考附圖*********
<問題一>
現在小弟卡在條件含數不合法( XXXX 無法判別GAPE_UP,系統無法使用等號或不等式), 所以無法弄出 counter來顯示或判斷!!
IF XXXX THEN begin
UP := UP+1;
DOWN;=0;
end;

<問題二>
若使用 IF ( 條件成立, 則同時做2件事或3件事 , , );
如上描述, 可以有辦法辦到嗎?

<問題三>
突然想到 HHV( H,2) 表示要取今天跟昨天所出現的最高價~~但若我想忽略今天跟昨天, 想取前天跟大前天的最高價該如何寫呢?

感謝板大不辭辛勞看到這邊, 真不好意思^^||



答1:
GAPE_UP := IF (L>ref(H,1), L-ref(H,1), 0);
GAPE_DOWN :=IF (H<ref(L,1), ref(L,1)-H, 0);
BB:=GAPE_UP or barpos=0;
SS:=GAPE_DOWN or barpos=0;
CK:=BB-SS;
CK:=ref(CK,barslast(CK<>0));
CK:=if(CK<>ref(CK,1) or barpos=lbound(CK),CK,0);
GAPE_UP:CK=1;
GAPE_DOWN:CK=-1;

答3:
ref(HHV(H,2),2);

答2:
if(Cond,A,B) 這種 IF 一次僅能做一件事
改用下面的 IF 搭配迴圈處理數列, 可以一次處理很多事
if ... then begin
............
end else begin
............
end;

這幾篇文章建議有空看看 (對於學寫奇狐程式會有些幫助)
http://www.chiefox.com.tw/bbs/showt...=&threadid=9991
http://www.chiefox.com.tw/bbs/showt...=&threadid=9836
http://www.chiefox.com.tw/bbs/showt...&threadid=17493


由 vino8210 在 2013-11-13 21:40 發表:

[~~真神人][無法描述我的感激之心情]

親愛的版大~~第一時間看到您一收盤就即時回覆, 實在非常感激您的熱誠!! 坦白說~~您比許多教授 博士還令人尊敬^^


由 vino8210 在 2013-11-13 21:42 發表:

小弟趕緊研讀囉!!再次表達感謝之意!!祝您事事順心賺大錢!


由 cgjj 在 2013-11-15 09:42 發表:

引用:
最初由 vino8210 發表
小弟趕緊研讀囉!!再次表達感謝之意!!祝您事事順心賺大錢!


不客氣, 謝謝


由 vino8210 在 2013-11-15 15:28 發表:

延續請教

版大您好~~可否再請教一下:

<問題一>
若是想加入一個變數INDEX來指示多空,請問該加入哪些條件?
例如:
8月29日 ~ 9月30日: INDEX=1(這一個月每天INDEX都是1)
9月30日~ (下一個CK=1出現) : INDEX= -1
(下一個CK=1出現)~ INDEX=1

<問題二>
若是想計算累進次數,應該如何改寫?
例如:
8/29日 GAPE_UP=1
9/16日 GAPE_UP=2

9/30日 GAPE_DOWN=1並且重置GAPE_UP=0
10/14日 GAPE_DOWN=2
11/04日 GAPE_DOWN=3


再勞煩您指導了,感激不盡^^


由 cgjj 在 2013-11-15 16:16 發表:

回覆: 延續請教

引用:
最初由 vino8210 發表
版大您好~~可否再請教一下:

<問題一>
若是想加入一個變數INDEX來指示多空,請問該加入哪些條件?
例如:
8月29日 ~ 9月30日: INDEX=1(這一個月每天INDEX都是1)
9月30日~ (下一個CK=1出現) : INDEX= -1
(下一個CK=1出現)~ INDEX=1

<問題二>
若是想計算累進次數,應該如何改寫?
例如:
8/29日 GAPE_UP=1
9/16日 GAPE_UP=2

9/30日 GAPE_DOWN=1並且重置GAPE_UP=0
10/14日 GAPE_DOWN=2
11/04日 GAPE_DOWN=3


再勞煩您指導了,感激不盡^^



答1:

將這兩行
CK:=ref(CK,barslast(CK<>0));
CK:=if(CK<>ref(CK,1) or barpos=lbound(CK),CK,0);
改為
CK:=ref(CK,barslast(CK<>0));
INDEX:CK;
CK:=if(CK<>ref(CK,1) or barpos=lbound(CK),CK,0);
就可取得您要的INDEX值



答2:

一進一出算一波
引用:
最初由 cgjj 發表
答1:
GAPE_UP := IF (L>ref(H,1), L-ref(H,1), 0);
GAPE_DOWN :=IF (H<ref(L,1), ref(L,1)-H, 0);
BB:=GAPE_UP or barpos=0;
SS:=GAPE_DOWN or barpos=0;
CK:=BB-SS;
CK:=ref(CK,barslast(CK<>0));
CK:=if(CK<>ref(CK,1) or barpos=lbound(CK),CK,0);
GAPE_UP:CK=1;
GAPE_DOWN:CK=-1;

前面的處理, 已將 GAPE_UP 處理成, 在一波中僅剩一個訊號
同波並沒有第二個GAPE_UP 讓您累進


由 vino8210 在 2013-11-16 20:04 發表:

[長智慧囉]

版大您好,關於所指導的五行(嚴格說來只有三行),看似單純,實則恐怖!
(1) BB:=GAPE_UP or barpos=0;
(2) SS:=GAPE_DOWN or barpos=0;
(3) CK:=BB-SS;
(4) CK:=ref(CK,barslast(CK<>0));
(5) CK:=if(CK<>ref(CK,1) or barpos=lbound(CK),CK,0);
花了好幾天,終於心領神會了,多謝您的幫忙,使小弟更上一層樓!!
可否請教:
<問題一>
行(1)(2)是將數值改成(1,0)(TRUE,FALSE)的技巧.那未來類似的地方我可否寫成 BB:=GAPE_UP or 0 ;呢?會不會有不可預期的事件發生呢?
或是將barpos=0;保留~~但亂寫成 barpos=38; barpos=49;之類的不會成真的數值呢?

<問題二>
行(5) 可否偷懶寫成CK:=if(CK<>ref(CK,1) ,CK,0);會不會有不可預期的事件發生呢? 原式lbound(CK)實在是想不懂耶>"<可否指點一下這個東西的作用呢?這會不會 永遠是 2 之類的數值 ?但我想不通為何是2~~

感激不盡


由 cgjj 在 2013-11-18 09:30 發表:

回覆: [長智慧囉]

引用:
最初由 vino8210 發表
版大您好,關於所指導的五行(嚴格說來只有三行),看似單純,實則恐怖!
(1) BB:=GAPE_UP or barpos=0;
(2) SS:=GAPE_DOWN or barpos=0;
(3) CK:=BB-SS;
(4) CK:=ref(CK,barslast(CK<>0));
(5) CK:=if(CK<>ref(CK,1) or barpos=lbound(CK),CK,0);
花了好幾天,終於心領神會了,多謝您的幫忙,使小弟更上一層樓!!
可否請教:
<問題一>
行(1)(2)是將數值改成(1,0)(TRUE,FALSE)的技巧.那未來類似的地方我可否寫成 BB:=GAPE_UP or 0 ;呢?會不會有不可預期的事件發生呢?
或是將barpos=0;保留~~但亂寫成 barpos=38; barpos=49;之類的不會成真的數值呢?

<問題二>
行(5) 可否偷懶寫成CK:=if(CK<>ref(CK,1) ,CK,0);會不會有不可預期的事件發生呢? 原式lbound(CK)實在是想不懂耶>"<可否指點一下這個東西的作用呢?這會不會 永遠是 2 之類的數值 ?但我想不通為何是2~~

感激不盡



答1:
不能再簡化為 GAPE_UP or 0
必須是 GAPE_UP or barpos=0
因為零不是數列, 不會產生效果
它並不是將數值改成(1,0)的技巧

or BARPOS=0 是一種取巧的寫法, 詳見這邊的解說
http://www.chiefox.com.tw/bbs/showt...60805#post60805


答2:
or barpos=lbound(CK)
是用來處理 "訊號首次成立的那根"
也就是 CK:=BB-SS; 首次不等於零的那根
少了該行, 首次成立的那根, 訊號會消失掉


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


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

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