自編的下單軟件怎么只出現信號,不開倉 [文華財經知識]
- 咨詢內容:
此主題相關圖片如下:未命名.jpg
此主題相關圖片如下:qq截圖20120130092040.png
我的下單組件是開倉信號持續300秒開倉,平倉立即發出;但怎么只出現信號?
- 贏順技術人員:
//該組件僅僅用來示范如何編寫算法交易組件
//用戶需要根據自己交易經驗,編寫組件再實際應用!!!//主要策略:設定超價參數,開平倉時,自動根據超價參數調整委托價格,提高成交價幾率。
這是我的下單組件,
VAR N;//定義超價參數。
VAR KN;//定義開倉手數。
VAR PN;//定義平倉手數。
VAR BKID;//定義BK委托ID
VAR SKID;//定義SK委托ID
VAR BPID;//定義BP委托ID
VAR SPID;//定義SP委托ID
VAR LastState;
VOID MAIN()//主函數。
{
N=1;
KN=1;
PN=1;
LastState=ReadGlobal("LASTSTATE");
IF(F_FreshSig()==1&&F_SigValid()==1)//如果是未處理過的新信號
{
IF(F_Sig()==BK&&CurrentTime()-F_SigTime()>=300) //如果取出的信號為BK
{
BKID=T_Deal(F_DealCode(),0,0,KN,Offers(F_DealCode(),"ask1")+MinPrice(F_DealCode())*N);//買開指定手數。
}
IF(F_Sig()==SK&&CurrentTime()-F_SigTime()>=300) //如果取出的信號為SK
{
SKID=T_Deal(F_DealCode(),1,0,KN,Offers(F_DealCode(),"bid1")-MinPrice(F_DealCode())*N);//賣開指定手數。
}
IF(F_Sig()==BP) //如果取出的信號為BP
{
IF(F_SellPosition()<PN&&F_SellPosition()>0)
{
BPID=T_Deal(F_DealCode(),0,1,F_SellPosition(),Offers(F_DealCode(),"ask1")+MinPrice(F_DealCode())*N);//買平指定手數。
//此句中T_Deal的第3個參數為2,表示平今,只適用于上交所合約,如果綁定非上交所合約時,請將2改為1即可。下同理。
}
IF(F_SellPosition()>=PN)
{
BPID=T_Deal(F_DealCode(),0,1,PN,Offers(F_DealCode(),"ask1")+MinPrice(F_DealCode())*N);//買平指定手數。
}
}
IF(F_Sig()==SP) //如果取出的信號為SP
{
IF(F_BuyPosition()<PN&&F_BuyPosition()>0)
{
SPID=T_Deal(F_DealCode(),1,1,F_BuyPosition(),Offers(F_DealCode(),"ask1")-MinPrice(F_DealCode())*N);//買平指定手數。
}
IF(F_BuyPosition()>=PN)
{
SPID=T_Deal(F_DealCode(),1,1,PN,Offers(F_DealCode(),"ask1")-MinPrice(F_DealCode())*N);//買平指定手數。
}
}
}
ELSE IF(F_FreshSig()==0)//如果是處理過的信號
{
LastState=0;
IF(F_Sig()==BK) //如果取出的信號為BK
{
IF(T_OrderState(BKID)==1&&LastState==0)//買開委托全部成交
{
MessageOut("成交已完成!");
LastState=1;
}
}
IF(F_Sig()==SK) //如果取出的信號為SK
{
IF(T_OrderState(SKID)==1&&LastState==0)//賣開委托全部成交
{
MessageOut("成交已完成!");
LastState=1;
}
}
IF(F_Sig()==BP) //如果取出的信號為BP
{
IF(T_OrderState(BPID)==1&&LastState==0)//買平委托全部成交
{
MessageOut("成交已完成!");
LastState=1;
}
}
IF(F_Sig()==SP) //如果取出的信號為SP
{
IF(T_OrderState(SPID)==1&&LastState==0)//賣平委托全部成交
{
MessageOut("成交已完成!");
LastState=1;
}
}
}
WriteGlobal("LASTSTATE", LastState);
} - 贏順客服:
此主題相關圖片如下:qq截圖20120130092929.png
此主題相關圖片如下:qq截圖20120130093007.png
不知道怎么不委托,也沒持倉, - 網友回復:
您時間判斷的句子不能寫到F_FreshSig()==1&&F_SigValid()==1下,因為信號走完300s 就不是新信號了,所以應該寫到F_FreshSig()==0&&F_SigValid()==1的下面。
- 網友回復:
把IF(F_FreshSig()==1&&F_SigValid()==1)改為 IF(F_FreshSig()==0&&F_SigValid()==1)
其他都不變是嗎?
相關文章
-
沒有相關內容