XS警示腳本撰寫 盤中指定時間後的創高(當沖)

  •   4.1K 
  • 最後發表   Jack  2023 十一月 08
Jack 發文於   2017/02/15

大家好:

 

如何使用XS警示腳本撰寫 盤中指定時間後的創高(當沖)?

 

例如:

今天台股的3380,

頻率為1分鐘,設定為10:12:20之後 過前高警示(10:12:20前的高點為20.70)

所以應該在10: 43: 31 (20.75)那筆成交警示會出現。

 

程式碼撰寫大致邏輯:

1. 設一個變數(_high)紀錄高

2. 09:00以後且未過指定時間,如果High>_High則 _High再重新記錄高

3. 過指定時間,且收盤價過紀錄的高,則訊號觸發

 

注意:策略雷達內容-->屬性設定-->觸發設定 記得勾選"逐筆洗價"。

 

程式碼範例:

if barfreq <>"Min" or barinterval<> 1 then raiseruntimeerror("歹勢,本腳本只適用於1分鐘線");

var:_high(0);
input:_Time(101220);    //  指定時間

if _Time <= 090000 then raiseruntimeerror("歹勢,本腳本指定時間不可小於等於09:00:00");   //  防呆

if currentdate <> date then return;   //  因為當沖,故日期需與系統日期一致

if time >= 090000 and time < _Time and high > _high then _high = high;
//  09:00以後且未過指定時間,如果High>_High則 _High再重新記錄高

if time >= _Time and close > _high then ret = 1;  //  過指定時間,且收盤價過紀錄的高,則訊號觸發

 

以上提供給大家參考,有問題歡迎詢問。

 

  • 按讚來自於
  • CharlieBrown
  • sun2056
排序方式: 標準 | 最新
w w 發文於   2017/02/16

不好意思...jack兄...請教一下..

該如何加入一個 跨頻 昨日總量的設定.....比如..昨日總量>1000

                               以及 今日開盤>=昨日收盤價

   感謝您指導..

Jack 發文於   2017/02/17

w w 兄 你好:

 

修改最後一行程式碼範例應該即可,

if time >= _Time and close > _high 
and getfield("成交量","D")[1] > 1000
and getfield("開盤價","D")>=getfield("收盤價","D")[1] then ret = 1;
// 過指定時間,且收盤價過紀錄的高,則訊號觸發 ///////

 

Tips:

使用Getfield來取得跨頻率的資料,在XS函數搜尋網頁有說明Getfield 相關資訊,供參。

 

以上提供參考,有問題再詢問。

w w 發文於   2017/02/20

非常感謝Jack兄....教導新手問題.....謝謝您喔.

  • 按讚來自於
  • jacklee
Jack 發文於   2017/02/20

不客氣,有問題的話,再詢問我,謝謝。

w w 發文於   2017/02/23

jack 您好..

我將以上的腳本反向設置為空...編譯成功但是卻跑不出標的(原本設定 多 是成功有跳出標的)....

不曉得是不是有哪個地方有誤呢? 

 

if barfreq <>"Min" or barinterval<> 1 then raiseruntimeerror("歹勢,本腳本只適用於1分鐘線");

 

variable:_low(0);

input:_Time(120000);    //  指定時間

 

if _Time <= 090000 then raiseruntimeerror("歹勢,本腳本指定時間不可小於等於09:00:00");   //  防呆

 

if currentdate <> date then return;   //  因為當沖,故日期需與系統日期一致

 

if time >= 090000 and time < _Time and low <_low then _low = low;

//  09:00以後且未過指定時間,如果 low <_low則  _low再重新記錄新低

 

if time >= _Time and close < _low 

and getfield("成交量","D")[1] > 1000 

and getfield("開盤價","D")<=getfield("收盤價","D")[1] then ret = 1;

//   過指定時間,且收盤價過紀錄的高,則訊號觸發   ///////

Jack 發文於   2017/02/23

W W 兄:

我想查看您的策略雷達,內容,屬性設定是否有問題,

因此請您提供

  • 策略雷達-->該策略-->內容-->屬性設定畫面
  • 策略雷達-->該策略-->觸發商品畫面
  • 策略雷達-->該策略-->商品監控畫面

 

這樣我比較方便查看是哪裡出了問題,謝謝。

 

w w 發文於   2017/02/24

jack兄   您好..麻煩您了.

麻煩您了..

Jack 發文於   2017/02/24

W W 兄:

如果是反向設置為空,

則變數 _low 要設為 999999,不可設為0,不然最低價遠永都沒辦法紀錄。

也就是程式碼第三行需修改為

variable:_low(999999);

 

另外,請記得要在指定時間前,執行此策略, 

再請WW兄試試,有問題在跟我說,謝謝。

w w 發文於   2017/02/25

感謝 jack 兄....真的是pro級的....

還好有請教您..這個答案真是讓我想破頭也想不出...

再次感謝 jack 兄指導....我再試試.....謝謝您..

  • 按讚來自於
  • jacklee
old mane 發文於   2017/04/21

jack 兄 你好

請教一下

以上述的例子"盤中指定時間後的創高"

當10:12:20之後創新高, 我就重新錄新高

直到它連續三根 K 棒, ''不創新高'' 則訊號觸發

 

我要如修改腳本

感謝指導

 

 

顯示更多回應 發表回覆
Close