非模組合約成交后系統查到的持倉仍為0 [文華財經]
- 咨詢內容:
我做下面的例子來模擬此問題
1.創建一個模型名稱叫“測試”,內容如下:
BK(1);
2.創建一個模組名稱也叫“測試”,內容如下:
VOID MAIN()
{
VAR Code;//交易編碼
VAR bid1;//買價1
VAR SKN;//目標開倉數
VAR SKID;//賣開返回標識
VAR SKStatus;//開倉狀態
VAR SKTime;//提交時間
VAR DelStatus;
Code="ws0000";//任意合約
bid1=Offers(Code,"bid1");
SKN=1;
SKID=ReadGlobalStr("SKID");
SKTime=ReadGlobal("SKTime");
SKStatus=ReadGlobal("SKStatus");
IF(SKStatus==0&&T_SellPosition(Code)==0)//無持倉
{
SKStatus=1;
SKID=T_Deal(Code,1,0,SKN,bid1);//發出SKN手的賣開委托
WriteGlobalStr("SKID",SKID);
WriteGlobal("SKStatus",SKStatus);
WriteGlobal("SKTime",CurrentTime());
MessageOut(TimeToStr(CurrentTime())+","+Code+","+"SKID="+SKID+",申報數量="+SKN+",申報價格="+bid1+",賣開委托已提交!");
}
ELSE IF(SKStatus==1&&T_OrderMatchVol(SKID)==SKN)//已成交
{
// SKStatus=0;
// WriteGlobal("SKStatus",SKStatus);
MessageOut(TimeToStr(CurrentTime())+","+Code+","+"SKID="+SKID+","+"賣開已成交!");
MessageOut(TimeToStr(CurrentTime())+","+Code+",當前持倉:"+T_SellPosition(Code)+"手");
}
ELSE IF(T_OrderMatchVol(SKID)==0&&(CurrentTime()-SKTime>10))//賣開委托10秒未成交
{
DelStatus=T_DeleteOrder(SKID);//撤單
IF(DelStatus==0)
{
SKID=T_Deal(Code,1,0,SKN,bid1);//發出SKN手的賣開委托
WriteGlobalStr("SKID",SKID);
WriteGlobal("SKStatus",SKStatus);
WriteGlobal("SKTime",CurrentTime());
MessageOut(TimeToStr(CurrentTime())+","+Code+","+"SKID="+SKID+",申報數量="+SKN+",申報價格="+bid1+",賣開委托已撤單并重新提交!");
}
}
}3.創建一個群組,合約隨便,只要不是第2步中的【Code="ws0000";//任意合約】就行,加載此群組
下圖中可看出,合約"ws0000"已經成交1手,可T_SellPosition(Code)返回值為0,請測試確認此問題,多謝!
- 文華技術人員:
此主題相關圖片如下:測試.jpg
- 文華客服:
您截圖的版本號是多少?是0823模擬版本嗎?
- 網友回復:
就是我當前有的版本。
如果是在交易時間,將上述的Code="ws0000";隨便改成"rb1305"、"zn1305"之類,試試就能發現問題了。
- 網友回復: 這個問題我們需要核實一下,有結果會及時在此跟帖的
有思路,想編寫各種指標公式,程序化交易模型,選股公式,預警公式的朋友
可聯系技術人員 QQ: 262069696 進行 有償 編寫!(不貴!點擊查看價格!)
相關文章
-
沒有相關內容