變數的儲存

  •   379 
  • 最後發表   無情卻慈悲  2024 九月 03
無情卻慈悲 發文於   2024/08/26

//多單停損價位1

var:stop_price_buy(0);

//多單進場

if position <= 0   and filled <= 0 

 

then begin

stop_price_buy = Low[1] - 10 ;

 

SetPosition(1, MARKET,label:="多單進場");

 

end;

請問一下,以stop_price_buy 而言,它在多單下單後儲存當下的低點,但是程式執行到最後一行後,重新重第一行開始再執行時,stop_price_buy 會一直因這句「var:stop_price_buy(0);」而被重新歸0 嗎?

若是一直被歸0,那麼要怎樣才能把當下下單的低點儲下來而不會被歸0呢?

謝謝。

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

變數宣告只會在第一根K棒執行程式時執行,後面就不會再執行宣告,也就是說,不會被歸零。

無情卻慈悲 發文於   2024/08/26

 

只是我用上述我原本寫法去print,都是0 。感謝,我再試試。

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

宣告變數時記得加上intrabarpersist。

XS小編 發文於   2024/08/29

Hello 無情卻慈悲,

 

您遇到的情況應該就如同 虎科大許教授 所說的,因為策略設定為逐筆洗價,導致變數沒有保存在同一根Bar中洗價運算的值。

細節可參考 IntrabarPersist 的說明。

 

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

無情卻慈悲 發文於   2024/08/29

請問是否只要是洗價模式,所有的變數都要加上 IntrabarPersist   呢

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

不一定,有些時候是不能加的。

XS小編 發文於   2024/09/03

Hello 無情卻慈悲,

 

這會隨您的需求而有不同的使用方式,但可以想成您需要的是保存該根Bar運算的結果,還是該次洗價運算的結果。

雖然在同次洗價中該變數的值都會保存,但到了下次洗價時在未賦予值前,該變數會是 前根Bar的值 (未使用IntrabarPersist) 還是 前一次洗價的值 (使用IntrabarPersist)。

發表回覆
Close