 |
chungdune
資深會員
註冊日期: Mar 2008
來 自:
文章數量: 114 |
回覆: 回覆: 回覆: 回覆: 回覆: 回覆: 回覆: 回覆: 回覆: 回覆: 問題請教
引用: 最初由 cgjj 發表
KD 源碼請自行帶入於前
原碼: DESP:=barslast(date<>ref(date,1));
KD生叉:=cross(K,D);
FKD生叉:=KD生叉 and sum(KD生叉,DESP+1)=1;
DRAWTEXT(refx(FKD生叉,1),C,'KD生叉') ALIGN2 pxup9;
VERTLINE(FKD生叉) linedot;
VLC:=C<ref(C,1) and C<refx(C,1) or barpos=0;
DWP:=C*0; DWL:=DWP; CC:=C;
for i=lbound(FKD生叉) to datacount do begin
if FKD生叉[i] then begin
for j=i-1 downto 1 do if VLC[j] then break;
if j=0 then break;
DWP[j]:=1;
for k=j+1 to datacount do begin
if CC[k]<CC[j] then break;
end;
DWL[j]:=j-K;
end;
end;
DRAWSL(DWP,C,0,DWL,0) pxdn2 linedot;
又有新問題要麻煩版主,請問版主上面這個公式的條件2:
2.在今日第一個KD生叉時,往前尋找最近一個收盤價的轉折低點(定義:收盤價呈現高-低-高),且此轉折低點要低於KD生叉時之收盤價,並且在此轉折低點劃線且向右延伸,直到被某一收盤價跌破
若是要加入一個條件,變成:
2.在今日第一個KD生叉時,往前尋找最近一個收盤價的轉折低點(定義:收盤價呈現高-低-高),且此轉折低點要低於KD生叉時之收盤價,「且必須是今日第一個KD生叉條件成立時,開盤至今之最高收盤價往左看的轉折低,且此轉折低目前尚未被某一收盤價跌破」,並且在此轉折低點劃線且向右延伸,直到被某一收盤價跌破
請問該如何處理?
|
|
向版主報告此篇 |  |
|
2015-08-06 14:32 |
|
|
|  |
 |
chungdune
資深會員
註冊日期: Mar 2008
來 自:
文章數量: 114 |
回覆: 回覆: 回覆: 回覆: 回覆: 回覆: 回覆: 回覆: 回覆: 回覆: 回覆: 回覆: 回覆: 回覆: 問題請教
引用: 最初由 cgjj 發表
Q1:
若KD生叉收盤價<>目前最高收盤價
則兩個紅圈圈範圍內的轉折低,都不去取用對吧?
Q2:
若今日第一個KD生叉成立之處, 其前面沒有足夠的K棒做計算
或前面無符合的轉折低,則該日不畫線嗎?
A1:
應該是說:
1.若KD生叉收盤價>=目前最高收盤價,則由KD生叉收盤價往前尋找最近一個收盤價的轉折低點(定義:收盤價呈現高-低-高),且此轉折低點要低於KD生叉時之收盤價。
2.若KD生叉收盤價<目前最高收盤價,則高於「轉折低3」(定義:KD生叉收盤價與目前最高收盤價兩點所夾之最低收盤價)的轉折低不取,因此不取「轉折低2」,當然也不取「轉折低3」,只取「轉折低1」。
A2:
就如同之前寫的程式一樣,往前面尋找,因此有可能轉折低在昨日。
|
|
向版主報告此篇 |  |
|
2015-08-07 10:28 |
|
|
|  |
 |
cgjj
總版主

註冊日期: Oct 2003
來 自:
文章數量: 18094 |
回覆: 回覆: 回覆: 回覆: 回覆: 回覆: 回覆: 回覆: 回覆: 回覆: 回覆: 回覆: 回覆: 回覆: 回覆: 問題請教
引用: 最初由 chungdune 發表
A1:
應該是說:
1.若KD生叉收盤價>=目前最高收盤價,則由KD生叉收盤價往前尋找最近一個收盤價的轉折低點(定義:收盤價呈現高-低-高),且此轉折低點要低於KD生叉時之收盤價。
2.若KD生叉收盤價<目前最高收盤價,則高於「轉折低3」(定義:KD生叉收盤價與目前最高收盤價兩點所夾之最低收盤價)的轉折低不取,因此不取「轉折低2」,當然也不取「轉折低3」,只取「轉折低1」。
A2:
就如同之前寫的程式一樣,往前面尋找,因此有可能轉折低在昨日。
原碼: DESP:=barslast(date<>ref(date,1));
KD生叉:=cross(K,D);
FKD生叉:=KD生叉 and sum(KD生叉,DESP+1)=1;
DRAWTEXT(refx(FKD生叉,1),C,'KD生叉') ALIGN2 pxup9;
VERTLINE(FKD生叉) linedot;
VLC:=C<ref(C,1) and C<refx(C,1) or barpos=0;
DWP:=C*0; DWL:=DWP; CC:=C; HHC:=HHV(C,DESP+1);
for i=lbound(FKD生叉) to datacount do begin
if FKD生叉[i] then begin
if CC[i]>=HHC[i] then begin
for j=i-1 downto 1 do if VLC[j]<CC[i] then break;
if j=0 then break;
end else begin
MinBC:=9999999;
for j=i-1 downto i-DESP[i] do begin
if CC[j]<MinBC then MinBC:=CC[j];
if CC[j]=HHC[i] then break;
end;
if MinBC=9999999 then break;
for j=j-1 downto 1 do if VLC[j] and CC[j]<MinBC then break;
end;
DWP[j]:=1;
for k=j+1 to datacount do begin
if CC[k]<CC[j] then break;
end;
DWL[j]:=j-K;
end;
end;
DRAWSL(DWP,C,0,DWL,0) pxdn2 linedot;
|
|
向版主報告此篇 |  |
|
2015-08-07 15:59 |
|
|
|  |
 |
chungdune
資深會員
註冊日期: Mar 2008
來 自:
文章數量: 114 |
回覆: 回覆: 回覆: 回覆: 回覆: 回覆: 回覆: 回覆: 回覆: 回覆: 回覆: 回覆: 回覆: 回覆: 回覆: 回覆: 問題
引用: 最初由 cgjj 發表
原碼: DESP:=barslast(date<>ref(date,1));
KD生叉:=cross(K,D);
FKD生叉:=KD生叉 and sum(KD生叉,DESP+1)=1;
DRAWTEXT(refx(FKD生叉,1),C,'KD生叉') ALIGN2 pxup9;
VERTLINE(FKD生叉) linedot;
VLC:=C<ref(C,1) and C<refx(C,1) or barpos=0;
DWP:=C*0; DWL:=DWP; CC:=C; HHC:=HHV(C,DESP+1);
for i=lbound(FKD生叉) to datacount do begin
if FKD生叉[i] then begin
if CC[i]>=HHC[i] then begin
for j=i-1 downto 1 do if VLC[j]<CC[i] then break;
if j=0 then break;
end else begin
MinBC:=9999999;
for j=i-1 downto i-DESP[i] do begin
if CC[j]<MinBC then MinBC:=CC[j];
if CC[j]=HHC[i] then break;
end;
if MinBC=9999999 then break;
for j=j-1 downto 1 do if VLC[j] and CC[j]<MinBC then break;
end;
DWP[j]:=1;
for k=j+1 to datacount do begin
if CC[k]<CC[j] then break;
end;
DWL[j]:=j-K;
end;
end;
DRAWSL(DWP,C,0,DWL,0) pxdn2 linedot;
目前看到一些在非轉折低劃線的日期,時間如下:(加權5MIN)
08/07 09:35
08/04 09:15
07/24 09:15
07/06 09:25
07/03 09:20
07/01 10:30
06/29 13:30
06/26 09:10
06/09 09:10
...
其他還有,先列舉以上時間,請版主協助
|
最後由 chungdune 在 2015-08-07 20:27 編輯 |
向版主報告此篇 |  |
|
2015-08-07 19:49 |
|
|
|  |
 |
chungdune
資深會員
註冊日期: Mar 2008
來 自:
文章數量: 114 |
回覆: 回覆: 回覆: 回覆: 回覆: 回覆: 回覆: 回覆: 回覆: 回覆: 回覆: 回覆: 回覆: 回覆: 回覆: 回覆: 回覆
引用: 最初由 cgjj 發表
請將此段
for j=i-1 downto 1 do if VLC[j]<CC[i] then break;
修正為
for j=i-1 downto 1 do if VLC[j] and CC[j]<CC[i] then break;
報告版主,狀況一樣沒變,請再協助,謝謝
|
|
向版主報告此篇 |  |
|
2015-08-10 08:17 |
|
|
|  |
 |
chungdune
資深會員
註冊日期: Mar 2008
來 自:
文章數量: 114 |
回覆: 回覆: 回覆: 回覆: 回覆: 回覆: 回覆: 回覆: 回覆: 回覆: 回覆: 回覆: 回覆: 回覆: 回覆: 回覆: 回覆
引用: 最初由 cgjj 發表
狀況不可能沒變
請確認該行是否真的替換成功
原來是我眼花,少改一行,感謝版主
另外還有違反條件「2.若KD生叉收盤價<目前最高收盤價,則高於「轉折低3」(定義:KD生叉收盤價與目前最高收盤價兩點所夾之最低收盤價)的轉折低不取,因此不取「轉折低2」,當然也不取「轉折低3」,只取「轉折低1」。」,理論上不該出現的線(加權5min),請版主協助
08/10 09:10
08/06 10:00
08/05 10:00
08/03 09:40
07/31 09:50
|
|
向版主報告此篇 |  |
|
2015-08-10 18:42 |
|
|
|  |
 |
cgjj
總版主

註冊日期: Oct 2003
來 自:
文章數量: 18094 |
回覆: 回覆: 回覆: 回覆: 回覆: 回覆: 回覆: 回覆: 回覆: 回覆: 回覆: 回覆: 回覆: 回覆: 回覆: 回覆: 回覆
引用: 最初由 chungdune 發表
原來是我眼花,少改一行,感謝版主
另外還有違反條件「2.若KD生叉收盤價<目前最高收盤價,則高於「轉折低3」(定義:KD生叉收盤價與目前最高收盤價兩點所夾之最低收盤價)的轉折低不取,因此不取「轉折低2」,當然也不取「轉折低3」,只取「轉折低1」。」,理論上不該出現的線(加權5min),請版主協助
08/10 09:10
08/06 10:00
08/05 10:00
08/03 09:40
07/31 09:50
少改一行??
僅有一行需要被修改,怎會有 "少改一行" 的狀況呢?
您列的這幾個時間,並沒有線是從這幾個時間當起點畫的唷
按前面我所敘述的,改完的程式碼應該是這樣:
原碼: DESP:=barslast(date<>ref(date,1));
KD生叉:=cross(K,D);
FKD生叉:=KD生叉 and sum(KD生叉,DESP+1)=1;
DRAWTEXT(refx(FKD生叉,1),C,'KD生叉') ALIGN2 pxup9;
VERTLINE(FKD生叉) linedot;
VLC:=C<ref(C,1) and C<refx(C,1) or barpos=0;
DWP:=C*0; DWL:=DWP; CC:=C; HHC:=HHV(C,DESP+1);
for i=lbound(FKD生叉) to datacount do begin
if FKD生叉[i] then begin
if CC[i]>=HHC[i] then begin
for j=i-1 downto 1 do if VLC[j] and CC[j]<CC[i] then break;
if j=0 then break;
end else begin
MinBC:=9999999;
for j=i-1 downto i-DESP[i] do begin
if CC[j]<MinBC then MinBC:=CC[j];
if CC[j]=HHC[i] then break;
end;
if MinBC=9999999 then break;
for j=j-1 downto 1 do if VLC[j] and CC[j]<MinBC then break;
end;
DWP[j]:=1;
for k=j+1 to datacount do begin
if CC[k]<CC[j] then break;
end;
DWL[j]:=j-K;
end;
end;
DRAWSL(DWP,C,0,DWL,0) pxdn2 linedot;
|
|
向版主報告此篇 |  |
|
2015-08-11 09:52 |
|
|
|  |
 |
chungdune
資深會員
註冊日期: Mar 2008
來 自:
文章數量: 114 |
回覆: 回覆: 回覆: 回覆: 回覆: 回覆: 回覆: 回覆: 回覆: 回覆: 回覆: 回覆: 回覆: 回覆: 回覆: 回覆: 回覆
引用: 最初由 cgjj 發表
少改一行??
僅有一行需要被修改,怎會有 "少改一行" 的狀況呢?
您列的這幾個時間,並沒有線是從這幾個時間當起點畫的唷
按前面我所敘述的,改完的程式碼應該是這樣:
原碼: DESP:=barslast(date<>ref(date,1));
KD生叉:=cross(K,D);
FKD生叉:=KD生叉 and sum(KD生叉,DESP+1)=1;
DRAWTEXT(refx(FKD生叉,1),C,'KD生叉') ALIGN2 pxup9;
VERTLINE(FKD生叉) linedot;
VLC:=C<ref(C,1) and C<refx(C,1) or barpos=0;
DWP:=C*0; DWL:=DWP; CC:=C; HHC:=HHV(C,DESP+1);
for i=lbound(FKD生叉) to datacount do begin
if FKD生叉[i] then begin
if CC[i]>=HHC[i] then begin
for j=i-1 downto 1 do if VLC[j] and CC[j]<CC[i] then break;
if j=0 then break;
end else begin
MinBC:=9999999;
for j=i-1 downto i-DESP[i] do begin
if CC[j]<MinBC then MinBC:=CC[j];
if CC[j]=HHC[i] then break;
end;
if MinBC=9999999 then break;
for j=j-1 downto 1 do if VLC[j] and CC[j]<MinBC then break;
end;
DWP[j]:=1;
for k=j+1 to datacount do begin
if CC[k]<CC[j] then break;
end;
DWL[j]:=j-K;
end;
end;
DRAWSL(DWP,C,0,DWL,0) pxdn2 linedot;
感謝版主提示,已修正
另外我試著將程式修改為:KD死叉時找轉折高劃線,發現有些時間並非從當時5MIN最低點找轉折高,請問有哪些地方沒改好?
06/25 09:35
06/23 09:55
06/22 09:40
收盤:close,linethick0;
DESP:=barslast(date<>ref(date,1)),linethick0;
vertline(refx(date<>ref(date,1),1)),colorpurple,linethick3;
drawnumber(islastbar,C,C,2),shift1;
partline(C>ref(C,1),C),colorred,linethick3;
partline(C<=ref(C,1),C),colorBLUE,linethick3;
RSV:=(CLOSE-LLV(LOW,9))/(HHV(HIGH,9)-LLV(LOW,9))*100;
K:=SMA(RSV,3,1);
D:=SMA(K,3,1);
KD死叉:=cross(D,K);
FKD死叉:=KD死叉 and sum(KD死叉,DESP+1)=1;
VERTLINE(FKD死叉) linedot;
VLC:=C>ref(C,1) and C>refx(C,1) or barpos=0;
DWP:=C*0; DWL:=DWP; CC:=C; LLC:=LLV(C,DESP+1);
for i=lbound(FKD死叉) to datacount do begin
if FKD死叉[i] then begin
if CC[i]<=LLC[i] then begin
for j=i-1 downto 1 do if VLC[j] and CC[j]>CC[i] then break;
if j=0 then break;
end else begin
MinBC:=9999999;
for j=i-1 downto i-DESP[i] do begin
if CC[j]<MinBC then MinBC:=CC[j];
if CC[j]=LLC[i] then break;
end;
if MinBC=9999999 then break;
for j=i-1 downto 1 do if VLC[j] and CC[j]>MinBC then break;
end;
DWP[j]:=1;
for k=j+1 to datacount do begin
if CC[k]>CC[j] then break;
end;
DWL[j]:=j-K;
end;
end;
DRAWSL(DWP,C,0,DWL,0),linethick2;
|
|
向版主報告此篇 |  |
|
2015-08-11 12:17 |
|
|
|  |
 |
cgjj
總版主

註冊日期: Oct 2003
來 自:
文章數量: 18094 |
回覆: 回覆: 回覆: 回覆: 回覆: 回覆: 回覆: 回覆: 回覆: 回覆: 回覆: 回覆: 回覆: 回覆: 回覆: 回覆: 回覆
引用: 最初由 chungdune 發表
感謝版主提示,已修正
另外我試著將程式修改為:KD死叉時找轉折高劃線,發現有些時間並非從當時5MIN最低點找轉折高,請問有哪些地方沒改好?
06/25 09:35
06/23 09:55
06/22 09:40
收盤:close,linethick0;
DESP:=barslast(date<>ref(date,1)),linethick0;
vertline(refx(date<>ref(date,1),1)),colorpurple,linethick3;
drawnumber(islastbar,C,C,2),shift1;
partline(C>ref(C,1),C),colorred,linethick3;
partline(C<=ref(C,1),C),colorBLUE,linethick3;
RSV:=(CLOSE-LLV(LOW,9))/(HHV(HIGH,9)-LLV(LOW,9))*100;
K:=SMA(RSV,3,1);
D:=SMA(K,3,1);
KD死叉:=cross(D,K);
FKD死叉:=KD死叉 and sum(KD死叉,DESP+1)=1;
VERTLINE(FKD死叉) linedot;
VLC:=C>ref(C,1) and C>refx(C,1) or barpos=0;
DWP:=C*0; DWL:=DWP; CC:=C; LLC:=LLV(C,DESP+1);
for i=lbound(FKD死叉) to datacount do begin
if FKD死叉[i] then begin
if CC[i]<=LLC[i] then begin
for j=i-1 downto 1 do if VLC[j] and CC[j]>CC[i] then break;
if j=0 then break;
end else begin
MinBC:=9999999;
for j=i-1 downto i-DESP[i] do begin
if CC[j]<MinBC then MinBC:=CC[j];
if CC[j]=LLC[i] then break;
end;
if MinBC=9999999 then break;
for j=i-1 downto 1 do if VLC[j] and CC[j]>MinBC then break;
end;
DWP[j]:=1;
for k=j+1 to datacount do begin
if CC[k]>CC[j] then break;
end;
DWL[j]:=j-K;
end;
end;
DRAWSL(DWP,C,0,DWL,0),linethick2;
將
MinBC:=9999999;
for j=i-1 downto i-DESP[i] do begin
if CC[j]<MinBC then MinBC:=CC[j];
if CC[j]=LLC[i] then break;
end;
if MinBC=9999999 then break;
for j=j-1 downto 1 do if VLC[j] and CC[j]<MinBC then break;
改為這樣試試
MaxBC:=0;
for j=i-1 downto i-DESP[i] do begin
if CC[j]>MaxBC then MaxBC:=CC[j];
if CC[j]=LLC[i] then break;
end;
if MaxBC=0 then break;
for j=j-1 downto 1 do if VLC[j] and CC[j]<MaxBC then break;
|
|
向版主報告此篇 |  |
|
2015-08-11 14:55 |
|
|
|  |
 |
chungdune
資深會員
註冊日期: Mar 2008
來 自:
文章數量: 114 |
回覆: 回覆: 回覆: 回覆: 回覆: 回覆: 回覆: 回覆: 回覆: 回覆: 回覆: 回覆: 回覆: 回覆: 回覆: 回覆: 回覆
問題解決了,感謝版主熱心協助
|
|
向版主報告此篇 |  |
|
2015-08-13 16:13 |
|
|
|  |
本站所有內容未經作者授權禁止轉貼節錄, 發表言論僅供參考勿作為投資決策依據。瀏覽本站請使用 IE 5.5 以上版本, 最佳瀏覽解析度 1024 x 768 全彩。
|
Powered by: vBulletin Version 2.3.0 - Copyright©2000-, Jelsoft Enterprises Limited.
簡愛洋行 製作 Copyright 2003-. All Rights Reserved. 聯絡我們
|