要怎麼計算日內的當日累積量(從第一根K棒開始計算)

  •   210 
  • 最後發表   andrew1234  2024 四月 16
andrew1234 發文於   2024/04/12

用1分K計算紅K量是正的,黑K量是負的,然後相加當日累積,但畫出來的圖都是把前幾天的值再累加上去,請問要加什麼條件才可以限定從當日第一根K棒的量開始計算?謝謝

排序方式: 標準 | 最新
bowen 發文於   2024/04/13

if date <> date[1] then 歸零

andrew1234 發文於   2024/04/13

hi bowen感謝指導

我修改後還是會加到前一天的量,還在練習都是拼拼湊湊哈

我寫的如下想再請教以下問題

1. 還是會加到前一天的紅黑K的量

2. 當天紅黑K的量要怎麼寫才能從第一根一直累加到收盤?

3.如果股票或期貨日盤用if date <> date[1] then 應該可以解決,如果是期貨夜盤從15:00開始到隔天早上是不是會有問題?

謝謝

 

inputs:

    bfreq("Min"),

    isrealtime(1);

 

 

vars:

    v1(0),

    v2(0),

    v3(0),

   v4(0),

   v5(0);

 

 

if bfreq <> "Min" then

    RaiseRuntimeError("僅支援分鐘");

 

if isrealtime <> 1 then

    return;

 

 

if C>O then v1=volume else v1=0;

if C<O then v2=volume*(-1) else v2=0;

if C=O then v3=0;

 

if C <> O then

v4= v1+v2+v3

else

v4= v1+v2+v3;

 

 

If date <> date[1] and  CurrentBar =1 then

 

  value1= v4

else 

  value1= v4+v4[1];

 

plot1(value1,"紅黑K累積量");

bowen 發文於   2024/04/14

給你參考,不知道是不是你要的

if barfreq <> "min" or barInterval <> 1 then raiseRunTimeError("本腳本只適用1分K");

var:red_k(0),black_k(0),sum_V(0);

if symbolType = 2 and date <> date[1] then begin
    red_k = 0; black_k = 0; sum_V = 0;
end;
if symbolType = 3 or symbolType = 5 then begin
    if time = 150000 then begin
        red_k = 0; black_k = 0; sum_V = 0;
    end;
    if time = 084500 and timeDiff(time,time[1],"H") < 0 then begin // 沒夜盤 8 - 13 會 < 0  有夜盤: 8 - 4 會 > 0
        red_k = 0; black_k = 0; sum_V = 0;
    end;
end;

if close > open then red_k = red_k + volume;
if close < open then black_k = black_k + volume;

sum_V = red_k - black_k;
plot1(sum_V);

可能邏輯要再清楚一些,

先歸零再計算,所以if date <> date[1] 擺前面,當天第1根bar不等於1,plot出來你就明白。

 

andrew1234 發文於   2024/04/14

hi bowen

真的很厲害!感謝指導!

XS小編 發文於   2024/04/16

Hello andrew1234,

 

小編補充,currentbar回傳的是目前運算K棒的序列編號,腳本計算起點的那根Bar為1,接下來依序遞增。

細節可以參考函數說明

 

感謝 bowen 的熱心回覆。

發表回覆
Close