想請問在1分k圖表上標示出 "3天內 5分k最大成交量的高低點"

  •   410 
  • 最後發表   林昱齊  2022 十一月 22
林昱齊 發文於   2022/11/18

不好意思程式新手
想請問這樣的邏輯語法有那裡是需要修改的嗎?

謝謝


input:i(0);

 

if barfreq <> "Min" or barinterval <> 1 then raiseruntimeerror("僅支援1分頻率");

 

if date <> date[1] then begin

    value1=highest(v[i]+v[i+1]+v[i+2]+v[i+3]+v[i+4],162/(i+1));

    value2=0;

value3=0;

end;

 

if GetField("成交量","5") > value1  then begin 

    value1 = GetField("成交量","5");

    value2 = getField("high","5");

value3=  getField("low","5");

value4=(value2+value3)*0.5;

end;

 

 

noplot(1);

noplot(2);

noplot(3);

plot1(value2,"5分高點"); 

plot2(value3,"5分低點");

plot3(value4,"5分高低一半");

 

XQ小幫手 發文於   2022/11/22

 Hello 林昱齊,

 

您的 value1=highest(v[i]+v[i+1]+v[i+2]+v[i+3]+v[i+4],162/(i+1)); 抓到的是近162根1分鐘Bar中,5根1分鐘Bar加總 (不是5分鐘Bar) 的成交量最高值。

應該和您想要的不同。

且後面noplot後接plot,這樣的話noplot就沒有效果了。

 

小幫手會建議您用簡單些的作法,寫迴圈去抓過去最大量的位置,再用此值取得對應的高低點。

舉例來說:

value1 = 0;

value2 = 0;

for value3 = 0 to 161 begin

    if getfield("Volume", "5")[value3] > value1 then begin

value1 = getfield("Volume", "5")[value3];

value2 = value3;

end;

    end;

 

value4 = getfield("High", "5")[value2];

value5 = getfield("low", "5")[value2];

這樣 value4 和 value5 就會是近162根5分鐘Bar中成交量最大的高低點。

發表回覆
Close