策略雷達 估計量 突破系統 腳本詢問

  •   284 
  • 最後發表   台中韭菜  2022 七月 07
台中韭菜 發文於   2022/06/26

想詢問小編

已經爬過文 但找不到相關的問題

目前有一個估計量暴增的XS腳本 內容如下 想找出盤中估計量暴增的股票


 

value1 = GetField("估計量");

condition1 = value1 > (GetField("Volume", "D")[1] * 2);

condition2 = value1 > average(GetField("Volume", "D")[1], 5);

condition3 = value1 > average(GetField("Volume", "D")[1], 60);

if condition1 or condition2 or condition3 then ret = 1;


 

編譯都沒有問題~但沒辦法回測去測試 盤中也測試過幾次 但都沒有反應及通知 不知道我是哪部分有寫錯?

 

我目前有一個網友分享過的策略~我覺得很不錯滿好用的 突破高點的策略


input:HitTimes(3,"設定觸頂次數");

input:RangeRatio(1,"設定頭部區範圍寬度%");

input:Length(20,"計算期數");

settotalbar(Length + 3);

variable: theHigh(0);

theHigh = Highest(High[1],Length); 

//找到過去其間的最高點

variable: HighLowerBound(0); 

HighLowerBound = theHigh *(100-RangeRatio)/100;

// 設為瓶頸區間上界

variable: TouchRangeTimes(0); 

//回算在此區間中 進去瓶頸區的次數 

TouchRangeTimes = CountIF(High[1] > HighLowerBound, Length);

if TouchRangeTimes >= HitTimes and close > theHigh then ret=1;


 

想請問小編 我想要寫一個相反的策略(突破底部) 我修改過後盤中測試 跳出來的結果都不太對 想請小邊幫我看下是哪個部份寫錯了 如下圖 感謝


 

input:HitTimes(3,"設定觸頂次數");

input:RangeRatio(1,"設定頭部區範圍寬度%");

input:Length(20,"計算期數");

settotalbar(Length + 3);

variable: thelow(0);

theLow = lowest(low[1],Length);

variable: LowUpperBound(0); 

LowUpperBound = theLow *(100+RangeRatio)/100; 

variable: TouchRangeTimes(0); 

TouchRangeTimes = CountIF(Low[1] > LowUpperBound, Length);

if TouchRangeTimes >= HitTimes and close > thelow then ret=1;


 

 

然後請問一下小編 想找尋當日盤中CDP指標 碰觸到賣出點 及買進點 的股票去進行通知 該如何去寫XS呢 因看板上沒人分享 想請問一下小編 感謝 麻煩了

 

 

排序方式: 標準 | 最新
XQ小幫手 發文於   2022/06/30

Hello 台中韭菜,

 

1.小幫手推測您應該是用日頻率回測。

估計量目前不支援日頻率的回測。

其他頻率是可以正常回測的。(參考附圖)

 

2.應該是最下面2行有錯。

要突破底部,應該是 

TouchRangeTimes = CountIF(Low[1] < LowUpperBound, Length); 

if TouchRangeTimes >= HitTimes and close < thelow then ret=1;

才對。

 

3.您可以自行計算CDP後判斷是否有觸碰到 (cross over, cross under) 即可。

舉例來說:

var: _cdp(0), _ah(0), _nh(0), _nl(0), _al(0);

_cdp = (getfield("High", "D") + getfield("Low", "D") + 2 * getfield("Close", "D")) / 4;

_ah = _cdp + (getfield("High", "D") - getfield("Low", "D"));

_nh = 2 * _cdp - getfield("Low", "D");

_nl = 2 * _cdp - getfield("High", "D");

_al = _cdp - (getfield("High", "D") - getfield("Low", "D"));

 

if close cross over _ah or cross under _al then ret = 1;

 

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

附加文件

台中韭菜 發文於   2022/07/01

 

小編您好 我有用分鐘回測過 盤中也打開測試 但都不會出現警示 回測也都沒結果 請問是我哪裡寫錯了嗎?

蕎伊斯 發文於   2022/07/01

你的程式碼中有取60日線資料,引用資料長度不足,可以在程式碼最上方加上這行就可以運作了~試試看

//5分鐘頻率
setBackBar(62, "D");//資料取至62天之前

XQ小幫手 發文於   2022/07/07

 Hello 台中韭菜,

 

關於資料長度不足的部分,您可以參考 資料讀取範圍與腳本執行的關係 這篇文章內的說明。

 

感謝 蕎伊斯 的熱心回覆。

發表回覆
Close