盤中可以找出那檔股票有大單在敲進的腳本(詢問問題),謝謝

  •   628 
  • 最後發表   Alumi  2023 八月 31
Alumi 發文於   2023/08/16

嗨,小幫手,你好,我需要以下是『盤中可以找出那檔股票有大單在敲進的腳本』
我看留言這位郭先生說,
第7行Date currentdate 這裡會報錯,
第7行正確是不是應該這樣寫
if Date <> currentdate or Volumestamp = Volumestamp[1] then Xtime =0; //開盤那根要歸0次數

還有第8行如果改為是內盤大單題不是應該這樣寫

if q_tickvolume*q_Last > BigBuy*10 and q_BidAskFlag= -1 then Xtime+=1; //量夠大就加1次

,但不知道是哪裡錯,內盤連續大單警示會一直通知我。是哪裡錯了呢?

 input: BigBuy(500); setinputname(1,"大戶買單(萬)");

 input: BigBuyTimes(10); setinputname(2,"大戶買進次數");

 input:TXT("須逐筆洗價"); setinputname(3,"使用限制:");

 variable: intrabarpersist Xtime(0);//計數器

 variable: intrabarpersist Volumestamp(0);

 Volumestamp =q_DailyVolume;

 if Date <>  currentdate or Volumestamp = Volumestamp[1] then Xtime =0; //開盤那根要歸0次數

 if q_tickvolume*q_Last > BigBuy*10 and q_BidAskFlag= -1 then Xtime+=1; //量夠大就加1次

 if Xtime > BigBuyTimes then ret=1;

 

另外再請教小幫手這腳本是~~~單筆外盤成交超過五百萬的次數超過十次的股票,指的是一分鐘內

比如:500元的股票(等於五十萬)單筆買了十張,一分鐘買了十次就會通知~~還是500元的股票單筆這秒買了四張,下一秒買了三張

再下一秒買了三張,累積了十張=(累積五百萬)算一次,一分鐘如果有累積了100張就通知,這計算方式有點不懂,謝謝解荅

 

 

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

Hello Alumi,

 

小幫手也不清楚當時撰寫腳本的同仁的想法為何,不過撰寫為

if Date <> currentdate or Volumestamp = Volumestamp[1] then Xtime =0;

的話可以確保若運算在昨日資料 (ex. 資料讀取筆數) 上時 Xtime 保持為 0。

 

您可以使用 q_BidAskFlag 判斷內排還外盤沒錯。

 

q_tickvolume 是當筆Tick的成交量,所以

if q_tickvolume*q_Last > BigBuy*10 and q_BidAskFlag= -1 then Xtime+=1;

只有在 "當筆" 交易的成交量乘以成交價大於設定條件且符合內/外盤時Xtime才會增加。

 

之所以會一直通知,是因為條件為 if Xtime > BigBuyTimes then ret=1;。

由於 Xtime 在當日運作時都不會被歸0,所以這邊的次數是當日加總。

 

所以只要當日累計超過設定的筆數就會持續觸發。

 

若不希望這樣的狀況發生,可以將重置Xtime的部分修改為每根Bar重置之類的。

舉例來說:

var: intrabarpersist barCheck(0);

 

if barCheck <> CurrentBar then Xtime = 0;

barCheck = currentbar;

 

這樣的話barCheck就會記錄上一次洗價時currentbar的位置,如果這次洗價換Bar的話,就會重置 Xtime 的數值。

Alumi 發文於   2023/08/18

小幫手,不好意思麻煩你,謝謝,感恩

第一個問題您修正部份我把移到最後排列三例這樣編寫組合對嗎?~~~因為語法不是很熟懂還在學習中,請教您一般腳本最後編寫不是都要有then   ret=1;~~~~對於這點可以教我嗎~~Ret是一個系統的內建變數,為什麼這腳本就不需要用到,我不太理解清楚,郤可以編輯成功!

var: intrabarpersist barCheck(0);

if barCheck <> CurrentBar then Xtime = 0;

barCheck = currentbar ;

第二個問題

另外請教你,以下是外盤大單敲進的腳本,那改為內盤大單敲進的話是將這句改為沒錯吧
if q_tickvolume*q_Last > BigBuy*10 and q_BidAskFlag= -1 then Xtime+=1; //量夠大就加1次

-----------------------------------------------------------------------------------------

修改後的腳本

input: BigBuy(500); setinputname(1,"大戶買單(萬)");

 

input: BigBuyTimes(10); setinputname(2,"大戶買進次數");

 

input:TXT("須逐筆洗價"); setinputname(3,"使用限制:");

 

variable: intrabarpersist Xtime(0);//計數器

 

variable: intrabarpersist Volumestamp(0);

 

Volumestamp =q_DailyVolume;

 

if Date <>  currentdate or Volumestamp = Volumestamp[1] then Xtime =0; //開盤那根要歸0次數

 

if q_tickvolume*q_Last > BigBuy*10 and q_BidAskFlag= 1 then Xtime+=1; //量夠大就加1次

 

var: intrabarpersist barCheck(0);

 

if barCheck <> CurrentBar then Xtime = 0;

 

barCheck = currentbar;    then   ret=1;

XQ小幫手 發文於   2023/08/23

Hello Alumi,

 

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

 

ret = 1 是條件符合是要讓警示/選股觸發時的語法。

舉例來說:

if close > open then ret = 1;

這樣就會在收盤大於開盤時讓警示觸發。

 

小幫手上面已經回覆您: 您可以使用 q_BidAskFlag 判斷內排還外盤沒錯。

所以 if q_tickvolume*q_Last > BigBuy*10 and q_BidAskFlag= -1 then Xtime+=1;

就會是 tick 成交量 * tick 價 要大於設定的金額且為外盤。

 

小幫手會這樣修改:

input: BigBuy(500); setinputname(1,"大戶買單(萬)");

input: BigBuyTimes(10); setinputname(2,"大戶買進次數");

input:TXT("須逐筆洗價"); setinputname(3,"使用限制:");

 

variable: intrabarpersist Xtime(0);//計數器

var: intrabarpersist barCheck(0);

 

if barCheck <> CurrentBar then Xtime = 0;    //每次換Bar重置

barCheck = currentbar;

 

if q_tickvolume*q_Last > BigBuy*10 and q_BidAskFlag= -1 then Xtime+=1; //量夠大就加1次

 

if Xtime > BigBuyTimes then ret=1;

Alumi 發文於   2023/08/24

小幫手,你好謝謝你,我測試了, 原設定大戶買單(萬)500    大戶買進次數10    使用:逐筆洗價~~~~早上只有一檔台積電通知而已,後來改大戶買進次數設定6     有緯創通知一直警示,我看警示內容。有點不了解。
如果以股票124元須買到40張才有500萬,買進次數6等於要240張

11點32分55秒通知4次  11點32分56秒通知4次  11點32分57秒通知4次  11點32分58秒通知4次  最後11點32分59秒通次一次結束

以圖片來說,這秒數通知有點怪怪的  每秒4次通知 等於是累積240張通知一次,4次要有1140張。不知道我這樣舉列對不對

是哪裡出問題呢

這腳本是單位計算一分鐘內只要達到(股票124元須買到40張=500萬就會通知1次),還是幾秒單筆累積到500萬就通知,我看不懂,謝謝小幫手!!

 

input: BigBuy(500); setinputname(1,"大戶買單(萬)");

input: BigBuyTimes(10); setinputname(2,"大戶買進次數");

input:TXT("須逐筆洗價"); setinputname(3,"使用限制:");

variable: intrabarpersist Xtime(0);//計數器

var: intrabarpersist barCheck(0);

if barCheck <> CurrentBar then Xtime = 0;    //每次換Bar重置

barCheck = currentbar;

if q_tickvolume*q_Last > BigBuy*10 and q_BidAskFlag= -1 then Xtime+=1; //量夠大就加1次

if Xtime > BigBuyTimes then ret=1;

 

 

 

 

XQ小幫手 發文於   2023/08/31

Hello Alumi,

 

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

 

您的條件為 if Xtime > BigBuyTimes then ret=1;,且 if barCheck <> CurrentBar then Xtime = 0; 每次換Bar時重置 Xtime。

也就是說,只要同一根Bar內 Xtime 的次數超過 BigBuyTimes 的話,每次洗價時條件都會符合並警示。

故 11:32 這時候有達成的話,在同根Bar中達成後的洗價運算條件都會觸發。

 

如果不希望同根Bar連續觸發,您可以將策略雷達的觸發設定改為K棒內單次觸發。

發表回覆
Close