分K裡加入外資買賣超的語法

  •   366 
  • 最後發表   金士曼  2019 四月 08
金士曼 發文於   2019/03/23

請問小幫手,我要在策略雷達警示裡的分K裡面加入

外資買超在5天之內大於300張,且5天之內買超至少大於3天,下面打法是否正確? 謝謝

input:day(5,"買超天數"), Fboughts(300,"外資買超張數");
value1= GetField("外資買賣超","D")[1];
if ....... and countif(value1>Fboughts,day)>= 3 then ret = 1;

 

另外如果要改成賣超,下面這行改這樣對嗎?

input:day(5,"賣超天數"), Fboughts(-300,"外資買超張數");

排序方式: 標準 | 最新
XQ小幫手 發文於   2019/03/25

Hi 金士曼,

外資買超在5天之內大於300張,且5天之內買超至少大於3天,下面打法是否正確? 

大部分正確,詳細代表的意思應該為:外資買超在5天之內大於300張(不包含今日),且5天之內買超至少大於等於3天。


 

另外如果要改成賣超,下面這行改這樣對嗎?

應該還要修改以下這行程式碼的「大於」改為「小於」

if ....... and countif(value1<Fboughts,day)>= 3 then ret = 1;

 

以上方向供您參考,謝謝。

金士曼 發文於   2019/03/26

小幫手你好 ,今天實際在60分K裡測試

顯示計算發生錯誤,請檢察腳本內的算式

這個腳本在加入外資買超這個條件之前是可以跑的,所以問題是出在外資買超這個語法

小幫手幫忙看一下,再分K裡使用,我這個語法是不是還有哪邊需要修改? 謝謝 。

 

策略雷達 收盤後這個腳本可以跑,盤中無法跑,這樣我是少加入什麼條件?

input:period(30,"計算期間"), day(5,"買超天數"), Fboughts(300,"外資買超張數");
value1= GetField("外資買賣超","D")[1];
value2=summation(value1,day);
if ....... and countif(value1>Fboughts,period)>= 3 then ret = 1;

 

請問是不是還需要加入

input:TXT("僅適用日線"); setinputname(1,"使用限制");
settotalbar(period+day);

if Barfreq <> "D" then return;

我原本的腳本沒有加入,是因為沒加入上面而導致無法計算?是的話,因該加入哪個? 還是有其他的項目沒加到?

 

另外如果要改成賣超,完整如這行對嗎?

input:period(30,"計算期間"), day(5,"賣超天數"), Fboughts(-300,"外資買超張數");

if ....... and countif(value1<Fboughts,day)>= 3 then ret = 1

XQ小幫手 發文於   2019/03/26

Hi 金士曼,

您好,若在分K頻率使用,請您先加入以下語法試試看,

if GetFieldDate("外資買賣超","D") = date then
    value1 = GetField("外資買賣超","D");

 

若仍有問題,請您提供「雷達匯出檔案,匯出時記得勾選包含自訂腳本」 至此,

以利小幫手對照查看問題的原因,謝謝。

金士曼 發文於   2019/03/26

小幫手你好

可以麻煩示範一個分K使用的完整語法嗎?

我的60分K腳本只要加入外資買超的條件,就沒辦法讀取

不曉得我 少了哪個條件! 謝謝。

 

另外晚上的時候有測試幾個腳本,比如說原本5分K的腳本不能讀取完成(跑不了),

出現這個訊息   [計算停止,取得資料欄為錯誤,出現最大引用數值小於腳本需要的範圍],

同一個腳本指定頻率改跑5分K周期以上又能跑了,同時有2~3個腳本晚上的時候都出現這樣的狀況,週期往高調就可以跑,腳本內都沒有限制特定頻率,請問這是後端出現問題嗎?

XQ小幫手 發文於   2019/03/27

Hi 金士曼,

可以麻煩示範一個分K使用的完整語法嗎?

您好,可以使用 getfeilddate 與 date 的判斷,來避免當日外資買賣超尚未更新時取到空值的狀況,

例如附檔範例雷達匯出檔案,以上方向供您參考,謝謝。


另外晚上的時候有測試幾個腳本,比如說原本5分K的腳本不能讀取完成(跑不了)

您好,請您提供這幾個有問題的腳本至此,以利小幫手查看問題的原因,謝謝。

附加文件

金士曼 發文於   2019/03/27

小幫手你好,感謝解答

這是其中一個腳本,在30分K使用

裡面有跨頻率 有用到日K和週K的資料,目前不能跑

一啟動腳本就會出現 這個訊息   [計算停止,取得資料欄為錯誤,出現最大引用數值小於腳本需要的範圍]

請小幫手檢查看 我這個腳本是出了什麼問題,謝謝

 

附加文件

XQ小幫手 發文於   2019/03/28

Hi 金士曼,

您好,猜想您應該是跑普通股全部的商品,且執行後的雷達為「黃燈」如圖,

 

在這些商品之中,有些商品近期才剛上市上櫃,例如:緯穎(6669) 2019/03/27 初次上市

故資料讀取筆數不足跑這些商品的時候,雷達會出現:最大引用數值小腳本需要的資料範圍,

停止跑這些資料範圍不足的商品,避免相關技術指標與條件判斷有誤,

 

不會影響資料範圍充足的商品執行雷達,

以上說明,謝謝。

 

P.S. 稍微檢查了一下您的腳本,建議您使用附檔範例雷達來執行,不然您的資料筆數設定可能會有誤。

附加文件

金士曼 發文於   2019/04/01

小幫手你好,感謝小幫手的幫忙,一開始用你改過的腳本偵測有完整跑完,結果跑個幾分鐘後,在中途陸續發生計算停

止,發生未知的錯誤就結束了!後面重新要讓腳本跑,直接就出現計算錯誤不能跑了。我是用權證標的來測試,所以沒有

商品時間不夠久的問題,後來看了你修改的,除了把 input 和 variable 和 SetTotalBar 全部往上集中之外,其他好像就沒動

到,請小幫手再幫我看你幫我修改後的腳本還有哪邊有問題!? 後面再試都不能跑

 

下面哪一個才正確?

GetFieldDate("外資買賣超","D")  和 GetFieldDate("外資買賣超","D")[1]

 

另一個問題,下面這段完之後

//外資 買超在5天之內大於300張(不含今日),且5天之內買超至少大於等於2天

//settotalbar(period+day);

if barfreq<> "Min" then raiseruntimeerror("僅支援分K");

if GetFieldDate("外資買賣超","D")[1] = date then
    value17 = GetField("外資買賣超","D")[1];

 

再附加下面這行和沒有加,意義上會差在哪?

value18=summation(value17,day);

加了這段再帶進去

if .......  countif(value18>Fboughts,period)>=2 then begin ret=1;

 

XQ小幫手 發文於   2019/04/03

Hi 金士曼,

後面重新要讓腳本跑,直接就出現計算錯誤不能跑了。我是用權證標的來測試,所以沒有商品時間不夠久的問題

您好,請您提供該策略雷達匯出檔案,需對照查看您的雷達設定為何?以利小幫手查看問題的原因,謝謝。

P.S. 小幫手跑組合_指數成分股-權證標的是可以正常執行的,故須查看您的雷達匯出檔案,檢驗相關設定。


 

下面哪一個才正確?

GetFieldDate("外資買賣超","D")  和 GetFieldDate("外資買賣超","D")[1]

小幫手在 03/27 提供的雷達匯出檔案範例為:

...
if getfielddate("外資買賣超","D") = date then
value1= GetField("外資買賣超","D");
...

故用 GetFieldDate("外資買賣超","D") 才是對的,可以使用 Print 語法去對照檢驗相關數值,

P.S. 不過您在 03/27 提供的腳本,看起來沒有按照小幫手的範例方向撰寫,應該是有其他考慮因素。


 

再附加下面這行和沒有加,意義上會差在哪?

value18=summation(value17,day);

value18 為 value17 5個期數的加總,可以參考 Summation 語法說明,

 

以上說明與方向供參考,謝謝。

金士曼 發文於   2019/04/03

後來測試發現是你們系統的問題,剛好你們新系統到2.45版,權證這個族群就可以跑了

不過如果選買賣現沖這種群族(檔數比較多),系統還是會自動閃退,這個麻煩請工程師再改善系統

 

外資買超在30天之內大於300張,且5天之內買超至少大於2天

input:day(30,"買超天數"), Fboughts(300,"外資買超張數");
value1= GetField("外資買賣超","D");
if ....... and countif(value1>Fboughts,day)>= 2 then ret = 1;

 

原本是 外資買超在30天之內大於300張,且5天之內買超至少大於2天

加上下面這條的中文意義會變成什麼意思?  可以麻煩小幫手解釋一下會加上這條會等於什麼狀況?  謝謝。

value2=summation(value1,day);
if ....... and countif(value2>Fboughts,day)>= 2 then ret = 1;

 

顯示更多回應 發表回覆
Close