人人爽天天爽夜夜爽qc-人人爽天天爽夜夜爽曰-人人天天爱天天做天天摸-人人天天夜夜-色网站在线-色网站在线看

您現(xiàn)在的位置:程序化交易>> 期貨公式>> 文華財(cái)經(jīng)>> 文華財(cái)經(jīng)公式>>正文內(nèi)容

下單組件"掛價(jià)發(fā)出委托,3秒不成交的話撤單,以對價(jià)再發(fā)出委托" 源碼[文華財(cái)經(jīng)公式]

  • 下面這個(gè)下單組件,目的是實(shí)現(xiàn)“掛價(jià)發(fā)出委托,3秒不成交的話撤單,以對價(jià)再發(fā)出委托”,半年前我曾經(jīng)發(fā)過到論壇,經(jīng)過一個(gè)多星期的討論和更新,最后文華員工的答復(fù)是軟件存在BUG,沒法實(shí)現(xiàn)~

    現(xiàn)在不知道能不能實(shí)現(xiàn),上星期再次測試,結(jié)果是模型可以發(fā)出開、平倉信號(hào),但是沒有發(fā)出任何具體委托。

    因?yàn)椋疫@個(gè)下單組件,估計(jì)80%用文華實(shí)盤的人都會(huì)用到,到時(shí)候正常使用的話可以寫到文華下單組件的示范里面供更多人使用~

    源碼如下:

     

    VAR Price,M,N;
    VAR BKID,SKID,BPID,SPID,SPKID1,BPKID1,SPKID2,BPKID2;//定義BKID,SKID,BPID,SPID
    VAR LastWithDrawFinsh;
    VAR LastState;
    VAR KNALL;//目標(biāo)總開倉數(shù)
    VOID MAIN() //
    {
    //KPN設(shè)為按照模型信號(hào)
     M=0;//發(fā)出信號(hào)時(shí),0為掛價(jià)委托,1為對價(jià)委托,>=2為超價(jià)委托
     N=1;//再委托的委托價(jià)參數(shù),0為掛價(jià)委托,1為對價(jià)委托,>=2為超價(jià)委托
     Price=Price(F_DealCode());//
     BKID=ReadGlobalStr("BKID");
     SKID=ReadGlobalStr("SKID");
     BPID=ReadGlobalStr("BPID");
     SPID=ReadGlobalStr("SPID");
     BPKID1=ReadGlobalStr("BPKID1");
     SPKID1=ReadGlobalStr("SPKID1");
     BPKID2=ReadGlobalStr("BPKID2");
     SPKID2=ReadGlobalStr("SPKID2");
     KNALL=ReadGlobal("KNALL");
     //下面是3秒沒有成交,撤單。
     LastWithDrawFinsh=ReadGlobal("LASTWITHDRAW");
     IF(T_IsNoOrder()!=1 ) //有掛單的情況
     {
     //查詢掛單然后進(jìn)行撤單
      IF(CurrentTime()-LastOrderTime()==3 && LastWithDrawFinsh==1) //如果3秒有委托未成交,全撤,下次進(jìn)入會(huì)重新下委托
      {
       IF(F_Sig()==BK) //如果取出的信號(hào)為BP
       {
        IF(T_IsNoOrder()==0)
        {
         MessageOut("BK撤單到了!");
         T_DeleteOrder(BKID);
         LastState=0;
        //
        }
       }
       IF(F_Sig()==SK) //如果取出的信號(hào)為SP
       {
        IF(T_IsNoOrder()==0)
        {
         MessageOut("SK撤單到了!");
         T_DeleteOrder(SKID);
         LastState=0;
        }
       }
       IF(F_Sig()==BP) //如果取出的信號(hào)為BP
       {
        IF(T_SellPosition(F_DealCode())>0&&T_IsNoOrder()==0)
        {
         MessageOut("BP撤單到了!");
         T_DeleteOrder(BPID);
         LastState=0;
        //
        }
       }
       IF(F_Sig()==SP) //如果取出的信號(hào)為SP
       {
        IF(T_BuyPosition(F_DealCode())>0&&T_IsNoOrder()==0)
        {
         MessageOut("SP撤單到了!");
         T_DeleteOrder(SPID);
         LastState=0;
        }
       }


       IF(F_Sig()==SPK) //如果取出的信號(hào)為SP
       {
        IF(T_IsNoOrder()==0)
        {
         MessageOut("SPK撤單到了!");
         T_DeleteOrder(SPKID1);
         T_DeleteOrder(SPKID2);
         LastState=0;
        }
       }
       IF(F_Sig()==BPK) //如果取出的信號(hào)為BP
       {
        IF(T_IsNoOrder()==0)
        {
         MessageOut("BPK撤單到了!");
         T_DeleteOrder(BPKID1);
         T_DeleteOrder(BPKID2);
         LastState=0;
        //
        }
       }

     

       LastWithDrawFinsh=0;
      }
     WriteGlobal("LASTWITHDRAW", LastWithDrawFinsh);
     RETURN;
     }
     LastWithDrawFinsh=1;
     IF(F_FreshSig()==1)//刷新現(xiàn)有的信號(hào),有新信號(hào)
     {
      SEND();
     }
     ELSE IF(F_FreshSig()==0)//如果是處理過的信號(hào)
     {
      IF((T_OrderState(BKID)==2||T_OrderState(SKID)==2||T_OrderState(BPID)==2||T_OrderState(SPID)==2||T_OrderState(BPKID1)==2||T_OrderState(SPKID1)==2||T_OrderState(BPKID2)==2||T_OrderState(SPKID2)==2||T_OrderState(BKID)==3||T_OrderState(SKID)==3||T_OrderState(BPID)==3||T_OrderState(SPID)==3||T_OrderState(BPKID1)==3||T_OrderState(SPKID1)==3||T_OrderState(BPKID2)==3||T_OrderState(SPKID2)==3)&&LastState==0)//如果委托撤單
      {
       RESEND();
       LastState=1; 
      }
     }
     WriteGlobalStr("BKID",BKID);
     WriteGlobalStr("SKID",SKID);
     WriteGlobalStr("BPID",BPID);
     WriteGlobalStr("SPID",SPID);
     WriteGlobalStr("BPKID1",BPKID1);
     WriteGlobalStr("SPKID1",SPKID1);
     WriteGlobalStr("BPKID2",BPKID2);
     WriteGlobalStr("SPKID2",SPKID2);
     WriteGlobal("LASTSTATE", LastState);
     WriteGlobal("LASTWITHDRAW", LastWithDrawFinsh);
     WriteGlobal("KNALL",KNALL);

    }

    VOID SEND()
    {
    IF(F_Sig()==BPK && F_SigValid()==1) //如果取出的信號(hào)為BPK 且信號(hào)不是消失狀態(tài)
     {
      IF(F_SellPosition()!=0)
      {
       MessageOut("信號(hào)BPK生效,平掉所有賣倉");
       BPKID1=T_ReduceSellOpiTo(F_DealCode(), Offers(F_DealCode(),"bid1")+MinPrice(F_DealCode())*M,0); //平掉所有空頭持倉
      }
      IF(F_BuyPosition()>=0)//
      {
       MessageOut("信號(hào)BPK生效,開倉");
                      KNALL=F_SigVol()+F_BuyPosition();
       BPKID2=T_AddBuyOpiTo(F_DealCode(), Offers(F_DealCode(),"bid1")+MinPrice(F_DealCode())*M,F_SigVol()+F_BuyPosition()); //補(bǔ)充持倉
                     
      }
     }
    IF(F_Sig()==SPK && F_SigValid()==1) //如果取出的信號(hào)為SPK 且信號(hào)不是消失狀態(tài)
     {
      IF(F_BuyPosition()!=0)
      {
       SPKID1=T_ReduceBuyOpiTo(F_DealCode(), Offers(F_DealCode(),"ask1")-MinPrice(F_DealCode())*M,0); //平掉所有多頭持倉
      }
      IF(F_SellPosition()>=0) //如果買倉為0,不存在止贏止損問題,直接開倉
      {
                      KNALL=F_SigVol()+F_SellPosition();
       SPKID2=T_AddSellOpiTo(F_DealCode(), Offers(F_DealCode(),"ask1")-MinPrice(F_DealCode())*M,F_SigVol()+F_SellPosition()); //補(bǔ)充空頭持倉
      }  
     }
    IF(F_Sig()==BP && F_SigValid()==1) //如果取出的信號(hào)為BP 且信號(hào)不是消失狀態(tài)
     {
      IF(F_SellPosition()!=0)
      {
       MessageOut("信號(hào)BP生效,平掉所有賣倉");
       BPID=T_ReduceSellOpiTo(F_DealCode(), Offers(F_DealCode(),"bid1")+MinPrice(F_DealCode())*M,0); //平掉所有空頭持倉
      }
     }

    IF(F_Sig()==SP && F_SigValid()==1) //如果取出的信號(hào)為SP 且信號(hào)不是消失狀態(tài)
     {
      IF(F_BuyPosition()!=0)
      {
       SPID=T_ReduceBuyOpiTo(F_DealCode(), Offers(F_DealCode(),"ask1")-MinPrice(F_DealCode())*M,0); //平掉所有多頭持倉
      }
     }


    IF(F_Sig()==BK && F_SigValid()==1) //如果取出的信號(hào)為BK 且信號(hào)不是消失狀態(tài)
     {
      
      IF(F_BuyPosition()>=0 && F_SellPosition()==0)//判斷是不是部分成交
      {
       MessageOut("信號(hào)BK生效,開倉");
                      KNALL=F_SigVol()+F_BuyPosition();
       BKID=T_AddBuyOpiTo(F_DealCode(), Offers(F_DealCode(),"bid1")+MinPrice(F_DealCode())*M,F_SigVol()+F_BuyPosition()); //
      }
     }

    IF(F_Sig()==SK && F_SigValid()==1) //如果取出的信號(hào)為SK 且信號(hào)不是消失狀態(tài)
     {
      
      IF(F_SellPosition()>=0 && F_BuyPosition()==0) //如果買倉為0,不存在止贏止損問題,直接開倉
      {
                      KNALL=F_SigVol()+F_SellPosition();
       SKID=T_AddSellOpiTo(F_DealCode(), Offers(F_DealCode(),"ask1")-MinPrice(F_DealCode())*M,F_SigVol()+F_SellPosition()); //
      }  
     }
    }


    VOID RESEND()
    {
    IF(F_Sig()==BPK && F_SigValid()==1) //如果取出的信號(hào)為BPK 且信號(hào)不是消失狀態(tài)
     {
      IF(F_SellPosition()!=0)
      {
       MessageOut("信號(hào)BPK生效,平掉所有賣倉");
       BPKID1=T_ReduceSellOpiTo(F_DealCode(), Offers(F_DealCode(),"bid1")+MinPrice(F_DealCode())*N,0); //平掉所有空頭持倉
      }
      IF(F_BuyPosition()<=KNALL)//判斷是不是部分成交
      {
       MessageOut("信號(hào)BPK生效,開倉");
       BPKID2=T_AddBuyOpiTo(F_DealCode(), Offers(F_DealCode(),"bid1")+MinPrice(F_DealCode())*N,KNALL); //補(bǔ)充持倉
      }
     }
    IF(F_Sig()==SPK && F_SigValid()==1) //如果取出的信號(hào)為SPK 且信號(hào)不是消失狀態(tài)
     {
      IF(F_BuyPosition()!=0)
      {
       SPKID1=T_ReduceBuyOpiTo(F_DealCode(), Offers(F_DealCode(),"ask1")-MinPrice(F_DealCode())*N,0); //平掉所有多頭持倉
      }
      IF(F_SellPosition()<=KNALL) //如果買倉為0,不存在止贏止損問題,直接開倉
      {
       SPKID2=T_AddSellOpiTo(F_DealCode(), Offers(F_DealCode(),"ask1")-MinPrice(F_DealCode())*N,KNALL); //補(bǔ)充空頭持倉
      }  
     }
    IF(F_Sig()==BP && F_SigValid()==1) //如果取出的信號(hào)為BP 且信號(hào)不是消失狀態(tài)
     {
      IF(F_SellPosition()!=0)
      {
       MessageOut("信號(hào)BP生效,平掉所有賣倉");
       BPID=T_ReduceSellOpiTo(F_DealCode(), Offers(F_DealCode(),"bid1")+MinPrice(F_DealCode())*N,0); //平掉所有空頭持倉
      }
     }

    IF(F_Sig()==SP && F_SigValid()==1) //如果取出的信號(hào)為SP 且信號(hào)不是消失狀態(tài)
     {
      IF(F_BuyPosition()!=0)
      {
       SPID=T_ReduceBuyOpiTo(F_DealCode(), Offers(F_DealCode(),"ask1")-MinPrice(F_DealCode())*N,0); //平掉所有多頭持倉
      }
     }


    IF(F_Sig()==BK && F_SigValid()==1) //如果取出的信號(hào)為BK 且信號(hào)不是消失狀態(tài)
     {
      
      IF(F_BuyPosition()<=KNALL && F_SellPosition()==0)//判斷是不是部分成交
      {
       MessageOut("信號(hào)BK生效,開倉");
       BKID=T_AddBuyOpiTo(F_DealCode(), Offers(F_DealCode(),"bid1")+MinPrice(F_DealCode())*N,KNALL); //補(bǔ)多倉
      }
     }

    IF(F_Sig()==SK && F_SigValid()==1) //如果取出的信號(hào)為SK 且信號(hào)不是消失狀態(tài)
     {
      
      IF(F_SellPosition()<=KNALL && F_BuyPosition()==0) //如果買倉為0,不存在止贏止損問題,直接開倉
      {
       SKID=T_AddSellOpiTo(F_DealCode(), Offers(F_DealCode(),"ask1")-MinPrice(F_DealCode())*N,KNALL); //補(bǔ)空倉
      }  
     }
    }


     

 

有思路,想編寫各種指標(biāo)公式,程序化交易模型,選股公式,預(yù)警公式的朋友

可聯(lián)系技術(shù)人員 QQ: 262069696  點(diǎn)擊在線交流進(jìn)行 有償 編寫!不貴!點(diǎn)擊查看價(jià)格!

 


【字體: 】【打印文章】【查看評(píng)論

相關(guān)文章

    沒有相關(guān)內(nèi)容
  主站蜘蛛池模板: 国产精品98视频全部国产 | 在线免费午夜视频 | 欧美成人怡红院在线观看 | 无码专区aaaaaa免费视频 | 狠狠色噜噜狠狠色综合久 | a人片在线观看 | 成人在线免费网站 | 亚洲欧美日本在线观看 | 无码专区aaaaaa免费视频 | 午夜资源网 | 亚洲欧美日韩另类在线一 | 欧美日韩精选 | 亚洲日本在线观看网址 | 亚洲第一页在线视频 | 国产日韩亚洲不卡高清在线观看 | 日韩中文字幕视频在线观看 | 日本一道在线观看 | 成年男人午夜片免费观看 | 欧美一级视频在线观看欧美 | 亚洲超大尺度激情啪啪人体 | 一级特黄女人生活片 | 欧美成a人片在线观看 | 天天干天天操天天干 | 在线片视频网站 | 久久国产成人精品国产成人亚洲 | 网址你懂的在线观看 | 欧美日日射 | 综合免费视频 | 色先锋资源网 | 狠狠综合久久综合88亚洲日本 | www日韩精品| 色秀影院 | 一级aa 毛片高清免费看 | 韩国黄色影院 | 狠狠骑| 在线欧美日韩国产 | 欧美一区二区三区性 | 久久国产亚洲观看 | 免费一看一级欧美 | 狠狠色噜噜狠狠狠狠狠色综合久久 | 91成人午夜精品福利院在线观看 |