請問專業幫手(6)策略雷達腳本問題

  •   287 
  • 最後發表   施先生  昨天
施先生 發文於   2021/11/08

請問專業幫手,以下是策略雷達腳本  MACD 黃金交叉  頻率是1分鐘
我有加了condition1濾除單量10張以下,沒成功,麻煩您看是哪邊設定錯誤?




// MACD 黃金交叉 (dif向上穿越macd)

//

input: FastLength(12), SlowLength(26), MACDLength(9);

variable: difValue(0), macdValue(0), oscValue(0);

 

SetTotalBar((maxlist(FastLength,SlowLength,6) + MACDLength) * 3 + 8);

 

condition1 = GetField("Volume", "Tick") >= 10;

 

SetInputName(1, "DIF短期期數");

SetInputName(2, "DIF長期期數");

SetInputName(3, "MACD期數");

 

MACD(weightedclose(), FastLength, SlowLength, MACDLength, difValue, macdValue, oscValue);

 

Ret = difValue Crosses Above macdValue;

 

if condition1 then ret =1;

排序方式: 標準 | 最新
XQ小幫手 發文於   2021/11/10

Hello 施先生,

 

警示腳本和選股腳本在條件觸發時會使用 ret 來表示條件觸發。

您腳本下方使用了兩個ret:

Ret = difValue Crosses Above macdValue;

if condition1 then ret =1;

所以變成黃金交叉會警示,當下Tick成交量大於10張也會警示。

可以修改為:

condition2 = difValue Crosses Above macdValue;

if condition1 and condition2 then ret = 1;

這樣就會變成兩個條件都要達成才會警示。

施先生 發文於   2021/11/16

真是非常漂亮!謝謝您!!

另外多跟智多星的您請教:

在以下警示腳本 一分鐘頻    率高不拉回後再創新高
因為觸發警示超過九成,都是已漲停板
請問如何修改腳本為,濾除漲停板?

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

 

variable:count(0);

 

if date<>date[1] then count=0;

count=count+1;

  

if GetField("開盤價","D")> GetField("收盤價","D")[1]*1.025

and count>5

and lowest(low[1],count-1)*1.015>highest(high[1],count-1)

and close =highest(high,count)

then ret=1;

 

XQ小幫手 發文於   2021/11/17

Hello 施先生,

 

您可以使用漲停價欄位來控制。

舉例來說,原本的條件可以多一條收盤價小於漲停價。

if GetField("開盤價","D")> GetField("收盤價","D")[1]*1.025

and count>5

and lowest(low[1],count-1)*1.015>highest(high[1],count-1)

and close =highest(high,count)

and close < GetField("漲停價", "D")      //close 要小於漲停價

then ret=1;

施先生 發文於   2021/12/02

Hello專業幫手,好在有您!非常感謝!!

請問我可以再加一條條件嗎?估計量(預估今日收盤張數)大於5000

您看這樣對不對?

if GetField("開盤價","D")> GetField("收盤價","D")[1]*1.025

if GetField("估計量","E")>5000

and count>5

and lowest(low[1],count-1)*1.015>highest(high[1],count-1)

and close =highest(high,count)

and close < GetField("漲停價", "D")      //close 要小於漲停價

and close < GetField("估計量", "E")      //估計量要大於5000

 

then ret=1;


麻煩您指教!

XQ小幫手 發文於   2021/12/06

Hello 施先生,

 

估計量欄位目前無法在日頻率回測,如果只用在即時的狀況下的話則沒有問題。

另外 GetField 的欄位頻率沒有 "E" 選項。

修改後會是如下:

if GetField("開盤價","D")> GetField("收盤價","D")[1]*1.025

and count>5

and lowest(low[1],count-1)*1.015>highest(high[1],count-1)

and close =highest(high,count)

and close < GetField("漲停價", "D")      //close 要小於漲停價

and GetField("估計量","1") > 5000     //估計量要大於5000

then ret=1;

施先生 發文於   2021/12/22

非常感謝專業幫手指教,真是冬天的溫煦烈火!

另外可否跟您請教:

策略雷達腳本  KD指標  頻率是1分鐘
腳本要如何寫,可濾出KD同時向上或向下超過45度斜率連續2分鐘

請您指教!!

XQ小幫手 發文於   2021/12/24

Hello 施先生,

 

您可以使用 Stochastic 來計算 KD,並搭配 LinearRegAngle 來計算KD斜率。

附上警示腳本供您參考。

附加文件

施先生 發文於   2021/12/24

Hello專業幫手,

非常感謝您出手,真是妙不可言!!

 

施先生 發文於   2021/12/27

Hello專業幫手,

這是您之前寫的,大戶散戶買力同向上,頻率是1分鐘
因為目前,雷達只要稍微向上就觸發,請問如何加條件,連續3分鐘持續向上才觸發


value1 = GetField("賣出特大單量","D") + GetField("賣出大單量","D");

value2 = GetField("買進特大單量","D") + GetField("買進大單量","D");

value3 = value2 - value1;

 

value4 = GetField("賣出小單量","D");

value5 = GetField("買進小單量","D");

value6 = value5 - value4;

condition1 = GetField("Volume", "Tick") >= 100;

if value3 > value3[1] and value6 > value6[1] and condition1 then ret = 1;

請您指教!!

XQ小幫手 發文於   2021/12/30

Hello 施先生,

 

您可以使用 TrueAll 函數來判斷是否有連續3根Bar滿足條件。

修改後的腳本如下:

value1 = GetField("賣出特大單量","D") + GetField("賣出大單量","D");

value2 = GetField("買進特大單量","D") + GetField("買進大單量","D");

value3 = value2 - value1;

 

value4 = GetField("賣出小單量","D");

value5 = GetField("買進小單量","D");

value6 = value5 - value4;

condition1 = GetField("Volume", "Tick") >= 100;

 

if trueall(value3 > value3[1], 3) and trueall(value6 > value6[1], 3) and condition1 then ret = 1;

Show More Posts 發表回覆
Close