關於XS到價只提醒一次的設定

  •   478 
  • 最後發表   Alex YAO  2024 八月 01
Alex YAO 發文於   2024/07/01

請問如何設定組合裡的標的到價只停醒一次

我是需要改XS腳本 還是觸發設定呢

 

 

排序方式: 標準 | 最新
虎科大許教授 發文於   2024/07/01

若你想要啟動策略之後,符合條件只觸發一次,可將觸發設定選取「啟動之後只觸發一次」。

當然,你也可以透過程式碼進行控制(我會比較建議這樣做)。

var: intrabarpersist HasRet(false);

if HasRet=false and C=GetField("漲停價","D") then

   begin

      HasRet=true;

      ret=1;

   end;

  • 按讚來自於
  • P123762560
Alex YAO 發文於   2024/07/01

好的謝謝,另外請問上漲7%的腳本觸發一次該怎麼修改呢~~

虎科大許教授 發文於   2024/07/01

var: intrabarpersist HasRet(false);

if HasRet=false and rateofchange(c,1)>7 then

   begin

      HasRet=true;

      ret=1;

   end;

  • 按讚來自於
  • P123762560
XS小編 發文於   2024/07/05

Hello Alex YAO,

 

小編補充,如果要避免在資料讀取筆數運算時因為條件符合而導致變數改變的狀況,可以使用 GetInfo 來判斷。

網站上有教學區教學影片,裡面有XS語法的基礎和應用可以閱覽。

  • 按讚來自於
  • P123762560
Alex YAO 發文於   2024/07/12

想請問如果想改成

成交價漲停後5分鐘的提醒(一樣組合裡的標的只提醒一次

可以如何修改,謝謝

虎科大許教授 發文於   2024/07/12

用Once(c=getField("漲停價","D"))記錄第一次漲停時間,然後結合TimeDiff函數,於5分鐘之後警示。

Alex YAO 發文於   2024/07/12

Var: FirstTime(False);

 

If Close = Once(c=getField("漲停價","D")) 

 

And 

 

TimeDiff(05, 00, "M");

 

 

Then ret = 1;

 

 

 

===========================

 

請問是這樣嗎

虎科大許教授 發文於   2024/07/12

使用以下程式,必須留意程式在歷史K棒跑時,變數可能會受影響。

var: intraBarPersist UpLimitTime(0);

var: intraBarPersist FinishSession(false);

if FinishSession=true then return;

once(c=GetField("漲停價", "D")) UpLimitTime=GetField("時間", "Tick");

if timeDiff(GetField("時間", "Tick"),UpLimitTime,"M")>=5 then

      begin

            Alert("漲停超過5分鐘!");

            finishSession=true;

      end;

  • 按讚來自於
  • P123762560
Alex YAO 發文於   2024/07/12

留意程式在歷史K棒跑時,變數可能會受影響

 

請問是什麼意思呢

不太明白

虎科大許教授 發文於   2024/07/12

歷史K棒有出現收盤漲停時,Once會執行,且只執行一次,這造成盤中即時就算有漲停,也不會記錄漲停時間。

  • 按讚來自於
  • P123762560
Alex YAO 發文於   2024/07/12

出現了 在「警示」腳本中無法使用「Alert」。 錯誤

虎科大許教授 發文於   2024/07/12

在警示腳本,要把Alert那一行改成ret=1;

  • 按讚來自於
  • P123762560
Alex YAO 發文於   2024/07/16

測試了兩天都沒有觸發

不知道是不是哪邊設定不對

虎科大許教授 發文於   2024/07/16

var: intraBarPersist UpLimitTime(0);

var: intraBarPersist FinishSession(false);

if FinishSession=true then return;

if getInfo("IsRealTime")=0 then return;

once(c=GetField("漲停價", "D")) UpLimitTime=GetField("時間", "Tick");

if timeDiff(GetField("時間", "Tick"),UpLimitTime,"M")>=5 then

      begin

            Alert("漲停超過5分鐘!");

            finishSession=true;

      end;

Alex YAO 發文於   2024/07/25

抱歉...打擾

我照上面更改後

變成開盤時全部的自選股都跳出警示

好像不太對...

虎科大許教授 發文於   2024/07/26

if timeDiff(GetField("時間", "Tick"),UpLimitTime,"M")>=5 and  UpLimitTime>0 then

  • 按讚來自於
  • P123762560
毛毛豬 發文於   2024/08/01

請問教授如果觸發設定用連續觸發,加上程式碼控制也只會觸發一次嗎?

var: intrabarpersist HasRet(false);

if HasRet=false and C=GetField("漲停價","D") then

   begin

      HasRet=true;

      ret=1;

   end;

虎科大許教授 發文於   2024/08/01

是的,儘管設定連續觸發,但程式碼控制只觸發一次,所以只會觸發一次。

發表回覆
Close