拉回再漲

  •   282 
  • 最後發表   mei  2020 十月 08
mei 發文於   2020/10/06

 小幫手 您好

若頻率設5分鐘,想找出開盤第1根為黑K,但後來上漲又拉回回測MA20的股票,請問以下程式碼是否OK?

謝謝! (特別是對於頻率為5分鐘,開盤第1根第2根 或最新1根的函數寫法,不知是否正確?)

Value11 = GetField("close", "D")[1]; //昨天收盤價

Value12=q_EstimatedTotalVolume; //GetField("估計量")

Value13= Average(close,20); //若頻率為5分鐘,則指5分鐘線圖的ma20

if currentdate <> date then return;

if time = 091000 then     

begin

value1 = getfield("open","5")[2];//第一根5分K開盤價

value2 = getfield("high","5")[2];

value3 = getfield("low","5")[2];

value4 = getfield("close","5")[2];

end;

condition1= value1 > value4;    //第一根為黑k

condition2= getfield("open","5")[1] <getfield("close","5")[1] ;  //第二根為紅k

condition3= getfield("open","5")[0] <getfield("close","5")[0] ;  //第三根為紅k

condition4= getfield("close","5")[0]> getfield("high","5")[1] ;  //第三根收盤高過第二根高

condition5= getfield("close","5")[0]> getfield("high","5")[2] ;   //第三根收盤高過第一根高

condition6= CloseD(0) >= Value11*1.02;      //盤中最新收盤價已漲2%

condition7= CloseD(1)<= Value13 and CloseD(1)>= Value13*0.99 ; //上一根k的收盤價小於=5分鐘線圖的ma20,但收盤價距ma20最多1%

condition8= CloseD(0)>openD(0) ;      //最新1根為紅K

condition9= CloseD(0)>HIGHD(1) ;      //最新1根K收盤價比上一根k的高點還高

condition10=Value12>GetField("Volume", "D")[1] ;//估計量大於昨量

if   condition1 

and (condition2 OR condition3 ) //第二或三根為紅k

and condition4

and condition5

and condition6

and condition7

and condition8

and condition9

then ret=1;

排序方式: 標準 | 最新
XQ小幫手 發文於   2020/10/08

mei 您好

想先詢問一下

1.您的condition2~5 是要算當前的k棒 還是指開盤的前三根呢??

2.condition7 看起來的感覺 您是要拿昨日的收盤價與5分k的 20ma做比較嗎?? 

因為closed(1)是在日頻率以下取日的收盤價 

我是覺得如果您要取最新一根收盤價的話 直接用close 即可

------

如果上方第一點改為開盤前三個上漲的話,那會符合"後來上漲"這個條件的

而我覺得 

condition7= CloseD(1)<= Value13 and CloseD(1)>= Value13*0.99 ;

應該是改成當下的close 也就是

condition7= Close<= Value13 and Close>= Value13*0.99 ;

mei 發文於   2020/10/08

小幫手 好

1.您的condition2~5 是要算當前的k棒 還是指開盤的前三根呢??

A:指開盤的前三根

2.我想要的是最新一根收盤價,謝謝你指出我的盲點,我會修改condition7~9

非常感謝您的幫忙 ^_^

XQ小幫手 發文於   2020/10/08

mei 您好

那 A:指開盤的前三根 

這個您的condition2~5 應該也要取變數來記錄數值喔!

像您的condition1 

不然他是會抓到最新值的 ex 10:00 

getfield("open","5")[1] 就會抓到 9:55的數值

這個要留意一下~~

mei 發文於   2020/10/08

小幫手 好 

可以修改如下嗎?   謝謝 

if time = 091000 then     

begin

value1 = getfield("open","5")[2];//第一根5分K開盤價

value2 = getfield("high","5")[2];

value3 = getfield("low","5")[2];

value4 = getfield("close","5")[2];

value5 = getfield("open","5")[1];//第2根5分K開盤價

value6 = getfield("close","5")[1] ;

value7 = getfield("high","5")[1];

value8 = getfield("open","5")[0];//第3根

value9 = getfield("close","5")[0] ;

end;

發表回覆
Close