網頁
▼
2013年7月23日 星期二
Multicharts跨圖表傳遞資料
在MultiCharts裡有時候會想要引用不同圖表的資料,這個資料可能是價格、計算的指標值、或是某一個圖表訊號的部位,例如B圖表想要參考A圖表策略的目前部位為何?
不同圖表間資料的傳遞可以利用下面內建的函數,
GVSetNamedDouble
GVSetNamedInt
GVGetNamedDouble
GVGetNamedInt
Set就是存值,Get就是取值。Int是存整數,Double是存小數。
以一個傳遞訊號部位的例子來說明,建立兩個indicator,一個是PositionSource,將部位值存起來。一個是PositionDestination,將部位值取出來。
PositionSource範例程式如下,
行號4,將IntrabarOrderGeneration開啟,原因是部位可能每個TICK就有變動,這要看你的Signal是不是用到,一般來說,如果用到SetStop這類函數,就要把這個IOG打開。
行號6,和上面同樣理由,宣告一個IOG的變數PositionSource
行號8,i_MarketPosition 和 i_CurrentContracts 是部位方向和部位口數,兩個值就是在Siganl裡寫的MarketPosition和CurrentContracts,因為這裡寫的是指標,所以就用前面+ i_的。兩個值相乘後存到PositionSource這個變數裡,例如作空一口值是-1,作多兩口值是2。
行號10,呼叫GVSetNamedInt函數,將PositionSource的值,存到前面引號內的變數名,這邊同樣也取作PositionSource,這個名字就是給其它圖表呼叫用的。另外,這個例子傳遞部位值使用整數Int就可以了。
PositionDestination範例程式如下,
前面一樣設定相關IOG,行號8將PositionSource的值取出來,存到變數Position中,第二個參數的說明並不清楚,函數說明僅寫是ErrorCode,推測是取不到值發生錯誤該傳什麼值,這個填一個數字就行了。
應用上,這個部位也可以拿來再和自己的部位相加,或是取其它資料時再拿來運算。只是這個取的值,只有存最後的狀態而已,如果需求是要拿來回測就沒辦法了,要用一般多新增Data的方式才可以回測。
L
沒有留言:
張貼留言