請問智多星幫手 此警示腳本編譯成功 為何無發觸發 請指教何處寫錯?拜託您請幫我修改正確

  •   89 
  • 最後發表   施先生  2023 七月 17
施先生 發文於   2023/07/06

input: FastLength(12), SlowLength(26), MACDLength(9),ALLFN(6000,"今估計量"), angle_period(3, "計算弧度期數"), angle_limit(15, "弧度限制");

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

 

variable:rsv_d(0),KK(0),dd(0);//宣告3個變數

stochastic(9,3,3,rsv_d,kK,dd);//XQ?建寫好的KD函數==>呼叫他

 

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

 

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

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

SetInputName(3, "MACD期數");

 

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

var: intrabarpersist ma20(0), intrabarpersist ma20_1(0), intrabarpersist ma20_2(0), ma20_angle(0), ma10(0), ma5(0), ma60(0);

 

ma20_2 = ma20_1;  //上上次腳本運算的ma5值

 

ma20_1 = ma20;  //上次腳本運算的ma5值

 

ma5 = average(close, 5);

 

ma10 = average(close, 10);

 

ma20 = average(close, 20);

 

ma60 = average(close, 60);

 

ma20_angle = LinearRegAngle(ma20, angle_period);

 

 

condition1 = GetField("估計量") > ALLFN  ;

 

condition2 = ma20_2 < ma20_1 and ma20_1 < ma20 and ma20_angle > (-1 * angle_limit);

 

condition3 = ma5 > ma10 and ma10 > ma20 ;

 

condition4 = difValue>difValue[1] and difValue[1]>difValue[2] and macdValue>macdValue[1]  and macdValue[1]> macdValue[2] ;

 

condition5 = difValue > macdValue ;

 

condition6 = kK>kK[1] and kK[1]>kK[2] and dd>dd[1]  and dd[1]> dd[2] ;

 

condition7 = kK>dd;

 

if condition1 and condition2 and condition3 and condition4 and condition5 and condition6  and condition7 then ret = 1;



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

Hello 施先生,

 

小幫手看您的腳本應該是沒有問題,是條件沒有達成所以沒有觸發。

建議您可以將相關數值印出檢查,就可以看出是什麼原因導致沒有觸發。

 

另外需注意

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

資料讀取筆數可能不足導致計算出的MACD和線圖上的不同。

建議您可以修改為 SetTotalBar((maxlist(FastLength,SlowLength,6) + MACDLength) * 4 + 8);

 

ma20_2 = ma20_1;  //上上次腳本運算的ma5值

ma20_1 = ma20;  //上次腳本運算的ma5值

其實就相當於 ma20[1] (上次) 和 ma20[2] (上上次)。

 

施先生 發文於   2023/07/11

非常感謝您!

真是不可或缺的智多星

施先生 發文於   2023/07/11

請問上面腳本中需要加上
SetTotalBar(300);
增加MACD的準確性嗎? 

 

施先生 發文於   2023/07/12

ma20_2 = ma20_1;  //上上次腳本運算的ma5值


1.請問明明是MA20值 為什麼標示MA5值
2.MA20[2]跟MA20[1] 明明是獨立不同數值 為何中間要加上等於符號?

   

XQ小幫手 發文於   2023/07/14

Hello 施先生,

 

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

 

如果腳本中已經有 SetTotalBar((maxlist(FastLength,SlowLength,6) + MACDLength) * 4 + 8); 的話,那麼就不需要另外設 SetTotalBar(300);。

相反也是相同。

 

1.請問明明是MA20值 為什麼標示MA5值

小幫手也不知道,或許您應該詢問撰寫腳本的人?

 

2.MA20[2]跟MA20[1] 明明是獨立不同數值 為何中間要加上等於符號?

如果您是指 

ma20_2 = ma20_1;

ma20_1 = ma20;

這一段腳本的話,這邊的意思是將 ma20_1 的值存入 ma20_2,ma20 的值存入 ma20_1。

施先生 發文於   2023/07/17

謝謝!

 

發表回覆
Close