![]() |
在這個頁面顯示本主題全部的 14 個文章 |
奇狐社區論壇 (http://www.chiefox.com.tw/bbs/index.php)
- 問題交流 (http://www.chiefox.com.tw/bbs/forumdisplay.php?forumid=28)
-- [問題]找出特定K線後取後值 (http://www.chiefox.com.tw/bbs/showthread.php?threadid=22959)
[問題]找出特定K線後取後值
版主 您好
目前想在5日內選出“最大振幅+紅K+為漲”的K線後,取其開收高低價存入變數後做計算,並希望與後面行情的數據做比較,但也可能該條件就是最近1日,不知該如何處理。
情境如下:
週五盤後,以本週星期一至星期五的K線為範圍,並先找到“最大振幅+紅K+為漲”的K線,例如:
若是星期二。此時希望能往後抓星期三至星期五的最高價及最低價,以供後續做計算。
但若最大振幅的紅漲K線是星期五,就直接取開收高低等4個價位,做後續計算。
目前寫法如下,但面臨到會排除最近1根K線(也就是星期五),以及因為基準K線是變動的,要往後多少日做取值也是變動,而不知道該怎麼寫
高低區:= H-L;
紅K:= C >O;
CondBar:=HHVbars(高低區 and 紅K,5);//近5日最大高低區紅K線
MBO:=ref(O,CondBar); //取該K線之開
MBC:=ref(C,CondBar); //取該K線之收
MBH:=ref(H,CondBar); //取該K線之高
MBL:=ref(L,CondBar); //取該K線之低
幅度:=(MBH-MBL)/MBL*100;//高低幅度
CondBar2:=if( CondBar > 1,CondBar-1,0);//取近5日最大高低K後一日K線
MBO2:=ref(O,CondBar2); //取該K線之開
MBC2:=ref(C,CondBar2); //取該K線之收
MBH2:=ref(H,CondBar2); //取該K線之高
MBL2:=ref(L,CondBar2); //取該K線之低
幅度2:=(MBH2-MBL2)/MBL2*100;//高低幅度
謝謝您
祝 順心
回覆: [問題]找出特定K線後取後值
引用:
最初由 bill25789 發表
版主 您好
目前想在5日內選出“最大振幅+紅K+為漲”的K線後,取其開收高低價存入變數後做計算,並希望與後面行情的數據做比較,但也可能該條件就是最近1日,不知該如何處理。
情境如下:
週五盤後,以本週星期一至星期五的K線為範圍,並先找到“最大振幅+紅K+為漲”的K線,例如:
若是星期二。此時希望能往後抓星期三至星期五的最高價及最低價,以供後續做計算。
但若最大振幅的紅漲K線是星期五,就直接取開收高低等4個價位,做後續計算。
目前寫法如下,但面臨到會排除最近1根K線(也就是星期五),以及因為基準K線是變動的,要往後多少日做取值也是變動,而不知道該怎麼寫
紅漲幅:=(C/ref(c,1)-1)*100>0 and C>O;
CondBar:=HHVbars(紅漲幅,5);//近5日最大高低區K線
MBO:=ref(O,CondBar); //取該K線之開
MBC:=ref(C,CondBar); //取該K線之收
MBH:=ref(H,CondBar); //取該K線之高
MBL:=ref(L,CondBar); //取該K線之低
幅度:=(MBH-MBL)/MBL*100;//高低幅度
CondBar2:=if( CondBar > 1,CondBar-1,0);//取近5日最大高低K後一日K線
MBO2:=ref(O,CondBar2); //取該K線之開
MBC2:=ref(C,CondBar2); //取該K線之收
MBH2:=ref(H,CondBar2); //取該K線之高
MBL2:=ref(L,CondBar2); //取該K線之低
幅度2:=(MBH2-MBL2)/MBL2*100;//高低幅度
謝謝您
祝 順心
回覆: 回覆: [問題]找出特定K線後取後值
引用:
最初由 cgjj 發表
奇狐裡的 振幅 和 漲幅 是不一樣的東西
您解說用振幅,程式卻是採漲幅。
請問您要用何者?
該週如果最大幅度的是黑k,如何處理呢? (未見說明)
回覆: 回覆: 回覆: [問題]找出特定K線後取後值
引用:
最初由 bill25789 發表
抱歉,應是最大高低差(H-L),我誤寫成漲幅。
另外,基準K線若是黑K,自己不知到怎麼排除,只能選股完用人工處理,亦或程式能處理?
選股邏輯是想找到5日內出現最大振幅後,後續的振幅及高低價有顯著縮小或在差不多的價位。
再煩請版主協助,謝謝您!
CondBar:=HHVbars(H-L,5);//近5日最大高低區K線
MBO:=ref(O,CondBar); //取該K線之開
MBC:=ref(C,CondBar); //取該K線之收
MBH:=ref(H,CondBar); //取該K線之高
MBL:=ref(L,CondBar); //取該K線之低
幅度:=(MBH-MBL)/MBL*100;//高低幅度
CondBar2:=if( CondBar > 1,CondBar-1,0);//取近5日最大高低K後一日K線
MBO2:=ref(O,CondBar2); //取該K線之開
MBC2:=ref(C,CondBar2); //取該K線之收
MBH2:=ref(H,CondBar2); //取該K線之高
MBL2:=ref(L,CondBar2); //取該K線之低
回覆: 回覆: 回覆: 回覆: [問題]找出特定K線後取後值
引用:
最初由 cgjj 發表
Re:基準K線若是黑K,自己不知到怎麼排除,只能選股完用人工處理,亦或程式能處理?
要寫為程式就要有明確的規則定義!
您必須要給我遇到黑K時的處置方法
這樣才算規則完整~~
回覆: 回覆: 回覆: 回覆: 回覆: [問題]找出特定K線後取後值
引用:
最初由 bill25789 發表
好的,假設從星期1至星期5區間抓到星期2為最大高低振幅基準K線,
若是紅K,就是對後面星期3-5的K線的最高價及最低價取值,當〔”每根K線最高價<基準K最高價*1.05倍”+”每根K線最低價>基準K最低價*0.95倍”〕(後面稱B條件)。此時選股,條件成立。
但若是〔黑K〕或〔屬於紅K但B條件不成立〕,那就再找星期3-5間最大振幅為另一個新基準K線。
若另一新的基準K線是星期3,
若是紅K,就取值並執行B條件,判斷選股是否條件成立。
但若星期3仍是〔黑K〕或〔屬於紅K但B條件不成立〕,再找星期4-5間最大振幅為新基準K線。
若新基準K是星期4,
若是紅K,因為後面只剩1根星期5的K線,故改判斷〔最高價(星期5)<基準K(星期4)收盤價+最低價(星期5)>基準K(星期4)開盤價〕(後續稱C條件),若符合,此時選股,條件成立。
若是〔黑K〕或〔屬於紅K但C條件不成立〕,那就對最後1根K線之星期5計算:〔最低價>前1根(星期四)高低幅度之二分之一以上〕(條件D),若符合,選股條件成立;反之,選股條件不成立。
若星期5才是最大高低振幅基準K線時,因為後面已無K線作比較,就對其判斷,
當屬紅K時,判斷〔(H-L)L*100 >4〕,若符合選股條件成立,反之不成立。
若屬黑K,直接為選股條件不成立。
謝謝您
回覆: 回覆: 回覆: 回覆: 回覆: 回覆: [問題]找出特定K線後取後值
引用:
最初由 cgjj 發表
(H-L)L*100 >4
這個運算式有問題,請修正
另外
一星期中的交易天數可能不足5天,甚至只有僅交易一天
回覆: 回覆: 回覆: 回覆: 回覆: 回覆: 回覆: [問題]找出特定K線後取後值
引用:
最初由 bill25789 發表
抱歉應該是(H-L)/L*100 >4,高低振幅大於4%
另外以一星期寫,是這樣寫情境範例可能比較明瞭,K線數範圍不一定要5根,也不會限定要用在哪個週期,之後會以參數方式調整。
謝謝您
原碼:
Sel:0; KN:=5; RK:=C>O; OO:=O; HH:=H; LL:=L; CC:=C; HL:=H-L; for i= datacount-KN+1 to datacount do begin MaxHL:=-1; for j=i to KN do begin if HL[j]>MaxHL then begin MaxHL:=HL[j]; i:=j; end; end; if i=datacount then begin if RK[i] then Sel:=(HH[i]-LL[i])/LL[i]*100>4; end else if i=datacount-1 then begin if RK[i] then Sel:=HH[i+1]<CC[i] and LL[i+1]>OO[i]; if Sel=0 then Sel:=LL[i+1]>(HH[i]+LL[i])/2; end else begin if RK[i] then begin for j=i+1 to datacount do begin if Not(HH[j]<HH[i]*1.05 and LL[j]>LL[i]*0.95) then break; end; Sel:=j=datacount+1; end; end; if Sel>0 then break; end;
回覆: 回覆: 回覆: 回覆: 回覆: 回覆: 回覆: 回覆: [問題]找出特定K線後取後值
引用:
最初由 cgjj 發表
原碼:
Sel:0; KN:=5; RK:=C>O; OO:=O; HH:=H; LL:=L; CC:=C; HL:=H-L; for i= datacount-KN+1 to datacount do begin MaxHL:=-1; for j=i to KN do begin if HL[j]>MaxHL then begin MaxHL:=HL[j]; i:=j; end; end; if i=datacount then begin if RK[i] then Sel:=(HH[i]-LL[i])/LL[i]*100>4; end else if i=datacount-1 then begin if RK[i] then Sel:=HH[i+1]<CC[i] and LL[i+1]>OO[i]; if Sel=0 then Sel:=LL[i+1]>(HH[i]+LL[i])/2; end else begin if RK[i] then begin for j=i+1 to datacount do begin if Not(HH[j]<HH[i]*1.05 and LL[j]>LL[i]*0.95) then break; end; Sel:=j=datacount+1; end; end; if Sel>0 then break; end;
回覆: 回覆: 回覆: 回覆: 回覆: 回覆: 回覆: 回覆: 回覆: [問題]找出特定K線後取後值
引用:
最初由 bill25789 發表
謝謝版主幫忙,自己測試後發現自己的條件不夠嚴苛,有選跟沒選差不多。
若把基準紅K再做設定為(開收價差)>(上引線長度)+(下引線度) AND (下引線長度)>(上引線長度)(下面稱甲條件)
這部分不確定是否直接往後加條件
RK:=C>O and (C-O)>(H-C)+(O-L) and (O-L)>(H-C);
--------
另外,想再增加基準K不是範圍內第1根的條件:次基準紅K對比前面K線,其最高價要超過前面1根高低振福1/2以上(也就是條件D邏輯),
用前面情境舉例,若星期二為基準紅K且符合甲條件時,因為星期一判為最大高低振幅的黑K,此時,多一個D條件,星期二這根基準紅K的最高價要超過星期一高低振幅的二分之一以上。
同理,若星期三為基準紅K且符合甲條件時,多加判斷D條件,它的最高價是否有超過星期二高低振幅的二分之一以上。
這部分不知道該怎麼塞入程式碼裡
------
另外發現(B條件)〔”每根K線最高價<基準K最高價*1.05倍”+”每根K線最低價>基準K最低價*0.95倍”〕也過於寬鬆,
若也加入(D條件)邏輯,〔”每根K線最高價<基準K最高價*1.05倍”+”每根K線[最低價]均超過基準K高低振幅的二分之一以上”〕。
可否將這部分程式碼
if Not(HH[j]<HH[i]*1.05 and LL[j]>LL[i]*0.95) then break;
直接改成
if Not(HH[j]<HH[i]*1.05 and (LL[j]-LL[i])/(HH[i]-LL[i])>0.5) then break;
謝謝您
原碼:
Sel:0; KN:=5; RK:=C>O and (C-O)>(H-C)+(O-L) and (O-L)>(H-C); OO:=O; HH:=H; LL:=L; CC:=C; HL:=H-L; StNo:=datacount-KN+1; for i= StNo to datacount do begin MaxHL:=-1; for j=i to KN do begin if HL[j]>MaxHL then begin MaxHL:=HL[j]; i:=j; end; end; if i=datacount then begin if RK[i] then Sel:=(HH[i]-LL[i])/LL[i]*100>4; end else if i=datacount-1 then begin if RK[i] then Sel:=HH[i+1]<CC[i] and LL[i+1]>OO[i]; if Sel=0 then Sel:=LL[i+1]>(HH[i]+LL[i])/2; end else begin CK:=RK[i]; if i>StNo then CK:=RK[i] and HH[i]>(HH[i-1]+LL[i-1])/2; if CK then begin for j=i+1 to datacount do begin if Not(HH[j]<HH[i]*1.05 and LL[j]>(HH[i]+LL[i])/2) then break; end; Sel:=j=datacount+1; end; end; if Sel>0 then break; end;
版主 您好
測試後挑出的股票有點怪怪的,附檔為1313聯成2021/5/4-60分線,區間範圍仍是5。
編號1:為大根有上下引線的黑K<=最大振幅但黑K所以非基準K
編號2:為有下引線的紅K<=應是被程式判定為基準K
編號3-5:都是黑K
疑問1:
編號2的最高價(27.85$)並沒有超過編號1高低振幅1/2(27.87$)
也就是〔次基準紅K對比前面K線,其最高價要超過前面1根高低振福1/2以上〕,應不能判為基準K才是,除非條件改為〔次基準紅K對比前面K線,其最高價要超過前面1根高低振福1/3以上〕條件才會成立。
疑問:
假設編號2基準K是正確的
編號3-5的最低價26.55$、26.05$、26.95$並沒有超過基準K高低振福1/2(26.95$),與〔”每根K線最高價<基準K最高價*1.05倍”+”每根K線[最低價]均超過基準K高低振幅的二分之一以上” 〕條件不相符
再請版主協助 謝謝您
引用:
最初由 bill25789 發表
版主 您好
測試後挑出的股票有點怪怪的,附檔為1313聯成2021/5/4-60分線,區間範圍仍是5。
編號1:為大根有上下引線的黑K<=最大振幅但黑K所以非基準K
編號2:為有下引線的紅K<=應是被程式判定為基準K
編號3-5:都是黑K
疑問1:
編號2的最高價(27.85$)並沒有超過編號1高低振幅1/2(27.87$)
也就是〔次基準紅K對比前面K線,其最高價要超過前面1根高低振福1/2以上〕,應不能判為基準K才是,除非條件改為〔次基準紅K對比前面K線,其最高價要超過前面1根高低振福1/3以上〕條件才會成立。
疑問:
假設編號2基準K是正確的
編號3-5的最低價26.55$、26.05$、26.95$並沒有超過基準K高低振福1/2(26.95$),與〔”每根K線最高價<基準K最高價*1.05倍”+”每根K線[最低價]均超過基準K高低振幅的二分之一以上” 〕條件不相符
再請版主協助 謝謝您
謝謝版主協助!不好意思沒有注意到。
引用:
最初由 bill25789 發表
謝謝版主協助!不好意思沒有注意到。
全部時間均為台灣時間, 現在時間為23:36 | 在這個頁面顯示本主題全部的 14 個文章 |
Powered by: vBulletin Version 2.3.0 - Copyright©2000-, Jelsoft Enterprises Limited.
簡愛洋行 製作 Copyright 2003-. All Rights Reserved.