麻煩看看下面的組件為什么沒有正確執行? [贏順期貨]
- 咨詢內容:
組件的目的:掛價開、平倉,30秒不能成交撤單對價追單。
VAR Price,KPN,M;
VAR BKID,SKID,BPID,SPID;//定義BKID,SKID,BPID,SPID
VAR LastWithDrawFinsh;VOID MAIN() //
{KPN=1;//定義開平倉手數為1手
M=0;//
Price=Price(F_DealCode());//IF (F_Sig()==BK) //如果信號是買開信號
BKID=T_Deal(F_DealCode(),0,0,KPN,Offers( F_DealCode(),"bid1")+0*MinPrice(F_DealCode()));//
IF (F_Sig()==SK) //如果信號是賣開信號
SKID=T_Deal(F_DealCode(),1,0,KPN,Offers( F_DealCode(),"ask1")-0*MinPrice(F_DealCode()));//
IF (F_Sig()==BP) //如果信號是買平信號
{
IF (F_SellPosition()>0 && F_SellPosition()<KPN)//如果當前模型空頭持倉大于0小于KPN
BPID=T_Deal(F_DealCode(),0,1,F_SellPosition(),Offers( F_DealCode(),"bid1")+0*MinPrice(F_DealCode()));//
//
ELSE IF (F_SellPosition()>=KPN)//
BPID=T_Deal(F_DealCode(),0,1,KPN,Offers( F_DealCode(),"bid1")+0*MinPrice(F_DealCode()));//發出KPN手平空指令
ELSE IF (F_SellPosition()==0)//
MessageOut ("當前沒有空頭持倉");
}
IF (F_Sig()==SP) //如果信號是賣平信號
{
IF (F_BuyPosition()>0 && F_BuyPosition()<KPN)//如果當前模型多頭持倉小于KPN大于0
SPID=T_Deal(F_DealCode(),1,1,F_BuyPosition(),Offers( F_DealCode(),"ask1")-0*MinPrice(F_DealCode()));//
//
ELSE IF (F_BuyPosition()>=KPN)//如果當前模型多頭持倉大于等于KPN手
SPID=T_Deal(F_DealCode(),1,1,KPN,Offers( F_DealCode(),"ask1")-0*MinPrice(F_DealCode()));//
ELSE IF (F_BuyPosition()==0)//如果當前持倉為0
MessageOut ("當前沒有多頭持倉");
}
IF (F_Sig()==BPK) //如果信號是買平開信號
{
IF (F_SellPosition()>0 && F_SellPosition()<KPN)//如果當前模型空頭持倉大于0小于KPN
{
T_Deal(F_DealCode(),0,1,F_SellPosition(),Offers( F_DealCode(),"bid1")+0*MinPrice(F_DealCode()));//以當前模型空頭持倉手數發出買平委托
T_Deal(F_DealCode(),0,0,KPN,Offers( F_DealCode(),"bid1")+0*MinPrice(F_DealCode()));//以KPN手發出買開委托
}
ELSE IF (F_SellPosition()>=KPN)//如果當前空頭持倉大于等于KPN手
{
T_Deal(F_DealCode(),0,1,KPN,Offers( F_DealCode(),"bid1")+0*MinPrice(F_DealCode()));//以KPN手發出買平委托
T_Deal(F_DealCode(),0,0,KPN,Offers( F_DealCode(),"bid1")+0*MinPrice(F_DealCode()));//以KPN手發出買開委托
}
ELSE IF (F_SellPosition()==0)//空頭持倉為0
{
MessageOut ("當前沒有空頭持倉");
T_Deal(F_DealCode(),0,0,KPN,Offers( F_DealCode(),"bid1")+0*MinPrice(F_DealCode()));//以KPN手發出買開委托
}
}
IF (F_Sig()==SPK) //如果信號是賣平開信號
{
IF (F_BuyPosition()>0 && F_BuyPosition()<KPN)//如果當前模型多頭持倉大于0小于KPN
{
T_Deal(F_DealCode(),1,1,F_BuyPosition(),Offers( F_DealCode(),"ask1")-0*MinPrice(F_DealCode()));//以當前模型多頭持倉手數發出賣平委托
T_Deal(F_DealCode(),1,0,KPN,Offers( F_DealCode(),"ask1")-0*MinPrice(F_DealCode()));
}
ELSE IF (F_BuyPosition()>=KPN)
{
T_Deal(F_DealCode(),1,1,KPN,Offers( F_DealCode(),"ask1")-0*MinPrice(F_DealCode()));
T_Deal(F_DealCode(),1,0,KPN,Offers( F_DealCode(),"ask1")-0*MinPrice(F_DealCode()));
}
ELSE IF (F_BuyPosition()==0)//多頭持倉為0
{
MessageOut ("當前沒有多頭持倉");
T_Deal(F_DealCode(),1,0,KPN,Offers( F_DealCode(),"ask1")-0*MinPrice(F_DealCode()));
}
}
//下面是30秒沒有成交,撤單。
//IF(CurrentTime()-LastOrderTime()<2 && LastOrderTime()!=0)
// RETURN; //控制組件的執行頻率 兩秒執行一次
//icount=F_SigCount();
LastWithDrawFinsh=ReadGlobal("LASTWITHDRAW");
IF(T_IsNoOrder()!=1 ) //有掛單的情況
{
//查詢掛單然后進行撤單
//need added code
IF(CurrentTime()-LastOrderTime()>30 && LastWithDrawFinsh==1) //如果30秒有委托未成交,全撤,下次進入會重新下委托
{
T_DeleteOrderAll();//撤掉所有未成交委托。
LastWithDrawFinsh=0;
}
WriteGlobal("LASTWITHDRAW", LastWithDrawFinsh);
RETURN;
}
LastWithDrawFinsh=1;
F_FreshSig(); //刷新現有的信號
IF (F_Sig()==BK) //如果信號是買開信號(以對價+M倍最少波動),保證成交
BKID=T_Deal(F_DealCode(),0,0,KPN,Offers( F_DealCode(),"ask1")+M*MinPrice(F_DealCode()));//以最新價+0個最小表動價位發出KPN手的買開委托
IF (F_Sig()==SK) //如果信號是賣開信號(以對價-M倍最少波動),保證成交
SKID=T_Deal(F_DealCode(),1,0,KPN,Offers( F_DealCode(),"bid1")-M*MinPrice(F_DealCode()));//以最新價-0個最小表動價位發出KPN手的賣開委托
IF (F_Sig()==BP) //如果信號是買平信號
{
IF (F_SellPosition()>0 && F_SellPosition()<KPN)
BPID=T_Deal(F_DealCode(),0,1,F_SellPosition(),Offers( F_DealCode(),"ask1")+M*MinPrice(F_DealCode()));
ELSE IF (F_SellPosition()>=KPN)//如果當前空頭持倉大于KPN手
BPID=T_Deal(F_DealCode(),0,1,KPN,Offers( F_DealCode(),"ask1")+M*MinPrice(F_DealCode()));
ELSE IF (F_SellPosition()==0)//空頭持倉為0
MessageOut ("當前沒有空頭持倉");
}
IF (F_Sig()==SP)
{
IF (F_BuyPosition()>0 && F_BuyPosition()<KPN)
SPID=T_Deal(F_DealCode(),1,1,F_BuyPosition(),Offers( F_DealCode(),"bid1")-M*MinPrice(F_DealCode()));
ELSE IF (F_BuyPosition()>=KPN)
SPID=T_Deal(F_DealCode(),1,1,KPN,Offers( F_DealCode(),"bid1")-M*MinPrice(F_DealCode()));
ELSE IF (F_BuyPosition()==0)//如果當前持倉為0
MessageOut ("當前沒有多頭持倉");
}
IF (F_Sig()==BPK) //如果信號是買平開信號
{
IF (F_SellPosition()>0 && F_SellPosition()<KPN)
{
T_Deal(F_DealCode(),0,1,F_SellPosition(),Offers( F_DealCode(),"ask1")+M*MinPrice(F_DealCode()));
T_Deal(F_DealCode(),0,0,KPN,Offers( F_DealCode(),"ask1")+M*MinPrice(F_DealCode()));//
}
ELSE IF (F_SellPosition()>=KPN)//如果當前空頭持倉大于等于KPN手
{
T_Deal(F_DealCode(),0,1,KPN,Offers( F_DealCode(),"ask1")+M*MinPrice(F_DealCode()));//
T_Deal(F_DealCode(),0,0,KPN,Offers( F_DealCode(),"ask1")+M*MinPrice(F_DealCode()));//
}
ELSE IF (F_SellPosition()==0)//空頭持倉為0
{
MessageOut ("當前沒有空頭持倉");
T_Deal(F_DealCode(),0,0,KPN,Offers( F_DealCode(),"ask1")+M*MinPrice(F_DealCode()));//以KPN手發出買開委托
}
}
IF (F_Sig()==SPK) //
{
IF (F_BuyPosition()>0 && F_BuyPosition()<KPN)//
{
T_Deal(F_DealCode(),1,1,F_BuyPosition(),Offers( F_DealCode(),"bid1")-M*MinPrice(F_DealCode()));//
T_Deal(F_DealCode(),1,0,KPN,Offers( F_DealCode(),"bid1")-M*MinPrice(F_DealCode()));//
}
ELSE IF (F_BuyPosition()>=KPN)//
{
T_Deal(F_DealCode(),1,1,KPN,Offers( F_DealCode(),"bid1")-M*MinPrice(F_DealCode()));//
T_Deal(F_DealCode(),1,0,KPN,Offers( F_DealCode(),"bid1")-M*MinPrice(F_DealCode()));//
}
ELSE IF (F_BuyPosition()==0)//
{
MessageOut ("當前沒有多頭持倉");
T_Deal(F_DealCode(),1,0,KPN,Offers( F_DealCode(),"bid1")-M*MinPrice(F_DealCode()));//
}
}
WriteGlobal("LASTWITHDRAW", LastWithDrawFinsh);
}
- 贏順技術人員:
老師們吃飯去了?
- 贏順客服:
組件不發委托的原因有很多,不光是編寫的問題,向您咨詢下,您加載的是什么合約,所有的信號都沒有委托?還是第一根信號沒有委托?是否進行了倉位初始化的設定?
- 網友回復:
用了這個下單組件,下午出現開倉信號后不斷幫我開倉,一秒一次開倉信號,直到沒有資金。。。。。。。。。我在下單參數里面選擇了“等K線走完下單“,應該對此沒有什么影響啊
原來同樣的模型,用軟件自身的下單設置,沒有使用過濾也是用得好好的啊~
- 網友回復: 是組件問題還是模型問題呢?
如果以上指標公式不適用于您常用的行情軟件
或者您想改編成選股公式,以便快速選出某種形態個股的話,
- 上一篇:贏順出來了后,一鍵通什么時候不通?
- 下一篇:沒有了!
相關文章
-
沒有相關內容