下單組件 這兒有語法錯誤嗎? [文華財經]
- 咨詢內容:
我這個模組,能運行,但一會兒就會死,查看模組運行,顯示116行有語法錯誤,我就是檢查不出來,麻煩老師看看
ELSE IF(F_Sig()==SPK) //如果取出的信號為SPK
{
IF(T_IsNoOrder()==0&&LastState==0)
{
IF(CurrentTime()-LastOrderTime()>s&&F_SigPrice()-Offers(F_DealCode(),"bid1")<=MinPrice(F_DealCode())*M);
T_DeleteOrderByCode(F_DealCode(),0);
SPID=T_Deal(F_DealCode(),1,1,F_BuyPosition(),Offers(F_DealCode(),"bid1"));
SKID=T_Deal(F_DealCode(),1,0,KN,Offers(F_DealCode(),"bid1"));
}
ELSE IF(T_IsNoOrder()==1&&T_OrderState(SKID)==1&&T_OrderState(SPID)==1)//賣開委托全部成交
{
MessageOut("成交已完成!");
LastState=1;
}
}提示的是這兒 if 附近有語法錯誤,麻煩幫我看看,s是參數,10 秒
IF(CurrentTime()-LastOrderTime()>s&&F_SigPrice()-Offers(F_DealCode(),"bid1")<=MinPrice(F_DealCode())*M);
- 文華技術人員:
麻煩您告知您的完整組件,可以發送到research@wenhua.com.cn ,并且在郵件中附上該帖子鏈接,謝謝
- 文華客服:
//該組件僅僅用來示范如何編寫算法交易組件
//用戶需要根據自己交易經驗,編寫組件再實際應用!!!//主要策略:設定超價參數,開平倉時,自動根據超價參數調整委托價格,提高成交價幾率。
VAR N;//定義超價參數。
VAR KN;//定義開倉手數。
//VAR PN;//定義平倉手數。
VAR BKID;//定義BK委托ID
VAR SKID;//定義SK委托ID
VAR BPID;//定義BP委托ID
VAR SPID;//定義SP委托ID
VAR LastState;
VAR valume1;
VAR valume2;
VAR s;
VAR M;
VOID MAIN()//主函數。
{
KN=1;
M=5;N=0.4;
s=10;
LastState=ReadGlobal("LASTSTATE");
valume1=(Offers(F_DealCode(),"askvol1")+Offers(F_DealCode(),"bidvol1"))>0
&&Offers(F_DealCode(),"askvol1")/(Offers(F_DealCode(),"askvol1")+Offers(F_DealCode(),"bidvol1"))<N;
valume2=(Offers(F_DealCode(),"askvol1")+Offers(F_DealCode(),"bidvol1"))>0
&&Offers(F_DealCode(),"bidvol1")/(Offers(F_DealCode(),"askvol1")+Offers(F_DealCode(),"bidvol1"))<N;
IF(F_High(0)==T_GetRiseLimit(F_DealCode())&&F_BuyPosition()>0)
{
T_Deal(F_DealCode(),1,1,F_BuyPosition(),Offers(F_DealCode(),"bid1"));
}
ELSE IF(F_Low(0)==T_GetFallLimit(F_DealCode())&&F_SellPosition()>0)
{
T_Deal(F_DealCode(),0,1,F_SellPosition(),Offers(F_DealCode(),"ask1"));
}IF(F_FreshSig()==1&&F_SigValid()==1)//如果是未處理過的新信號
{
IF(F_Sig()==BPK) //如果取出的信號為BpK
{
IF(valume1==1)
{
BPID=T_Deal(F_DealCode(),0,1,F_SellPosition(),Offers(F_DealCode(),"bid1"));
BKID=T_Deal(F_DealCode(),0,0,KN,Offers(F_DealCode(),"bid1"));//買開指定手數。
}
ELSE
{
BPID=T_Deal(F_DealCode(),0,1,F_SellPosition(),Offers(F_DealCode(),"ask1"));
BKID=T_Deal(F_DealCode(),0,0,KN,Offers(F_DealCode(),"ask1"));//買開指定手數。
}
}ELSE IF(F_Sig()==SPK) //如果取出的信號為SK
{
IF(valume2==1)
{
SPID=T_Deal(F_DealCode(),1,1,F_BuyPosition(),Offers(F_DealCode(),"ask1"));
SKID=T_Deal(F_DealCode(),1,0,KN,Offers(F_DealCode(),"ask1"));//賣開指定手數。
}
ELSE
{
SPID=T_Deal(F_DealCode(),1,1,F_BuyPosition(),Offers(F_DealCode(),"bid1"));
SKID=T_Deal(F_DealCode(),1,0,KN,Offers(F_DealCode(),"bid1"));//賣開指定手數。
}
}
ELSE IF(F_Sig()==BP&&F_SellPosition()>0) //如果取出的信號為BP
{
IF(valume1==1)
{
BPID=T_Deal(F_DealCode(),0,1,F_SellPosition(),Offers(F_DealCode(),"bid1"));//買平指定手數。
//此句中T_Deal的第3個參數為2,表示平今,只適用于上交所合約,如果綁定非上交所合約時,請將2改為1即可。下同理。
}
ELSE
{
BPID=T_Deal(F_DealCode(),0,1,F_SellPosition(),Offers(F_DealCode(),"ask1"));//買平指定手數。
//此句中T_Deal的第3個參數為2,表示平今,只適用于上交所合約,如果綁定非上交所合約時,請將2改為1即可。下同理。
}
}
ELSE IF(F_Sig()==SP&&F_BuyPosition()>0) //如果取出的信號為SP
{
IF(valume2==1)
{
SPID=T_Deal(F_DealCode(),1,1,F_BuyPosition(),Offers(F_DealCode(),"ask1"));//買平指定手數。
}
ELSE
{
SPID=T_Deal(F_DealCode(),1,1,F_BuyPosition(),Offers(F_DealCode(),"ask1"));//買平指定手數。
}
}
}
ELSE IF(F_FreshSig()==0&&F_SigValid()==1)//如果是處理過的信號
{
LastState=0;
IF(F_Sig()==BPK&&LastState==0) //如果取出的信號為BPK
{
IF(T_IsNoOrder()==0)
{
IF(CurrentTime()-LastOrderTime()>s&&Offers(F_DealCode(),"ask1")-F_SigPrice()<=MinPrice(F_DealCode())*M);
T_DeleteOrderByCode(F_DealCode(),0);
BPID=T_Deal(F_DealCode(),0,1,F_SellPosition(),Offers(F_DealCode(),"ask1"));
BKID=T_Deal(F_DealCode(),0,0,KN,Offers(F_DealCode(),"ask1"));
}
ELSE IF(T_IsNoOrder()==1&&T_OrderState(BKID)==1&&T_OrderState(BPID)==1)//買開委托全部成交
{
MessageOut("成交已完成!");
LastState=1;
}
}
ELSE IF(F_Sig()==SPK) //如果取出的信號為SPK
{
IF(T_IsNoOrder()==0&&LastState==0)
{
IF(CurrentTime()-LastOrderTime()>s&&F_SigPrice()-Offers(F_DealCode(),"bid1")<=MinPrice(F_DealCode())*M);
T_DeleteOrderByCode(F_DealCode(),0);
SPID=T_Deal(F_DealCode(),1,1,F_BuyPosition(),Offers(F_DealCode(),"bid1"));
SKID=T_Deal(F_DealCode(),1,0,KN,Offers(F_DealCode(),"bid1"));
}
ELSE IF(T_IsNoOrder()==1&&T_OrderState(SKID)==1&&T_OrderState(SPID)==1)//賣開委托全部成交
{
MessageOut("成交已完成!");
LastState=1;
}
}
ELSE IF(F_Sig()==BP) //如果取出的信號為BP
{
IF(T_IsNoOrder()==0&&LastState==0)
{
IF(CurrentTime()-LastOrderTime()>s&&Offers(F_DealCode(),"ask1")-F_SigPrice()<=MinPrice(F_DealCode())*M);
T_DeleteOrderByCode(F_DealCode(),0);
BPID=T_Deal(F_DealCode(),0,1,F_SellPosition(),Offers(F_DealCode(),"ask1"));
}
ELSE IF(T_IsNoOrder()==1&&T_OrderState(BPID)==1)//買平委托全部成交
{
MessageOut("成交已完成!");
LastState=1;
}
}ELSE IF(F_Sig()==SP) //如果取出的信號為SP
{
IF(T_IsNoOrder()==0&&LastState==0)
{
IF(CurrentTime()-LastOrderTime()>s&&F_SigPrice()-Offers(F_DealCode(),"bid1")<=MinPrice(F_DealCode())*M);
T_DeleteOrderByCode(F_DealCode(),0);
SPID=T_Deal(F_DealCode(),1,1,F_BuyPosition(),Offers(F_DealCode(),"ask1"));
}
ELSE IF(T_IsNoOrder()==1&&T_OrderState(SPID)==1)//賣平委托全部成交
{
MessageOut("成交已完成!");
LastState=1;
}
}
}
WriteGlobal("LASTSTATE", LastState);
} - 網友回復:
我用的這個程序在測試
C>REF(H,1),BPK;
C<REF(L,1),SPK;
AUTOFILTER; - 網友回復: 您的下單組件源碼語法檢測室通過的,您具體有是什么問題嗎?請詳細說明
有思路,想編寫各種指標公式,程序化交易模型,選股公式,預警公式的朋友
可聯系技術人員 QQ: 262069696 進行 有償 編寫!(不貴!點擊查看價格!)
相關文章
-
沒有相關內容