1分K開盤第1.2.3根都是紅棒

  •   314 
  • 最後發表   mei  2020 十月 07
mei 發文於   2020/10/06

小幫手 您好

我想盤中找出1分k,開盤起第1.2.3根都是紅棒,今天預估量是昨量的2倍以上,開高(比昨收高1%),盤中最新價格已漲2%

程式碼如下,結果有出現第1根k就是黑K的情況,請幫我看一下,是哪個地方有錯?謝謝

 

if barfreq <> "Min" or Barinterval <>1 then RaiseRuntimeError("請設定頻率為1分鐘");

variable:BarNumberOfToday(0); 

value1 = GetField("Volume", "D")[1];

value2 = GetField("close", "D")[1];

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

if Date <> Date[1] then

BarNumberOfToday=1 

else

BarNumberOfToday+=1;{記錄今天的Bar數} 

if barnumberoftoday=3 then begin

//今天第三根1分鐘K,也就是開盤第三分鐘

if trueall(close>=close[1],3)

//連三根K棒都是紅棒

and GetField("開盤價","D")> value2*1.01

and value3>value1*2

//預估量是昨量兩倍以上

and close>=value2*1.02

//漲2%

then ret=1;

end;

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

mei 您好

主要的原因在於您的BarNumberOfToday

會在資料讀取筆數的時候就開始累積

Date = Date[1] 他還是會加一

所以就會像如圖所示的一直加下去

解決方法是您要設立一個時間點讓她歸零

if time=133000 then 

 

BarNumberOfToday=0; 

在每天收盤時將此數值歸零 隔天就會重新開始計算了

mei 發文於   2020/10/06

小幫手 您好

謝謝您的回覆

我把if time=133000 then BarNumberOfToday=0; 就放在上述程式碼最後,是否就ok了呢?

if barfreq <> "Min" or Barinterval <>1 then RaiseRuntimeError("請設定頻率為1分鐘");

variable:BarNumberOfToday(0); 

value1 = GetField("Volume", "D")[1];

value2 = GetField("close", "D")[1];

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

if Date <> Date[1] then

BarNumberOfToday=1 

else

BarNumberOfToday+=1;{記錄今天的Bar數} 

if barnumberoftoday=3 then begin

//今天第三根1分鐘K,也就是開盤第三分鐘

if trueall(close>=close[1],3)

//連三根K棒都是紅棒

and GetField("開盤價","D")> value2*1.01

and value3>value1*2

//預估量是昨量兩倍以上

and close>=value2*1.02

//漲2%

then ret=1;

end;

if time=133000 then 

 BarNumberOfToday=0; 

 

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

mei 您好

可以的,此段code主要是要清除9:00 前的時間

讓他清除紀錄的數據  放哪都可以 

 

mei 發文於   2020/10/07

謝謝 ^_^

發表回覆
Close