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

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


由 a9681054 在 2015-01-16 15:13 發表:

請教劃水平線向右延長

S1:=C>ref(C,1) and C>refx(C,1);
S2:=C<ref(C,1) and C<refx(C,1);
DRAWSL(S1 ,C,0,10,3)colorred;//波峰劃水平線
DRAWSL(S2 ,C,0,10,3)colorgreen;//波谷劃水平線

需求說明:
1)主圖為價位線
2)當價位線比收盤價小時,該水平線即停止,否則繼續延伸.
3)當價位線比收盤價大時,該水平線即停止,否則繼續延伸.

以上麻煩版主協助,謝謝~

__________________
chiu


由 cgjj 在 2015-01-16 16:55 發表:

回覆: 請教劃水平線向右延長

引用:
最初由 a9681054 發表
S1:=C>ref(C,1) and C>refx(C,1);
S2:=C<ref(C,1) and C<refx(C,1);
DRAWSL(S1 ,C,0,10,3)colorred;//波峰劃水平線
DRAWSL(S2 ,C,0,10,3)colorgreen;//波谷劃水平線

需求說明:
1)主圖為價位線
2)當價位線比收盤價小時,該水平線即停止,否則繼續延伸.
3)當價位線比收盤價大時,該水平線即停止,否則繼續延伸.

以上麻煩版主協助,謝謝~



該價位線會剛好等於收盤價的情況很少
除起畫點外,任何時間 2) 和 3) 幾乎必定其中會有一個成立
也就是說,有畫幾乎等於沒畫,請定義合理條件!!


由 a9681054 在 2015-01-16 22:20 發表:

因近期剛開始在學習水平線指標寫作,補上需求圖片可能會比較清楚,有勞版主多費心指導~

__________________
chiu


由 a9681054 在 2015-01-16 22:32 發表:

對不起,上一張圖片有誤,以第二張為主

__________________
chiu


由 cgjj 在 2015-01-19 09:18 發表:

引用:
最初由 a9681054 發表
對不起,上一張圖片有誤,以第二張為主


每個成立位置都要往後追觸碰點,此公式計算量較大
建議設定 MaxKBar, 僅畫近期N根K棒
MaxKBar 數值越大跑越慢, 設為零代表全部

原碼:

CC
:=C;
S1:=C>ref(C,1) and C>refx(C,1);
S2:=C<ref(C,1) and C<refx(C,1);
SS:=S1-S2DW:=C*0;
MaxKBar:=0//僅畫近期N根K棒, 零則畫全部
StNo:=datacount-MaxKBar+1;
if 
StNo<lbound(SS) or MaxKBar=0 then StNo:=lbound(SS);
for 
iStNo to datacount do begin
  
if SS[i] <> 0 then begin
    
for j=i+1 to datacount do begin
      
if SS[i]=and CC[j]>CC[i] or SS[i]=-and CC[j]<CC[ithen begin
        DW
[i]:=j-i; break;
      
end;
    
end;
  
end;
end;

DRAWSL(SS>and DW>,C,0,DW,3colorred pxdn2;//波峰劃水平線
DRAWSL(SS<and DW>0,C,0,DW,3colorgreen pxdn2;//波谷劃水平線


由 a9681054 在 2015-01-19 14:03 發表:

版主你好,
感謝你的回覆,已有達到原初步的想法,其實我最終是想用k線並不是價位,我的主圖是moon這個指標,等我想好定義再跟版主繼續請教~

__________________
chiu


由 a9681054 在 2015-01-19 18:29 發表:

版主你好,
大致需求想法整理如下:
1)當k棒碰觸或上穿S1位置(粗線),原線維持不改變.
2)當符合S1條件時,水平線向右延伸,直至右方K棒碰觸或上穿延伸線時(細線),下一根K棒即停止劃線.
3)當k棒碰觸或下穿S2位置(粗線),原線維持不改變.
2)當符合S2條件時,水平線向右延伸,直至右方K棒碰觸或下穿延伸線時(細線),下一根K棒即停止劃線.

源碼:
//MOON 公式
Var4:=(LOW+HIGH+CLOSE)/3;
操作:= MA(Var4,5),colorGREEN,linethick2;
多頭關卡:HHV(操作,13),colorMAGENTA,linethick2;
空頭關卡:LLV(操作,13),colorcyan,linethick2;


//劃水平線
S1:=空頭關卡=REF(空頭關卡,1);
S2:=多頭關卡=REF(多頭關卡,1);

DRAWSL(S1 ,空頭關卡,0,10,3)colorblue pxdn3 ;//劃水平線,3表示劃線向右
DRAWSL(S2 ,多頭關卡,0,10,3)colorred pxdn3 ;//劃水平線,3表示劃線向右


註:
需求如圖片中的下半部

以上煩請版主再次協助,謝謝~

__________________
chiu


由 a9681054 在 2015-01-19 21:57 發表:

更正一下內容:
1)當符合S1條件時,水平線向右延伸出(細線)
2)當k棒碰觸或上穿S1位置(粗線),原粗線維持不改變,水平線繼續向右延伸(細線)
3)直至右方K棒碰觸或上穿延伸線時(細線),下一根K棒即停止劃線.

4)當符合S2條件時,水平線向右延伸出(細線)
5)當k棒碰觸或下穿S1位置(粗線),原粗線維持不改變,水平線繼續向右延伸(細線)
6)直至右方K棒碰觸或下穿延伸線時(細線),下一根K棒即停止劃線.

__________________
chiu


由 a9681054 在 2015-01-19 22:01 發表:

對不起,字打錯再更正一下內容:
1)當符合S1條件時,水平線向右延伸出(細線)
2)當k棒碰觸或上穿S1位置(粗線),原粗線維持不改變,水平線繼續向右延伸出(細線)
3)直至右方K棒碰觸或上穿延伸線時(細線),下一根K棒即停止劃線.

4)當符合S2條件時,水平線向右延伸出(細線)
5)當k棒碰觸或下穿S2位置(粗線),原粗線維持不改變,水平線繼續向右延伸出(細線)
6)直至右方K棒碰觸或下穿延伸線時(細線),下一根K棒即停止劃線.

__________________
chiu


由 cgjj 在 2015-01-20 08:35 發表:

引用:
最初由 a9681054 發表
版主你好,
大致需求想法整理如下:
1)當k棒碰觸或上穿S1位置(粗線),原線維持不改變.
2)當符合S1條件時,水平線向右延伸,直至右方K棒碰觸或上穿延伸線時(細線),下一根K棒即停止劃線.
3)當k棒碰觸或下穿S2位置(粗線),原線維持不改變.
2)當符合S2條件時,水平線向右延伸,直至右方K棒碰觸或下穿延伸線時(細線),下一根K棒即停止劃線.

源碼:
//MOON 公式
Var4:=(LOW+HIGH+CLOSE)/3;
操作:= MA(Var4,5),colorGREEN,linethick2;
多頭關卡:HHV(操作,13),colorMAGENTA,linethick2;
空頭關卡:LLV(操作,13),colorcyan,linethick2;


//劃水平線
S1:=空頭關卡=REF(空頭關卡,1);
S2:=多頭關卡=REF(多頭關卡,1);

DRAWSL(S1 ,空頭關卡,0,10,3)colorblue pxdn3 ;//劃水平線,3表示劃線向右
DRAWSL(S2 ,多頭關卡,0,10,3)colorred pxdn3 ;//劃水平線,3表示劃線向右


註:
需求如圖片中的下半部

以上煩請版主再次協助,謝謝~



引用:
最初由 a9681054 發表
對不起,字打錯再更正一下內容:
1)當符合S1條件時,水平線向右延伸出(細線)
2)當k棒碰觸或上穿S1位置(粗線),原粗線維持不改變,水平線繼續向右延伸出(細線)
3)直至右方K棒碰觸或上穿延伸線時(細線),下一根K棒即停止劃線.

4)當符合S2條件時,水平線向右延伸出(細線)
5)當k棒碰觸或下穿S2位置(粗線),原粗線維持不改變,水平線繼續向右延伸出(細線)
6)直至右方K棒碰觸或下穿延伸線時(細線),下一根K棒即停止劃線.



水平線若是穿越跳空的K棒,現在無K棒區域,如何處理


由 a9681054 在 2015-01-20 09:27 發表:

版主你好,
這樣的情況,就比照第3及6定義,當延伸(細線)被直接跳空向上或向下穿越,下一根k棒即停止劃線.

__________________
chiu


由 cgjj 在 2015-01-20 10:28 發表:

引用:
最初由 a9681054 發表
版主你好,
這樣的情況,就比照第3及6定義,當延伸(細線)被直接跳空向上或向下穿越,下一根k棒即停止劃線.




還有一個問題
S1:=空頭關卡=REF(空頭關卡,1);
S2:=多頭關卡=REF(多頭關卡,1);
這邊的 S1 與 S2 有連續好幾根成立的狀況
而且會有 S1=S2 的情況


並非前面的這種波峰波谷狀態:
S1:=C>ref(C,1) and C>refx(C,1);
S2:=C<ref(C,1) and C<refx(C,1);

請再次確認定義是否OK


由 a9681054 在 2015-01-20 11:01 發表:

版主你好,
你說的沒有錯,會有連續好幾根符合S1及S2條件情況,那就以第2及5來處理.

至於S1=S2情況,也是有可能發生,依我的了解前波或更早的波會與當下重疊,但本波應該較無此問題存在,不過這是我個人見解,程式方面實在不知如何表達,還望版主協助,謝謝~

__________________
chiu


由 cgjj 在 2015-01-20 11:16 發表:

引用:
最初由 a9681054 發表
版主你好,
你說的沒有錯,會有連續好幾根符合S1及S2條件情況,那就以第2及5來處理.

至於S1=S2情況,也是有可能發生,依我的了解前波或更早的波會與當下重疊,但本波應該較無此問題存在,不過這是我個人見解,程式方面實在不知如何表達,還望版主協助,謝謝~



舉例來說
當有連續好幾根符合S1時
不同K棒的 S1 繪畫之延伸水平線會有相疊的情況
畫面上可能會導致無法分辯是誰的畫的線
進而無法比對


由 a9681054 在 2015-01-20 11:26 發表:

版主你好,
當開始符合S1及S2時,那劃線就從條件成立時的前一根(即空頭關卡及多頭關卡走平時前一根)開始劃線,是否可解決你說的問題?

__________________
chiu


由 cgjj 在 2015-01-20 11:44 發表:

引用:
最初由 a9681054 發表
版主你好,
當開始符合S1及S2時,那劃線就從條件成立時的前一根(即空頭關卡及多頭關卡走平時前一根)開始劃線,是否可解決你說的問題?



您先在原程式底端,加入這三行去觀察就知道狀況了
與先前提的 波峰波谷 差異非常大

VERTLINE(S1) colorred;
VERTLINE(S2) colorgreen;
VERTLINE(S1 and S2) coloryellow;

成立的位置非常多.....
多到可能會浪費許多的 CPU 畫線
而且很多畫出的線,最後都被疊掉無法觀看
無法觀看=沒有意義,讓電腦CPU白白浪費許多運算


由 a9681054 在 2015-01-20 12:35 發表:

版主你好,
可能是我對需求表達不是很好,我加上圖片,你看這樣是否OK?

__________________
chiu


由 a9681054 在 2015-01-20 12:38 發表:

補上圖片

__________________
chiu


由 cgjj 在 2015-01-20 12:59 發表:

引用:
最初由 a9681054 發表
補上圖片


您先把這三行套上去比對吧~~
VERTLINE(S1) colorred;
VERTLINE(S2) colorgreen;
VERTLINE(S1 and S2) coloryellow;

看看畫面是何樣子,再提出吧


由 a9681054 在 2015-01-20 13:05 發表:

版主你好,
有套用過是產生垂直線,並不是我想要的,
對於需求我自己再手劃,還是很感謝你的回覆~

__________________
chiu


由 cgjj 在 2015-01-20 13:22 發表:

引用:
最初由 a9681054 發表
版主你好,
有套用過是產生垂直線,並不是我想要的,
對於需求我自己再手劃,還是很感謝你的回覆~



您的定義為:
S1:=空頭關卡=REF(空頭關卡,1);
S2:=多頭關卡=REF(多頭關卡,1);
DRAWSL(S1 ,空頭關卡,0,10,3)colorblue pxdn3 ;//劃水平線,3表示劃線向右
DRAWSL(S2 ,多頭關卡,0,10,3)colorred pxdn3 ;//劃水平線,3表示劃線向右

S1 或 S2 成立時(起點),會向右畫水平線

我給的這三行
VERTLINE(S1) colorred;
VERTLINE(S2) colorgreen;
VERTLINE(S1 and S2) coloryellow;

就是要你去觀察
有多少畫線的起點(每一個垂直線都是)
還有多少個,兩者同時成立的地方(黃色垂直線)

若您看清楚了
就能知道我說的 "與先前提的 波峰波谷 差異非常大"


由 a9681054 在 2015-01-20 14:53 發表:

版主你好,
想法就是當多頭及空頭關卡(重點走平時),向右劃延伸水平線,未來走勢再依條件繼續劃或停止.
我的源碼輸出若將drawsl裡的長度設為10,只輸出固定週期10的直線,設為0為無限延伸,但這都不是我想要的.
所以想設一些條件讓它自動繼續劃或停止,只是不曉得程式該如何表達,論壇也找過水平線的討論,初學階段尚請版主協助,版主是否有何方法可以協助,謝謝~

__________________
chiu


由 a9681054 在 2015-01-20 15:48 發表:

版主,
抱歉,剛再檢查一下的圖形,我原需求應該有誤
~
重新定義如下:
1)當多頭關卡開始下彎時,水平線才接續向右延伸出(細線)
2)當k棒碰觸或上穿或跳空向上S1位置(粗線),原粗線維持不改變,水平線繼續向右延伸出(細線)
3)直至右方K棒碰觸或上穿或跳空向上延伸線時(細線),下一根K棒即停止劃線.

4)當空頭關卡開始上升時,水平線才接續向右延伸出(細線)
5)當k棒碰觸或下穿或跳空向下S2位置(粗線),原粗線維持不改變,水平線繼續向右延伸出(細線)
6)直至右方K棒碰觸或下穿或跳空延伸線時(細線),下一根K棒即停止劃線.

新的源碼:
//MOON 公式
Var4:=(LOW+HIGH+CLOSE)/3;
操作:= MA(Var4,5),colorGREEN,linethick2;
多頭關卡:HHV(操作,21),colorMAGENTA,linethick2;
空頭關卡:LLV(操作,10),colorcyan,linethick2;


//劃水平線
S1:=空頭關卡=REF(空頭關卡,1);
S2:=多頭關卡=REF(多頭關卡,1);

DRAWSL(S1 ,空頭關卡,0,10,3)colorblue pxdn3 ;//劃水平線,3表示劃線向右
DRAWSL(S2 ,多頭關卡,0,10,3)colorred pxdn3 ;//劃水平線,3表示劃線向右

__________________
chiu


由 cgjj 在 2015-01-20 15:56 發表:

引用:
最初由 a9681054 發表
版主你好,
想法就是當多頭及空頭關卡(重點走平時),向右劃延伸水平線,未來走勢再依條件繼續劃或停止.
我的源碼輸出若將drawsl裡的長度設為10,只輸出固定週期10的直線,設為0為無限延伸,但這都不是我想要的.
所以想設一些條件讓它自動繼續劃或停止,只是不曉得程式該如何表達,論壇也找過水平線的討論,初學階段尚請版主協助,版主是否有何方法可以協助,謝謝~



重點不在於畫多長或畫到哪邊停止 ....

現在的問題是
符合的畫線起點超級多, 計算量太龐大(都要向右追) ....
寫出來盤中要跑,CPU也非常費力
不解決,硬把程式寫出來,算不動也無意義 ....

其實,您可去想想,多頭及空頭關卡重點走平時
有沒有必要每一個連續走平的位置, 都要當起點畫線
是否僅用連續走平的最末根來畫即可

重點在於,您要先把起點超級多的問題,先處理掉
規則是您定義的,要如何取捨您要自己抉擇


由 a9681054 在 2015-01-20 16:22 發表:

版主你好,
你說到重點了,就是從連續走平的最末根來畫即可,麻煩你了~

__________________
chiu


由 cgjj 在 2015-01-21 10:12 發表:

引用:
最初由 a9681054 發表 2015-01-20 12:38
補上圖片


這個圖片與前面所述之下列內容不相符合:


//MOON 公式
Var4:=(LOW+HIGH+CLOSE)/3;
操作:= MA(Var4,5),colorGREEN,linethick2;
多頭關卡:HHV(操作,13),colorMAGENTA,linethick2;
空頭關卡:LLV(操作,13),colorcyan,linethick2;

//劃水平線
S1:=空頭關卡=REF(空頭關卡,1);
S2:=多頭關卡=REF(多頭關卡,1);

1)當符合S1條件時,水平線向右延伸出(細線)
2)當k棒碰觸或上穿S1位置(粗線),原粗線維持不改變,水平線繼續向右延伸(細線)
3)直至右方K棒碰觸或上穿延伸線時(細線),下一根K棒即停止劃線.

4)當符合S2條件時,水平線向右延伸出(細線)
5)當k棒碰觸或下穿S1位置(粗線),原粗線維持不改變,水平線繼續向右延伸(細線)
6)直至右方K棒碰觸或下穿延伸線時(細線),下一根K棒即停止劃線.


該圖片中僅有一條紅綠交替的線

但給予的定義
多頭關卡和空頭關卡卻為兩條不會交會的紅綠線

請修正圖片所畫之線,並再次檢驗寫規則是否正確無誤


由 a9681054 在 2015-01-21 11:38 發表:

版主你好,
我已修正了源碼、圖片及規則,劃線起點就從多頭及空頭關卡最末根開始劃,有勞版主了,謝謝~

//MOON
Var4:=(LOW+HIGH+CLOSE)/3;
操作:= MA(Var4,5),colorGREEN,linethick2;
多頭關卡:HHV(操作,21)COLORBLACK,linethick2;
空頭關卡:LLV(操作,10)COLORBLACK,linethick2;


//劃水平線
S1:=空頭關卡=REF(空頭關卡,1);
S2:=多頭關卡=REF(多頭關卡,1);
PARTLINE(S1,空頭關卡)COLORCYAN, LINETHICK2;
PARTLINE(S2,多頭關卡)COLORRED, LINETHICK2;

__________________
chiu


由 a9681054 在 2015-01-21 11:44 發表:

版主你好,
補上新的規則如下:

1)當多頭關卡開始下彎時,水平線才接續向右延伸出(細線)
2)當k棒碰觸或上穿或跳空向上S2位置(粗線),原粗線維持不改變
3)直至右方K棒碰觸或上穿或跳空向上延伸線時(細線),下一根K棒即停止劃線.

4)當空頭關卡開始上升時,水平線才接續向右延伸出(細線)
5)當k棒碰觸或下穿或跳空向下S1位置(粗線),原粗線維持不改變
6)直至右方K棒碰觸或下穿或跳空延伸線時(細線),下一根K棒即停止劃線.

__________________
chiu


由 cgjj 在 2015-01-22 10:00 發表:

引用:
最初由 a9681054 發表
版主你好,
補上新的規則如下:

1)當多頭關卡開始下彎時,水平線才接續向右延伸出(細線)
2)當k棒碰觸或上穿或跳空向上S2位置(粗線),原粗線維持不改變
3)直至右方K棒碰觸或上穿或跳空向上延伸線時(細線),下一根K棒即停止劃線.

4)當空頭關卡開始上升時,水平線才接續向右延伸出(細線)
5)當k棒碰觸或下穿或跳空向下S1位置(粗線),原粗線維持不改變
6)直至右方K棒碰觸或下穿或跳空延伸線時(細線),下一根K棒即停止劃線.



按圖來看,粗線僅存在於下列兩種狀況成立時
1. 空頭關卡=REF(空頭關卡,1)
2. 多頭關卡=REF(多頭關卡,1)

按前面所提 "自連續走平的最末根當起點來畫"
因為起點之後,前面兩種狀況就不存在了
自起點開始向右畫的必定是細線,不會有粗線的狀況
故並不存在 2) 和 5)

粗線您原來的程式就有處理,不需再另畫


原碼:
CC:=C; HH:=H; LL:=L; //MOON Var4:=(LOW+HIGH+CLOSE)/3; 操作:= MA(Var4,5),colorGREEN,linethick2; 多頭關卡:HHV(操作,21) COLORBLACK,linethick2; 空頭關卡:LLV(操作,10) COLORBLACK,linethick2; //劃水平線 S1:=空頭關卡=REF(空頭關卡,1); S2:=多頭關卡=REF(多頭關卡,1); PARTLINE(S1,空頭關卡) COLORCYAN, LINETHICK2; PARTLINE(S2,多頭關卡) COLORRED, LINETHICK2; R1:=S1 and refx(S1,1)=0; R2:=S2 and refx(S2,1)=0; MaxKBar:=0; //僅畫最近n根K棒, 零則畫全部 DW1:=C*0; DW2:=C*0; StNo:=datacount-MaxKBar+1; if StNo<lbound(R1) or MaxKBar=0 then StNo:=lbound(R1); for i= StNo to datacount do begin if R1[i] <> 0 then begin for j=i+1 to datacount do begin if R1[i]=1 and HH[j]>多頭關卡[i] then begin DW1[i]:=j-i; break; end; end; end; end; StNo:=datacount-MaxKBar+1; if StNo<lbound(R2) or MaxKBar=0 then StNo:=lbound(R2); for i= StNo to datacount do begin if R2[i] <> 0 then begin for j=i+1 to datacount do begin if R2[i]=1 and LL[j]<空頭關卡[i] then begin DW2[i]:=j-i; break; end; end; end; end; DRAWSL(DW1,多頭關卡,0,DW1,3) COLORRED pxdn2; DRAWSL(DW2 ,空頭關卡,0,DW2,3) COLORCYAN pxdn2;


由 a9681054 在 2015-01-22 11:19 發表:

版主你好,
首先感謝版主辛苦的幫忙~
套用後,發現有幾個小狀況:
1)有延伸位置不對
2)不該延伸位置產生出延伸線
3)該延伸位置有些沒有產生出延伸線

詳細部份,如附件照片指示箭頭說明
圖片下半部是正常的,供版主比對參考!

以上問題,再次麻煩版主協助~

__________________
chiu


由 cgjj 在 2015-01-22 13:34 發表:

引用:
最初由 a9681054 發表
版主你好,
首先感謝版主辛苦的幫忙~
套用後,發現有幾個小狀況:
1)有延伸位置不對
2)不該延伸位置產生出延伸線
3)該延伸位置有些沒有產生出延伸線

詳細部份,如附件照片指示箭頭說明
圖片下半部是正常的,供版主比對參考!

以上問題,再次麻煩版主協助~



請抓奇狐完整的畫面, 沒有商品名稱和週期難以核對您畫面


由 a9681054 在 2015-01-22 13:49 發表:

版主你好,
剛先檢查一下,發現是R1及R2置入迴圈相反,版主寫迴圈的部份我也沒動,我更改劃水平線條件後已正常.

新修正源碼如下:
//劃水平線
S1:=多頭關卡=REF(多頭關卡,1);
S2:=空頭關卡=REF(空頭關卡,1);
PARTLINE(S1,多頭關卡) COLORred, LINETHICK2;
PARTLINE(S2,空頭關卡) COLORcyan, LINETHICK2;

不過還有一個問題,希望版主繼續協助,就是圖片圈圈處(多頭關卡及空頭關卡一樣走平),想請教為何沒有拉出伸水平線,感覺是否因右邊尚未碰到K棒而沒產生.

我的需求像這種情況,希望它一樣能產生延伸線出來給未來用,目前已大致符合我原先的需求,圈圈處再請版主程式予協助,謝謝~

__________________
chiu


由 a9681054 在 2015-01-22 13:53 發表:

補上商品名稱及週期圖片~

__________________
chiu


由 cgjj 在 2015-01-22 14:50 發表:

引用:
最初由 a9681054 發表
版主你好,
首先感謝版主辛苦的幫忙~
套用後,發現有幾個小狀況:
1)有延伸位置不對
2)不該延伸位置產生出延伸線
3)該延伸位置有些沒有產生出延伸線

詳細部份,如附件照片指示箭頭說明
圖片下半部是正常的,供版主比對參考!

以上問題,再次麻煩版主協助~



原碼:
CC:=C; HH:=H; LL:=L; //MOON Var4:=(LOW+HIGH+CLOSE)/3; 操作:= MA(Var4,5),colorGREEN,linethick2; 多頭關卡:HHV(操作,21) COLORBLACK,linethick2; 空頭關卡:LLV(操作,10) COLORBLACK,linethick2; //劃水平線 S1:=多頭關卡=REF(多頭關卡,1); S2:=空頭關卡=REF(空頭關卡,1); PARTLINE(S1,多頭關卡) COLORred, LINETHICK2; PARTLINE(S2,空頭關卡) COLORcyan, LINETHICK2; R1:=S1 and refx(S1,1)=0; R2:=S2 and refx(S2,1)=0; MaxKBar:=0; //僅畫最近n根K棒, 零則畫全部 DW1:=C*0; DW2:=C*0; StNo:=datacount-MaxKBar+1; if StNo<lbound(R1) or MaxKBar=0 then StNo:=lbound(R1); for i= StNo to datacount do begin if R1[i] <> 0 then begin for j=i+1 to datacount do begin if R1[i]=1 and HH[j]>多頭關卡[i] then begin DW1[i]:=j-i; break; end; end; if j>datacount then DW1[i]:=j-i-1; end; end; StNo:=datacount-MaxKBar+1; if StNo<lbound(R2) or MaxKBar=0 then StNo:=lbound(R2); for i= StNo to datacount do begin if R2[i] <> 0 then begin for j=i+1 to datacount do begin if R2[i]=1 and LL[j]<空頭關卡[i] then begin DW2[i]:=j-i; break; end; end; if j>datacount then DW2[i]:=j-i-1; end; end; DRAWSL(DW1,多頭關卡,0,DW1,3) COLORRED pxdn2; DRAWSL(DW2 ,空頭關卡,0,DW2,3) COLORCYAN pxdn2;


由 a9681054 在 2015-01-22 15:34 發表:

版主你好,
你的迴圈寫作真是太棒了,一直想不出的問題,藉由你的幫忙終於把它完成,在此向你說聲非常感謝~

請教你,因為初學不曉得要研讀何種書籍?才可以學到像這樣棒的迴圈寫作.

__________________
chiu


由 cgjj 在 2015-01-22 17:09 發表:

引用:
最初由 a9681054 發表
版主你好,
你的迴圈寫作真是太棒了,一直想不出的問題,藉由你的幫忙終於把它完成,在此向你說聲非常感謝~

請教你,因為初學不曉得要研讀何種書籍?才可以學到像這樣棒的迴圈寫作.



不客氣

幾乎任何一本程式設計的書籍,都會教到迴圈的應用
差別僅在於語法

學會其中一種,即使換不同程式語言,迴圈一樣可應用發揮


由 a9681054 在 2015-01-22 17:27 發表:

版主你好,
ok,我再去買書開始來研讀,謝謝了~

__________________
chiu


由 a9681054 在 2015-01-23 19:29 發表:

版主你好,
有一個小要求,你可以幫忙在你寫的迴圈部份,每一行後面做一下註釋,予便於了解其程式意思,可以? 謝謝~

__________________
chiu


由 cgjj 在 2015-01-26 09:05 發表:

引用:
最初由 a9681054 發表
版主你好,
有一個小要求,你可以幫忙在你寫的迴圈部份,每一行後面做一下註釋,予便於了解其程式意思,可以? 謝謝~



前面的程式可簡化為:

原碼:
CC:=C; HH:=H; LL:=L; //MOON Var4:=(LOW+HIGH+CLOSE)/3; 操作:= MA(Var4,5),colorGREEN,linethick2; 多頭關卡:HHV(操作,21) COLORBLACK,linethick2; 空頭關卡:LLV(操作,10) COLORBLACK,linethick2; //劃水平線 S1:=多頭關卡=REF(多頭關卡,1); S2:=空頭關卡=REF(空頭關卡,1); PARTLINE(S1,多頭關卡) COLORred, LINETHICK2; PARTLINE(S2,空頭關卡) COLORcyan, LINETHICK2; R1:=S1 and refx(S1,1)=0; R2:=S2 and refx(S2,1)=0; MaxKBar:=0; //僅畫最近n根K棒, 零則畫全部 DW1:=C*0; DW2:=C*0; StNo:=datacount-MaxKBar+1; if StNo<lbound(R1) or MaxKBar=0 then StNo:=lbound(R1); for i= StNo to datacount do begin if R1[i] then begin for j=i+1 to datacount do begin if HH[j]>多頭關卡[i] then begin DW1[i]:=j-i; break; end; end; if j>datacount then DW1[i]:=j-i-1; end; end; StNo:=datacount-MaxKBar+1; if StNo<lbound(R2) or MaxKBar=0 then StNo:=lbound(R2); for i= StNo to datacount do begin if R2[i] then begin for j=i+1 to datacount do begin if LL[j]<空頭關卡[i] then begin DW2[i]:=j-i; break; end; end; if j>datacount then DW2[i]:=j-i-1; end; end; DRAWSL(DW1,多頭關卡,0,DW1,3) COLORRED pxdn2; DRAWSL(DW2 ,空頭關卡,0,DW2,3) COLORCYAN pxdn2;


由 cgjj 在 2015-01-26 09:06 發表:

迴圈說明:

原碼:
for i= StNo to datacount do begin //依序跑每一根K棒 if R1[i] then begin //若該根K棒 R1 條件成立 for j=i+1 to datacount do begin //則開始向後依序搜尋 if HH[j]>多頭關卡[i] then begin //若H價有過成立位置之多頭關卡價 DW1[i]:=j-i; break; //取與成立位置相差距離存入DW1,並跳離迴圈 end; end; //若搜尋到最終K棒仍無符合之處,取與成立位置相差距離存入DW1 if j>datacount then DW1[i]:=j-i-1; end; end;


由 a9681054 在 2015-01-26 12:07 發表:

版主你好,
感恩~

__________________
chiu


由 a9681054 在 2015-02-02 10:59 發表:

版主你好,
在即時盤中,想在最後一根k棒,讓未碰觸到的多頭關卡及空頭關卡走平的水平線,自動多往右一根延伸顯示,麻煩版主協助,謝謝~

__________________
chiu


由 cgjj 在 2015-02-02 11:07 發表:

引用:
最初由 a9681054 發表
版主你好,
在即時盤中,想在最後一根k棒,讓未碰觸到的多頭關卡及空頭關卡走平的水平線,自動多往右一根延伸顯示,麻煩版主協助,謝謝~




if j>datacount then DW1[i]:=j-i-1;
if j>datacount then DW2[i]:=j-i-1;

改為
if j>datacount then DW1[i]:=j-i;
if j>datacount then DW2[i]:=j-i;


由 a9681054 在 2015-02-02 11:14 發表:

版主你好,
可以了,非常感謝你的幫忙~

__________________
chiu


由 a9681054 在 2015-02-03 13:40 發表:

版主你好,
即時盤中,想在最後一根k棒,讓未碰觸到多頭關卡及空頭關卡走平的水平線,自動多往右一根延伸顯示.

上次回覆版主套用是可以,但發現還有二個小問題,想請版主再次協助.

1)當下的最後一組,未碰觸到多頭關卡及空頭關卡走平的水平線,也能在最後一根k棒,自動多往右一根延伸顯示.

2))當下的最後一組,未碰觸到多頭關卡及空頭關卡走平的水平線,除第1點外,如符合延伸顯示條件時,也能即時向右延伸,以便於當下做真假突破或跌破判斷.

以上

__________________
chiu


由 a9681054 在 2015-02-03 13:55 發表:

版主你好,
補上需求圖片做比較,圖下半部是我的需求,請版主協助,謝謝~

__________________
chiu


由 cgjj 在 2015-02-04 10:07 發表:

引用:
最初由 a9681054 發表
版主你好,
補上需求圖片做比較,圖下半部是我的需求,請版主協助,謝謝~




PARTLINE(S1,多頭關卡) COLORred, LINETHICK2;
PARTLINE(S2,空頭關卡) COLORcyan, LINETHICK2;

改為
PARTLINE(S1,多頭關卡) COLORred, LINETHICK2;
PARTLINE(S2,空頭關卡) COLORcyan, LINETHICK2;
PARTLINE(S1 and islastbar,多頭關卡) COLORred LINETHICK2 SHIFT1;
PARTLINE(S2 and islastbar,空頭關卡) COLORcyan LINETHICK2 SHIFT1;


由 a9681054 在 2015-02-05 08:55 發表:

版主你好,
可以了,感謝你的幫忙~

__________________
chiu


由 Markchu7 在 2015-10-25 03:31 發表:

請問如何求:
尚未碰觸之'最低多頭關卡' 及 '最高空頭關卡'?
感謝!


由 cgjj 在 2015-10-26 11:29 發表:

引用:
最初由 Markchu7 發表
請問如何求:
尚未碰觸之'最低多頭關卡' 及 '最高空頭關卡'?
感謝!



UM:=barslast(barpos+DW1=datacount+1);
UM:多頭關卡[datacount-UM[datacount]];
DM:=barslast(barpos+DW2=datacount+1);
DM:空頭關卡[datacount-DM[datacount]];


由 Markchu7 在 2015-10-26 13:04 發表:

感謝!


由 Markchu7 在 2015-10-27 10:34 發表:

請問:出現'指標數組下限越界.......',該如何處理?
謝謝!


由 cgjj 在 2015-10-27 10:44 發表:

引用:
最初由 Markchu7 發表
請問:出現'指標數組下限越界.......',該如何處理?
謝謝!



您跑哪個商品哪個週期? 程式有無修改過?


由 Markchu7 在 2015-10-27 12:17 發表:

跑FITX1!修改如下:
MaxKBar:=IF(DATATYPE=1,1500,IF(DATATYPE=2,1200,600)); //僅畫最近n根K棒, 零則畫全部
請指導!謝謝!


由 cgjj 在 2015-10-27 12:31 發表:

引用:
最初由 Markchu7 發表
跑FITX1!修改如下:
MaxKBar:=IF(DATATYPE=1,1500,IF(DATATYPE=2,1200,600)); //僅畫最近n根K棒, 零則畫全部
請指導!謝謝!



K棒數給太少,可能會有 "無未碰觸" 的情況
以下已修正 "無未碰觸" 的情況

原碼:
CC:=C; HH:=H; LL:=L; //MOON Var4:=(LOW+HIGH+CLOSE)/3; 操作:= MA(Var4,5),colorGREEN,linethick2; 多頭關卡:HHV(操作,21) COLORBLACK,linethick2; 空頭關卡:LLV(操作,10) COLORBLACK,linethick2; //劃水平線 S1:=多頭關卡=REF(多頭關卡,1); S2:=空頭關卡=REF(空頭關卡,1); PARTLINE(S1,多頭關卡) COLORred, LINETHICK2; PARTLINE(S2,空頭關卡) COLORcyan, LINETHICK2; R1:=S1 and refx(S1,1)=0; R2:=S2 and refx(S2,1)=0; MaxKBar:=0; //僅畫最近n根K棒, 零則畫全部 DW1:=C*0; DW2:=C*0; StNo:=datacount-MaxKBar+1; if StNo<lbound(R1) or MaxKBar=0 then StNo:=lbound(R1); for i= StNo to datacount do begin if R1[i] then begin for j=i+1 to datacount do begin if HH[j]>多頭關卡[i] then begin DW1[i]:=j-i; break; end; end; if j>datacount then DW1[i]:=j-i; end; end; StNo:=datacount-MaxKBar+1; if StNo<lbound(R2) or MaxKBar=0 then StNo:=lbound(R2); for i= StNo to datacount do begin if R2[i] then begin for j=i+1 to datacount do begin if LL[j]<空頭關卡[i] then begin DW2[i]:=j-i; break; end; end; if j>datacount then DW2[i]:=j-i; end; end; DRAWSL(DW1,多頭關卡,0,DW1,3) COLORRED pxdn2; DRAWSL(DW2 ,空頭關卡,0,DW2,3) COLORCYAN pxdn2; UM:=barslast(barpos+DW1=datacount+1); if lbound(UM)>0 then begin UM:多頭關卡[datacount-UM[datacount]]; end; DM:=barslast(barpos+DW2=datacount+1); if lbound(DM)>0 then begin DM:空頭關卡[datacount-DM[datacount]]; end;


由 Markchu7 在 2015-10-27 12:40 發表:

感謝協助!再去試試!


由 Markchu7 在 2015-10-29 23:29 發表:

當無碰觸現象發生時,UM,DM是像貼圖中一樣是空值嗎?


由 cgjj 在 2015-10-30 09:03 發表:

引用:
最初由 Markchu7 發表
當無碰觸現象發生時,UM,DM是像貼圖中一樣是空值嗎?


測試過並無此現象唷
請確認是否有更動過程式碼


由 Markchu7 在 2015-10-30 10:27 發表:

程式未更動,載入K棒數量為3100!


由 cgjj 在 2015-10-30 10:53 發表:

引用:
最初由 Markchu7 發表
程式未更動,載入K棒數量為3100!


正常的
那是因為用3100根跑時
無未碰觸之最高空頭關卡
所以 DM 為無效變數(無輸出)


由 Markchu7 在 2015-10-30 11:15 發表:

了解!謝謝!


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


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

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