全日盤買賣力均量分開計算

  •   216 
  • 最後發表   夢渙  2023 十月 17
夢渙 發文於   2023/09/27

小幫手你好:

1. 我用time >= 150000 AND time < 050000 和  time >= 084500 and time < 134500 

想分別計算當時段的買賣力均量

可是執行後,數據全部都是0

2. 想要在每天的1500和隔天0845對累加內外盤量重新計算(歸0)

已經用了不同的變數區分  var:vol_1500(0);   var:vol_0845(0);

可是結果還是會累加到之前的資料

麻煩小幫手幫忙看一下,謝謝

 

以下為程式碼:

var:vol_1500(0); //夜盤的累加內外盤

var:vol_0845(0); //日盤的累加內外盤

 

if symbolexchange <> "TW" and symbolexchange <> "TF" then raiseruntimeerror("不支援此商品");

if SymbolType <> 2 and SymbolType <> 3 and SymbolType <> 5 then raiseruntimeerror("不支援此商品");

 

if barfreq <> "Min" and barfreq <> "D" and barfreq <> "AD" then 

raiseruntimeerror("僅支援分鐘與日頻率(含還原)");

 

//if date <> date[1] then begin

 

if time >= 150000 AND time < 050000 then begin

 

value1 = GetField("外盤量","D");

value2 = GetField("內盤量","D");

value3 = value1 - value2;

 

vol_1500 = summation(value3, 840); //夜盤共有840分鐘

 

value79 = getField("外盤成交次數", "D") + getField("內盤成交次數", "D");

 

if value79 = 0 then 

value89 = 0

else 

value89 = (vol_1500 / value79)*100;

end;

 

if time >= 084500 and time < 134500 then begin

 

value1 = GetField("外盤量","D");

value2 = GetField("內盤量","D");

value3 = value1 - value2;

 

vol_0845= summation(value3, 300);

 

value79 = getField("外盤成交次數", "D") + getField("內盤成交次數", "D");

 

if value79 = 0 then 

value89 = 0

else 

value89 = (vol_0845 / value79)*100;

end;

//end;

 

Print( "datetime", datetime, "內外盤", value3, "累加內外盤量0845", vol_0845, "累加內外盤量1500", vol_1500,"成交次數", value79, "avg", value89);

 

plot1(value3,"買賣力");

plot2(value1,"外盤量",checkbox:=0);

plot3(value2,"內盤量",checkbox:=0);

plot4(value89,"均線",checkbox:=0);

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

Hello 夢渙,

 

網站上有教學區,裡面有XS語法的基礎和應用,建議您先閱覽該區文章。

 

小幫手不知道您是怎麼使用的,不過需注意使用日頻率的在指標上的話,該根Bar不會逐筆洗價,且日頻率的 time 會是0。

建議您使用1分鐘頻率。

 

要限定在夜盤區間執行,條件應該為 time >= 150000 or time < 050000。

因為不會有時間同時大於150000然後又小於050000。

 

GetField("外盤量","D") 取得的是當日累積的的外盤量,這根腳本只在什麼區間累積沒有關係。

如果只要計算區間累積的話,應該只能加總區間內的資料,而不是日頻率的資料。

也就是加總區間內的 GetField("外盤量") - GetField("內盤量")。

 

vol_1500 = summation(value3, 840);

會向前加總 840 根Bar,可是腳本不是只有在 time = 045900 和 time = 134400 時執行。

建議您可以用變數累加會比較適合。

舉例來說,1分鐘頻率的話:

 

if time >= 150000 or time < 050000 then begin

    if time = 150000 then begin     //區間開始時數值歸0

        vol_1500 = 0;

        value79 = 0;

        end;

 

    value1 = GetField("外盤量");

    value2 = GetField("內盤量");

    value3 = value1 - value2;

    vol_1500 += value3;            //(外盤量 - 內盤量) 累積

 

    value79 += getField("外盤成交次數") + getField("內盤成交次數");    //區間內內外盤成交次數累積

 

    if value79 = 0 then value89 = 0

        else value89 = (vol_1500 / value79)*100;

 

    end;

夢渙 發文於   2023/10/04

謝謝小幫手的回复

我原本想要將系統內建指標"買賣力"運用在全日盤

所以才會想劃分為日盤和夜盤時段分開計算

想請問這樣還適合用GetField("外盤量")-GetField("內盤量")的日頻率計算嗎?

XQ小幫手 發文於   2023/10/11

 Hello 夢渙,

 

GetField("外盤量")-GetField("內盤量") 這會依據您使用的頻率而改變取得的資料。

如果您使用在1分鐘頻率的話,那麼就會是該分鐘的外盤量減內盤量。

所以要統計日盤的資訊和夜盤的資訊,只要分別將日盤和夜盤區間內的分鐘資料加總即可。

就如同小幫手上面的範例一樣。

夢渙 發文於   2023/10/11

謝謝小幫手的回复

想請問GetField("外盤量","D"),頻率"當日"的時間區間是多少呢?

XQ小幫手 發文於   2023/10/17

Hello 夢渙,

 

如果您使用在 FITXN*1.TF 上的話,會是下午的 15:00 開始到隔日下午的 13:45。

將 plot1(getfield("外盤量","D")); 畫在1分鐘頻率上的 FITXN*1.TF 就可以觀察出來。

發表回覆
Close