系統抓出的程式碼放在程式中,修改參數,但數值卻不同

  •   237 
  • 最後發表   灰熊  2025 四月 16
灰熊 發文於   2025/04/14

教授您好:

由系統抓出程式碼,放進程式中,但出現的的MTM是對的,但MTM_MA卻不一樣,不知那有問題,我把參數全改成數值,80也是和指標數值不同,不知那有問題,再麻煩教授看一下

//MTM(80)

input: MLength(80);

 

SetInputName(1, "天數");

 

value11 = Momentum(Close, MLength); 

If CurrentBar >= MLength then

Value12 = Average(Value11, MLength)

else

Value12 = Value11;

 

Plot11(value11, "MTM");

Plot12(value12, "MTM-MA");

我要計算MTM(80),和MTM_MA,主要是MTM是和系統指標是正確的,但MTM_MA,就是程式中value12,就是和系統程式值不同

我原先是用value4=MTM(80)-MTM_MA(80);結果值行出來,value4,居然是0,表二數值是一樣的,還是我用錯指令呢

排序方式: 標準 | 最新
虎科大許教授 發文於   2025/04/14

你計算的MTM均值,就是系統計算的MTM均值。執行下列指標腳本看看。

input: MLength(80,"天數");
value11 = Momentum(Close, MLength); 
If CurrentBar >= MLength then
    Value12 = Average(Value11, MLength)
else
    Value12 = Value11;
value13 = MTM_MA(MLength); //系統的MTM均值
Plot11(value11, "MTM");
Plot12(value12, "自訂MTM_MA");
Plot13(value13, "系統MTM_MA");
plot14(MTM(80)-MTM_MA(80),"MTM乖離");

 

灰熊 發文於   2025/04/14

教授,算出來的數值MTM還是等同MTM_MA,二者想同

虎科大許教授 發文於   2025/04/14

問題出在你使用60分鐘頻率,系統準備的資料筆數不足80筆,所以MTM及其均值都相同。若改用其他分鐘頻率,例如5分鐘,就可正常顯示。

灰熊 發文於   2025/04/14

我都用60分在交易,有辦法讓系統60分鐘可以抓超過100筆嗎

虎科大許教授 發文於   2025/04/14

在程式第一行加入 setBackBar(100);

灰熊 發文於   2025/04/14

可以了,謝謝教授

灰熊 發文於   2025/04/14

再請教一下,我回測結果,跟其他軟體不一樣,發現系統雖設100根,但實際有值只有最近的16根而己,這有辦法解決嗎

虎科大許教授 發文於   2025/04/14

我使用下列警示腳本,以日頻率測試過去5年的資料,結果是OK的,從2020年開始就有交易訊號。

setBackBar(80);
input: MLength(80,"天數");
value11 = Momentum(Close, MLength); 
If CurrentBar >= MLength then
    Value12 = Average(Value11, MLength)
else
    Value12 = Value11;
if value11 cross over value12 then ret=1;

灰熊 發文於   2025/04/14

60分K以目前來看20250414,20:20往前抓,到20250411(週五)的19:00,資料是正確的,但再往前一樣會有訊號,,訊號就不準了如下,第一點是還有資料,但再往前又回到二線會一的狀態了

再往前訊號就不準了,有時對有時不對

 

灰熊 發文於   2025/04/14

補上原程式和XQ程式,對照的訊號圖

就最近的訊號OK,超過1天的指標就不太對了,所以我才去測系統值

虎科大許教授 發文於   2025/04/14

繪製指標受限於系統提供的資料,儘管你用setbackbar(100),你最多還是只能從系統提供的第一筆獲得正確的指標數值。

灰熊 發文於   2025/04/14

好的,謝謝教授

 

XS小編 發文於   2025/04/16

Hello 灰熊,

 

小編補充,您可以參考 資料讀取範圍與腳本執行的關係 裡的說明。

其中 資料讀取筆數 在指標中就會是"能夠畫出"的部分,也可以在線圖上點右鍵進行設定。

資料引用筆數 則是需要多少筆的前置資料。

 

就上面的例子而言 Momentum 會取運算當下的價格和 MLength 前的價格相比,所以會需要 MLength + 1 筆的資料引用筆數。

而 Average 會需要 MLength 筆 Momentum 運算出的值才能夠計算出正確的值,所以開始計算後至少要經顧 MLength 筆資料才能夠得到正確的值。

也就是說,資料讀取筆數最少最少也要有 MLength 筆才能得到正確的值,在使用警示或交易腳本進行回測時需要設置。

灰熊 發文於   2025/04/16

 好的,謝謝管理員

發表回覆
Close