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

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


由 chungdune 在 2012-10-16 18:23 發表:

[求救]請問缺口上下緣被突破或跌破的公式寫法

請問缺口上下緣被突破或跌破的公式寫法

請問版主,請問缺口上下緣被突破或跌破的公式寫法,我有參考下篇文章:
http://www.chiefox.com.tw/bbs/showt...ight=%AF%CA%A4f
可是有些線會畫不出來,而且缺口線的上下緣被突破或跌破時,還是繼續往右畫線,請問正確的寫法為何?謝謝。


由 cgjj 在 2012-10-17 09:09 發表:

回覆: [求救]請問缺口上下緣被突破或跌破的公式寫法

引用:
最初由 chungdune 發表
請問缺口上下緣被突破或跌破的公式寫法

請問版主,請問缺口上下緣被突破或跌破的公式寫法,我有參考下篇文章:
http://www.chiefox.com.tw/bbs/showt...ight=%AF%CA%A4f
可是有些線會畫不出來,而且缺口線的上下緣被突破或跌破時,還是繼續往右畫線,請問正確的寫法為何?謝謝。



該篇文章
依據的是 "直至另一根K棒碰到該價位"
與您所想的需求應該是不一樣的

請先詳細定義 "缺口上下緣被突破或跌破" 之判斷規則
建議搭配圖形說明, 會比較清楚易懂


由 chungdune 在 2012-10-17 10:11 發表:

回覆: 回覆: [求救]請問缺口上下緣被突破或跌破的公式寫法

引用:
最初由 cgjj 發表
該篇文章
依據的是 "直至另一根K棒碰到該價位"
與您所想的需求應該是不一樣的

請先詳細定義 "缺口上下緣被突破或跌破" 之判斷規則
建議搭配圖形說明, 會比較清楚易懂



1.我要的就是那個功能,只是該文章要的是「某個缺口的最低價向右畫一條線,直至他被回補」,而我要的是「某個缺口的最低價與最高價向右畫一條線,直至他被回補」。
2.根據該文章的公式修改結果,發現兩個問題:(請看附圖)
a.向下缺口(藍色線)的下緣與向上缺口(紅色線)的上緣無法畫出線條。
b.2012/10/11跌破2012/09/12的缺口,但是線條還是繼續往右畫。


由 cgjj 在 2012-10-17 11:56 發表:

回覆: 回覆: 回覆: [求救]請問缺口上下緣被突破或跌破的公式寫法

引用:
最初由 chungdune 發表
1.我要的就是那個功能,只是該文章要的是「某個缺口的最低價向右畫一條線,直至他被回補」,而我要的是「某個缺口的最低價與最高價向右畫一條線,直至他被回補」。
2.根據該文章的公式修改結果,發現兩個問題:(請看附圖)
a.向下缺口(藍色線)的下緣與向上缺口(紅色線)的上緣無法畫出線條。
b.2012/10/11跌破2012/09/12的缺口,但是線條還是繼續往右畫。



沒見貼圖唷, 麻煩請補上


由 chungdune 在 2012-10-17 12:36 發表:

不知為何圖老是貼不上,請連接以下網址,謝謝
http://www.freeimagehosting.net/ly1hh


由 cgjj 在 2012-10-17 13:17 發表:

引用:
最初由 chungdune 發表
不知為何圖老是貼不上,請連接以下網址,謝謝
http://www.freeimagehosting.net/ly1hh



圖的寬和高必需在999個像素之內

碰到K棒和被回補 兩者是不同的
該篇文章處理的結果, 與您的需求是相當不一樣的

看看以下處理結果是否為您要的:
原碼:

CK
:=(L>ref(H,1))-(H<=ref(L,1));
MM:=(CK=1)*L+(CK=-1)*H;
HH:=HLL:=LPP:=C*0;
for 
i=lbound(CKto datacount do begin
  
if CK[i]<>0 then begin
     
for j=i+1 to datacount do begin
       
if (CK[i]=1)*(LL[j]<=LL[i])+(CK[i]=-1)*(HH[j]>=HH[i]) then begin
         PP
[i]:=j-i; break;
       
end;
     
end;
  
end;
end;
DRAWSL(CK,MM,0,PP,3pxdn2 linedot coloryellow;


由 chungdune 在 2012-10-17 13:50 發表:

引用:
最初由 cgjj 發表
圖的寬和高必需在999個像素之內

碰到K棒和被回補 兩者是不同的
該篇文章處理的結果, 與您的需求是相當不一樣的

看看以下處理結果是否為您要的:
原碼:

CK
:=(L>ref(H,1))-(H<=ref(L,1));
MM:=(CK=1)*L+(CK=-1)*H;
HH:=HLL:=LPP:=C*0;
for 
i=lbound(CKto datacount do begin
  
if CK[i]<>0 then begin
     
for j=i+1 to datacount do begin
       
if (CK[i]=1)*(LL[j]<=LL[i])+(CK[i]=-1)*(HH[j]>=HH[i]) then begin
         PP
[i]:=j-i; break;
       
end;
     
end;
  
end;
end;
DRAWSL(CK,MM,0,PP,3pxdn2 linedot coloryellow;




報告版主:向下缺口的上緣與向上缺口的下緣無法畫出線條。
應該這麼說:完全缺口的上下緣都要劃線,上緣被碰到(包含跳空過或破)則上緣停止劃線,下緣被碰到(包含跳空過或破)則下緣停止劃線。


由 cgjj 在 2012-10-17 14:22 發表:

引用:
最初由 chungdune 發表
報告版主:向下缺口的上緣與向上缺口的下緣無法畫出線條。
應該這麼說:完全缺口的上下緣都要劃線,上緣被碰到(包含跳空過或破)則上緣停止劃線,下緣被碰到(包含跳空過或破)則下緣停止劃線。



注意: 此公式計算負載較重, 請注意使用
原碼:

CK
:=(L>ref(H,1))-(H<=ref(L,1));
MM1:=(CK=1)*L+(CK=-1)*H;
RCK:=refx(CK,1) and ISLASTBAR=0;
MM2:=(RCK=1)*H+(RCK=-1)*L;
HH:=HLL:=LP1:=C*0P2:=P1;
for 
i=lbound(CKto datacount do begin
  
if CK[i]<>0 then begin
     
for j=i+1 to datacount do begin
       
if (CK[i]=1)*(LL[j]<=LL[i])+(CK[i]=-1)*(HH[j]>=HH[i]) then begin
         P1
[i]:=j-i; break;
       
end;
     
end;
     
k:=i-1;
     for 
j=i+1 to datacount do begin
       
if (CK[i]=1)*(LL[j]<=HH[k])+(CK[i]=-1)*(HH[j]>=LL[k]) then begin
         P2
[k]:=j-k; break;
       
end;
     
end;
  
end;
end;
DRAWSL(CK,MM1,0,P1,3pxdn2 linedot coloryellow;
DRAWSL(RCK,MM2,0,P2,3pxdn2 linedot colormagenta;


由 chungdune 在 2012-10-17 14:37 發表:

引用:
最初由 cgjj 發表
注意: 此公式計算負載較重, 請注意使用
原碼:

CK
:=(L>ref(H,1))-(H<=ref(L,1));
MM1:=(CK=1)*L+(CK=-1)*H;
RCK:=refx(CK,1) and ISLASTBAR=0;
MM2:=(RCK=1)*H+(RCK=-1)*L;
HH:=HLL:=LP1:=C*0P2:=P1;
for 
i=lbound(CKto datacount do begin
  
if CK[i]<>0 then begin
     
for j=i+1 to datacount do begin
       
if (CK[i]=1)*(LL[j]<=LL[i])+(CK[i]=-1)*(HH[j]>=HH[i]) then begin
         P1
[i]:=j-i; break;
       
end;
     
end;
     
k:=i-1;
     for 
j=i+1 to datacount do begin
       
if (CK[i]=1)*(LL[j]<=HH[k])+(CK[i]=-1)*(HH[j]>=LL[k]) then begin
         P2
[k]:=j-k; break;
       
end;
     
end;
  
end;
end;
DRAWSL(CK,MM1,0,P1,3pxdn2 linedot coloryellow;
DRAWSL(RCK,MM2,0,P2,3pxdn2 linedot colormagenta;




報告版主:向上跳空缺口的線條正常,但是向下跳空缺口的上緣線條有問題,應該是畫在k棒的最低點而非最高點。


由 cgjj 在 2012-10-17 14:48 發表:

引用:
最初由 chungdune 發表
報告版主:向上跳空缺口的線條正常,但是向下跳空缺口的上緣線條有問題,應該是畫在k棒的最低點而非最高點。


原判斷式疏忽寫錯了

請將
RCK:=refx(CK,1) and ISLASTBAR=0;

修正為
RCK:=refx(CK,1)*(ISLASTBAR=0);

即可解決問題


由 chungdune 在 2012-10-17 15:15 發表:

感謝版主,問題解決了。


由 chungdune 在 2012-10-17 19:39 發表:

不好意思,請問版主,若此公式要改成實體缺口(就是相鄰二根K棒實體之間有缺口)劃線要如何作,我改了之後只會變成在當根畫線,懇請協助,謝謝。


由 cgjj 在 2012-10-18 09:33 發表:

引用:
最初由 chungdune 發表
不好意思,請問版主,若此公式要改成實體缺口(就是相鄰二根K棒實體之間有缺口)劃線要如何作,我改了之後只會變成在當根畫線,懇請協助,謝謝。


1.改成用K棒柱狀體判斷缺口
2.添加了控制運算K棒數的功能(請視電腦負載和效能自行調整)

原碼:

MAXKBAR
:=1500//設定運算近期N根(0為全部)
StPos:=datacount-MAXKBAR+1;
if 
StPos<or MAXKBAR=0 then StPos:=1;
SH:=MAX(O,C); SL:=MIN(O,C);
x:=SETLBOUND(SH,StPos);
x:=SETLBOUND(SL,StPos);
CK:=(SL>ref(SH,1))-(SH<=ref(SL,1));
MM1:=(CK=1)*SL+(CK=-1)*SH;
RCK:=refx(CK,1)*(ISLASTBAR=0);
MM2:=(RCK=1)*SH+(RCK=-1)*SL;
P1:=C*0P2:=P1;
for 
i=lbound(CKto datacount do begin
  
if CK[i]<>0 then begin
     
for j=i+1 to datacount do begin
       
if (CK[i]=1)*(SL[j]<=SL[i])+(CK[i]=-1)*(SH[j]>=SH[i]) then begin
         P1
[i]:=j-i; break;
       
end;
     
end;
     
k:=i-1;
     for 
j=i+1 to datacount do begin
       
if (CK[i]=1)*(SL[j]<=SH[k])+(CK[i]=-1)*(SH[j]>=SL[k]) then begin
         P2
[k]:=j-k; break;
       
end;
     
end;
  
end;
end;
DRAWSL(CK,MM1,0,P1,3pxdn2 linedot coloryellow;
DRAWSL(RCK,MM2,0,P2,3pxdn2 linedot colormagenta;


由 cgjj 在 2012-10-22 12:17 發表:

前面程式, 這行:
CK:=(SL>ref(SH,1))-(SH<=ref(SL,1));

要修正為
CK:=(SL>ref(SH,1))-(SH<ref(SL,1));


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


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

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