資料會亂串? 急~~~~~

  •   178 
  • 最後發表   XQYi  2023 十一月 28
XQYi 發文於   2023/11/10

如附圖

看完廣達的資料再看奇鋐,結果奇鋐的盤勢附圖仍停留在廣達

資料上半部奇鋐下半部廣達的奇景,為何? 會影響觸發的動作嗎?

另XS策略下單分別如下

input: Length(14,"天數");

value1 = Average(TrueRange, Length);

value2=open-low;

value3=high-open;

value4=high-low;

value5=value2/(value4+0.0001);

value6=1-value5;

 value8=open+(value1*value6)/2.25;

condition2=close >= value8-0.001;

if condition2 then ret=1;

 ------

input: Length(14,"天數");

value1 = Average(TrueRange, Length);

value2=open-low;

value3=high-open;

value4=high-low;

value5=value2/(value4+0.0001);

value6=1-value5;

value7=open-(value1*value5)/2.25;

condition1=close <= value7-0.001;

if condition1  then ret=1;

為何11/10的3017會賣在315.5 ,買在314.5? 如附圖

附加文件

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

Hello xqyi,

 

關於附圖指標數值相同的部分,麻煩您提供 頁面匯出檔勾選(包含)指標腳本 以及 XQ Log 來檢驗。

小幫手想到的可能性是您的指標使用 getsymbolfield 取得相同的商品資料來計算,故得出的結果相同。

至於是否會影響策略觸發,小幫手認為是不會的,因為策略是依據策略設定來做運算,和指標腳本以及設定沒有關聯。

 

至於交易的部分小幫手建議您在腳本上加上Print並將運算的數值印出,這樣會比較容易理解策略是如何運算,何時被觸發的。

若還是有問題的話,麻煩您提供 策略匯出檔勾選(包含)警示腳本以及 XQ Log,這樣小幫手才能夠知道您是運作在什麼環境策略設定下並作相對應的測試。

 

Log資料夾(預設路徑:C:\SysJust\XQLite\LOG)直接壓縮後提供即可。

您可以直接將檔案上傳,如果檔案過大的話也可以保存到雲端後將連結Mail至客服信箱 XQservice@XQ.com.tw 且務必附上 討論文章連結網址(小幫手才能盡早處理)。

感謝。

XQYi 發文於   2023/11/16

A. 建議您在腳本上加上Print並將運算的數值印出,這樣會比較容易理解策略是如何運算,何時被觸發的。

Q.如何加上print 讓數值印出?

XQ小幫手 發文於   2023/11/20

Hello xqyi,

 

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

 

您可以參考 print 語法的說明。

舉例來說:

print(date, time, value1, value2, value3, value4, value5, value6, value7, value8, close);

就可以將上面腳本中運算有用到的 value1 ~ value8 和 close 給印出。

 

另外需注意在XS編輯器裡的執行會顯示的只有技術分析的指標,自動交易策略執行如果沒有指定位置的話 (參照 file 函數),則是會顯示在執行紀錄中。

XQYi 發文於   2023/11/20

 之前加過 ,現在再加 編輯器內沒看見出現在哪 如圖?

print資料檔有,但每次都必須先再編譯一次

if close cross under value51

and (value1 <= value1[1] or value1 < 0)

and average(value21,5) < 0

and (value33 <= value33[1] or Value33 < 0 )

and (value43 <= value43[1] or value43 <=0)

{and close[1] > value51 }

then begin

plot63(high,"S");

value63=high;

end;

print("date=",date,"time=",TimeValue(CurrentTimeMS, "MS"),"value63=",value63,"close=",close);

資料檔內資料如下一大串11/13-11/20,看不出哪個時間點才是觸發點,時間格式需要 時、分、秒、毫秒

date= 20231120.000000 time= 223.000000 value63= 209.500000 close= 211.500000 

date= 20231120.000000 time= 224.000000 value63= 209.500000 close= 211.500000 

date= 20231120.000000 time= 224.000000 value63= 209.500000 close= 212.000000 

date= 20231120.000000 time= 225.000000 value63= 209.500000 close= 212.000000 

date= 20231120.000000 time= 225.000000 value63= 209.500000 close= 212.500000 

date= 20231120.000000 time= 225.000000 value63= 209.500000 close= 212.500000 

date= 20231120.000000 time= 226.000000 value63= 209.500000 close= 212.500000 

date= 20231120.000000 time= 226.000000 value63= 209.500000 close= 212.500000 

date= 20231120.000000 time= 227.000000 value63= 209.500000 close= 212.500000 

date= 20231120.000000 time= 227.000000 value63= 209.500000 close= 212.500000 

date= 20231120.000000 time= 227.000000 value63= 209.500000 close= 212.500000 

date= 20231120.000000 time= 228.000000 value63= 209.500000 close= 212.500000 

date= 20231120.000000 time= 228.000000 value63= 209.500000 close= 212.500000 

date= 20231120.000000 time= 228.000000 value63= 209.500000 close= 212.000000 

附加文件

XQ小幫手 發文於   2023/11/22

Hello xqyi,

 

您需要把指標掛上,並把編輯器下面的選項選到執行才會顯示 (參考附圖)。

 

小幫手不太確定您為何只印毫秒,這樣不好確定是哪一根Bar的時間,或許考慮可以印出完整的 CurrentTimeMS。

您印出 value63 在同根Bar內是無法判斷是否有觸發的。

要判定觸發的話可以印出判斷的條件,舉例來說:

condition1 = close cross under value51

and (value1 <= value1[1] or value1 < 0)

and average(value21,5) < 0

and (value33 <= value33[1] or Value33 < 0 )

and (value43 <= value43[1] or value43 <=0);

 

if condition1 then begin

    plot63(high,"S");

    value63 = high;

    end;

 

print(date, CurrentTimeMS, condition1);

 

但這樣只能夠知道條件condition1是否有觸發,但不能確定為何觸發或為何沒觸發。

要確定的話只能夠將條件裡面使用到的數值 (ex. close, value51, value1 ...) 印出一併確認。

附加文件

XQYi 發文於   2023/11/24

小幫手不太確定您為何只印毫秒,這樣不好確定是哪一根Bar的時間,或許考慮可以印出完整的 CurrentTimeMS。

=>我是想完整印出(年、月、日、時、分、秒、毫秒)的完整資訊,

只要觸發訊號才顯示該筆資料

但不曉得用哪個函數適合?

XQ小幫手 發文於   2023/11/28

Hello xqyi,

 

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

 

date 和 currentdate 就可以印出年月日,currenttimems 就可以印出包含毫秒時間。

要在觸發時才印出只要把 print 放在條件裡面即可。

舉例來說:

condition1 = close cross under value51

and (value1 <= value1[1] or value1 < 0)

and average(value21,5) < 0

and (value33 <= value33[1] or Value33 < 0 )

and (value43 <= value43[1] or value43 <=0);

 

if condition1 then begin

    plot63(high,"S");

    value63 = high;

 

    //即時且條件符合才印

    if getinfo("IsRealTime") = 1 then print(currentdate, currenttimems, close, value51, value1, value1[1], average(value21,5), value33, value33[1], value43, value43[1]);

    end;

 

但這樣只能夠用來判斷腳本為何觸發,沒辦法判斷腳本為何沒有觸發 (因為沒有觸發就不會印)。

發表回覆
Close