這是一個網格交易的程式利用陣列來做紀錄
看了好幾次log, 還是看不出程式哪裡有問題, 怎麼都覺得是陣列使用的bug
請先看print 的 log
20210825.000000 222500.000000 買入,_i,close,bar,position,filled 17108.000000 5.000000 9801.000000 -1.000000 -1.000000
我的程式邏輯是有買才賣, 所以不應該出現這種情形
請協助一下
Hello 老王837,
您的錯誤是發生於複數的 setposition 同時符合條件時,只會執行第一個。
但是就算 setposition 沒有執行,變數的值卻改變了。
小幫手在您執行買入與執行賣出的部份加上print來檢查。(參考附圖)
在記事本中反白且用黃色框起的部分是在同一次洗價中執行的。
該次洗價中雖然把之前買入 _i = 3 的部分賣出,但在迴圈執行下一次 _i = 4 時符合買入條件。
此時就發生兩個 setposition 都符合,但只有執行第一個的狀況。
而 _i = 4 的 _G_rec 也因為符合而被改成 True。
所以接下來就變成賣出1張進場。
小幫手建議您在迴圈中不要使用 Setposition,而是用變數紀錄應有的部位,最後在迴圈外才用setposition設為該變數紀錄的部位。
我的問題是_G_rec[5]紀錄買入指標並沒有變成true, 可是卻在賣出迴圈檢查時出現true的情況, 所以執行Setposition賣出
3 評論