大單買賣超由負轉正

  •   245 
  • 最後發表   WEIWANG  2022 八月 10
WEIWANG 發文於   2022/08/03

你好

我設想了一個通知的狀況,當某檔個股原本買賣超已經連續一段時間是負的,希望他轉正後通知

我從網路上找了下述的coding,不過實務上用起來只觸發過一次 而且早就錯過負轉正的點。 之後怎麼調都不行

可否請小編和各位先進幫我看一下

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

 

value1=GetField("買進特大單量","D") + GetField("買進大單量","D");

value2=GetField("賣出特大單量","D") + GetField("賣出大單量","D");

value3=value1-value2;

 

if Date <> Date[1] then 

value4=value3

else 

value4=value4[1]+value3;

value5=linearRegSlope(value4,30);

value6=linearRegAngle(value4,5);

if value5<0

and value6>45

and value4 cross over 0

then ret=1;

排序方式: 標準 | 最新
musashi 發文於   2022/08/03

試試看,也可以改在指標確認

if Barinterval <>1 then RaiseRuntimeError("請設定頻率為1分鐘");
if Date <> Date[1] then value1=0;
value1=GetField("買進特大單量","D") + GetField("買進大單量","D")
      -GetField("賣出特大單量","D") - GetField("賣出大單量","D");
if value1[1] <0 and value1>0
then begin
    ret=1;
    //plot1(value1); 
end;

WEIWANG 發文於   2022/08/03

Musashi 感謝,我來試試看

WEIWANG 發文於   2022/08/04

Musashi,我想請教一下

以這個例子來說, 我想透過value[1]表達上一個BAR的大單買賣超,請問這個寫法是對的嗎

因為實際上用起來,確實有一些奇怪的地方

謝謝

 

 

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

if Date <> Date[1] then value1=0;

value1=GetField("買進特大單量","D") + GetField("買進大單量","D")

      -GetField("賣出特大單量","D") - GetField("賣出大單量","D");

if value1[1] <0 and value1[2] <0 and value1[3] <0 and value1[4] <0 and value1[5] <0 and value1[6] <0 and value1[7] <0 

   and value1[8] <0 and value1[9] <0 and value1[10] <0 and value1>0

then begin

    ret=1;

    //plot1(value1); 

end;

 

musashi 發文於   2022/08/04

如果你在1分頻率跑腳本,value1[1]是指1分K棒的前一根K棒,然後在這根K棒去執行抓日K的資料。

如果你在日頻跑腳本,value1[1]是指日頻K棒的前一根K棒,然後在這根K棒去執行抓日K的資料。

WEIWANG 發文於   2022/08/04

謝謝!

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

Hello WEIWANG,

 

變數的頻率是和腳本執行的頻率相同的。

所以舉例來說,腳本執行在1分鐘頻率上的話:

value1= getfield("High", "D");

value1[1] 取得的會是 上一根1分鐘Bar執行時所取得的日頻率 high。

getfield("High", "D")[1] 取得的會是 上一根日頻率Bar的 high。

兩者是不相同的,您可以使用 print 將數值印出確認即可得知。

 

感謝 musashi 的熱心回覆。

發表回覆
Close