(已解決)有人有遇過修改變數,確沒反應的嗎?

  •   44 
  • 最後發表   AKai  4 週前
AKai 發文於   2024/08/07

// 記錄當沖平倉時間(布林)
var: close_position_time(false);
// 記錄是否昨天有部位
var: Original_Part(false);
// 記錄是否下單了
var: k_Ord(false);
// 紀錄是否曾經執行過的變數
Var: FirstTime(False);

Print("----------------------------------------------------");
Print("[變數0] 日期=", CurrentDate, "時間=",currenttime);
Print("[變數0] Original_Part=", Original_Part, "   k_Ord=",k_Ord, "   FirstTime=",FirstTime);

//(中間都沒有 修改 k_Ord 變數的語法)
// 買進 if Filled = 0 and Not Original_Part and condition9 then begin Print("[買進4-1] 日期=", CurrentDate, "時間=",currenttime," k_Ord=",k_Ord); setposition(10*Amount/close, label:="買進"); k_Ord = True; Print("[買進4-2] 日期=", CurrentDate, "時間=",currenttime," k_Ord=",k_Ord); end;

以上就是大概邏輯,我是跑1分k的 

我遇到的問題就是

進入買進條件之後,他會修改變數「k_Ord = True;」來表示這是今天買的

但是發現了一個問題,我在輸出的log檔案,卻發現有的有,有的沒有,怪怪的-.-

 

在「1516」的這支 log 顯示如下

[變數0] 日期= 20240805.000000 時間= 90730.000000 
[變數0] Original_Part= FALSE    k_Ord= FALSE    FirstTime= TRUE 
[買進4-1] 日期= 20240805.000000 時間= 90730.000000   k_Ord= FALSE  <-- 修改變數前  顯示
[買進4-2] 日期= 20240805.000000 時間= 90730.000000   k_Ord= TRUE   <-- 修改變數後  顯示
---------------------------------------------------- 
[變數0] 日期= 20240805.000000 時間= 90745.000000 
[變數0] Original_Part= FALSE    k_Ord= FALSE    FirstTime= TRUE     <---這邊卻出現了沒修改??
---------------------------------------------------- 
[變數0] 日期= 20240805.000000 時間= 90800.000000 
[變數0] Original_Part= FALSE    k_Ord= FALSE    FirstTime= TRUE 

 

在「6174」的這支 log 顯示如下

[變數0] 日期= 20240805.000000 時間= 113700.000000 
[變數0] Original_Part= FALSE    k_Ord= FALSE    FirstTime= TRUE 
[買進4-1] 日期= 20240805.000000 時間= 113700.000000   k_Ord= FALSE    <-- 修改變數前  顯示
[買進4-2] 日期= 20240805.000000 時間= 113700.000000   k_Ord= TRUE     <-- 修改變數後  顯示
---------------------------------------------------- 
[變數0] 日期= 20240805.000000 時間= 113845.000000 
[變數0] Original_Part= FALSE    k_Ord= TRUE    FirstTime= TRUE    <---顯示正常......
---------------------------------------------------- 
[變數0] 日期= 20240805.000000 時間= 113900.000000 
[變數0] Original_Part= FALSE    k_Ord= TRUE    FirstTime= TRUE 

 

不知道有沒有大大也有遇到這個問題?

我多這個判斷是來判斷是否「當沖」

如果今天下單了,該項目也可以當沖,則會當日從沖銷

發現怎麼沒有當沖,就發現,下單之後的「變數」確實有改成TRUE

但是下一根k棒,卻顯示FALSE

 

但是也有正常依照邏輯走的...     

這是qx的問題嗎 ==?

我一開始變數名稱用 Ordered 還在想說是不是系統保留字 -.-

排序方式: 標準 | 最新
虎科大許教授 發文於   2024/08/07

這是逐筆洗價變數的行為與非逐筆洗價不同的緣故。

宣告時請加intrabarpersist,

var: intrabarpersist k_Ord(false);

AKai 發文於   2024/08/07

太厲害了 教授~

改完之後就正常了

謝謝你的耐心回答 🥰

 

但是說著說著也奇怪,上面兩個股票跑一樣的程式碼,卻有兩種反應。

我都不知道該怎麼解釋了 😅

虎科大許教授 發文於   2024/08/08

若你學會正確運用intrabarpersist,就知道原因了。

XS小編 發文於   2024/08/14

Hello AKai,

 

您可以參考 intrabarpersist 函數的說明。

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

 

感謝 虎科大許教授 的熱心回覆。

發表回覆
Close