逐筆洗價,有無辦法判斷換了下一根新1分K?

  •   46 
  • 最後發表   samuel25  4 週前
samuel25 發文於   2024/04/24

如題 目的是同一根1分K只想執行一次

我有嘗試過多種方法
var:intrabarpersist mytime;
mytime = time

if mytime<>mytime[1] then print("換下一根K棒");

multichart這個動作是可以的 但是XQ無法
看起來變數好像是參照到原本的time故取[1]會取到time[1]


"請問有辦法取得上一個模擬逐筆K棒的變數值嗎?"

也嘗試用了filledrecordtime(0)拿取進場的時間

來判斷如果進場時間一樣就不再進場

但是回測會跳錯誤

請問何解?

有無辦法判斷換了下一根新1分K?

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

用datetime處理。只有在datetime不同時,才允許進入IF裡面。

samuel25 發文於   2024/04/24

請問datetime實際上如何處理 就我所知應該和time一樣
if datetime<>datetime[1] then ...
還是有一樣的問題 [1] 取的是上一根一分K的datetime而不是上一個模擬逐筆價的K棒變數值

虎科大許教授 發文於   2024/04/24

宣告一個變數例如myTime,if myTime<>datetime then 做想做的事,程式最後面再讓myTime=datetime即可。

samuel25 發文於   2024/04/24

很奇妙

原本的做法
myTime=time

if myTime<>myTime[1] then print('換K');
是不行的

我在想XQ應該是把參照位置給myTime變數 而不是存一個常數值?

改成
if myTime<>time then print("換K");

myTime=time
就可以了

XS小編 發文於   2024/04/25

 Hello samuel25,

 

myTime=time;

if myTime<>myTime[1] then print('換K');

 

會是當根Bar的 myTime 和 上根Bar的 myTime 相比。

基本上變數會像是一個數列,有每根Bar對應的值。

而myTime每次腳本執行時就會被賦予time的值,故就相當於 time <> time[1] 一樣,一定會符合。

 

 

if myTime<>time then print("換K");

myTime=time;

 

因為 myTime 的賦值是在 myTime<>time 之後,這樣的話 myTime<>time 就會比較上一次執行的 myTime 數值與當次執行的time是否相同。

您可以將相關數值一併 print 出來,會比較容易理解。

 

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

發表回覆
Close