你好,如下圖,
我程式有判斷if position > 0才會執行出場,
但下圖的下方的記錄區,仍是會紀錄到一直在執行出場動作,
請問我這可能是什麼原因嗎?
甚至也讓整個策略,經過一日一夜都沒進行下單。

log檔在此 :
https://drive.google.com/file/d/1gwcLrt5NX7Zz30EPo-JuhUOKZ9LbGDoI/view?usp=sharing
你好,如下圖,
我程式有判斷if position > 0才會執行出場,
但下圖的下方的記錄區,仍是會紀錄到一直在執行出場動作,
請問我這可能是什麼原因嗎?
甚至也讓整個策略,經過一日一夜都沒進行下單。

log檔在此 :
https://drive.google.com/file/d/1gwcLrt5NX7Zz30EPo-JuhUOKZ9LbGDoI/view?usp=sharing
Hello 無情卻慈悲,
看執行時間,這感覺上像是在進入即時洗價前運算時印出的資訊。
此時您有部位但是在歷史資料上運算,所以不會執行setposition。
造成 position 會一直維持在大於0的狀況下,故會一直進入 if 的判斷式裡。
這部分可能跟您的策略設定有關。
至於讓整個策略一日一夜都沒有下單,小幫手想到的可能性是您的腳本中有一個 setposition 持續在執行,導致其他的setposition無法執行。
因為當腳本中有複數個setposition執行時,只會執行第一個執行到的 setposition 指令。
這部分的話則可能與腳本有關。
小幫手會先請相關人員確認您的log,看是否能確認問題如上述。
感謝。
你好,
我程式有判斷if position > 0才會執行出場,
但是當下我程式是沒有任何的部位的,也就是當下position = 0,
既然=0就不應一直反覆判斷啊,不是嗎?
Hello 無情卻慈悲,
您的條件是:
if position > 0 and (j < k) or (close < sarValue) then begin
這種寫法會是 position > 0 and (j < k) 或是 (close < sarValue) 這兩種任一達成就會觸發。
所以有可能是 close < sarValue 符合條件所以print出來。
推測您想要的應該是 if position > 0 and ((j < k) or (close < sarValue)) 這樣才對。
position > 0 and (j < k) 或是 position > 0 and (close < sarValue)。
另外就您的log來看,您是在10:46:28啟動策略,運行在15分鐘頻率非逐筆上,所以 101500 和 103000 這兩根Bar是過去資料。
除非您有開啟策略部位計算起點,不然這段時間是不會交易的,若有交易的話,執行紀錄上也會有顯示相關資訊。
你好,
我理解您的意思,
(1)
我只要把or 前後加上括號即可,對嗎?
if position > 0
and (
( j < k ) or ( close < sarValue )
)
then begin.....
(2)
除非您有開啟策略部位計算起點,不然這段時間是不會交易的
→這是指說我必須設置settotalbar嗎,還是指?
Hello 無情卻慈悲,
1.是的,if position > 0 and ((j < k) or (close < sarValue)) 這樣才會是一定要 position > 0 才會執行。
2.您可以參考教學區裡面的策略部位計算功能說明。
5 評論