下單組件 開多,自動減倉后,不停的循環平倉0手,哪里有問題呢 [文華財經]
- 咨詢內容:
//1、當策略發BK信號,買多3手;如果實時漲3點,止盈平多單2手;如果實時跌5點,全部止損平倉。
//2、當策略發出SP信號,全部平倉。
//3、當策略發SK信號,買空3手;如果實時跌3點,止盈平空單2手;如果實時漲5點,全部止損平倉。
//4、當策略發出BP信號,全部平倉。
//5、如果委托20秒不成交,全部撤單重新委托。
//當信號為BPK或SPK時可能不會被執行VAR LastWithDrawFinsh;
VAR B,S,F;
VAR K,Y,N;VOID MAIN()//主函數
{ K=50;//止損參數(*0.2)
Y=15;//止盈參數(*0.2)
N=5;//開倉手數LastWithDrawFinsh=ReadGlobal("LASTWITHDRAW");
IF(T_IsNoOrder()!=1 ) //有掛單的情況
{
IF(CurrentTime()-LastOrderTime()>10 && LastWithDrawFinsh==1)//如果10秒有委托未成交,全撤,下次進入會重新下委托
{
T_DeleteOrderAll();//撤掉所有未成交委托。
LastWithDrawFinsh=0;
}
WriteGlobal("LASTWITHDRAW", LastWithDrawFinsh);
RETURN;
}
LastWithDrawFinsh=1;
F=F_FreshSig(); //取一個新信號
IF (T_BuyPosition(F_DealCode())>0)//如果多頭持倉大于0
{
IF(F==0) //如果沒有信號
{
B=ReadGlobal("BKPRICE");//讀取注冊表中上一次記錄的開多倉價格。
IF(Price(F_DealCode())>=T_BuyAvgPrice(F_DealCode())+Y*MinPrice(F_DealCode()) )//如果盈利3個點()
{
T_ReduceBuyOpiTo(F_DealCode(),Price(F_DealCode()),3);//減倉至3手
}
IF(Price(F_DealCode())<=B-K*MinPrice(F_DealCode()))//如果虧5點
{
T_Deal(F_DealCode(),1,1,F_BuyPosition(),0);//市價全平多
}
}
ELSE IF(F==1) //如果有信號
{
IF(F_Sig()==SP&& F_SigValid()==1)//當前信號為SP
{
T_Deal(F_DealCode(),1,1,F_BuyPosition(),0); //全平
}
}
RETURN;
}IF (T_SellPosition(F_DealCode())>0) //如果空頭持倉大于0
{
IF(F==0)
{
S=ReadGlobal("SKPRICE");//讀取注冊表中上一次記錄的開空倉價格。
IF(Price(F_DealCode())<=T_SellAvgPrice(F_DealCode())-Y*MinPrice(F_DealCode()) )
{
T_ReduceSellOpiTo(F_DealCode(),Price(F_DealCode()),3);
}
IF(Price(F_DealCode())>=S+K*MinPrice(F_DealCode()))
{
T_Deal(F_DealCode(),0,1,F_SellPosition(),0);
}
}
ELSE IF(F==1)
{
IF(F_Sig()==BP&& F_SigValid()==1)//當前信號為BP信號。
{
T_Deal(F_DealCode(),0,1,F_SellPosition(),0);
}
}
RETURN;
}
IF (T_BuyPosition(F_DealCode())==0 && T_SellPosition(F_DealCode())==0)//如果空倉
{
IF(F==1)
{
IF(F_Sig()==BK&& F_SigValid()==1)//當前信號為開多倉信號。
{
T_Deal(F_DealCode(),0,0,N,Price(F_DealCode())+MinPrice(F_DealCode()));//開多N手,價格+1
B=F_SigPrice();
WriteGlobal("BKPRICE",B);
}IF(F_Sig()==SK&& F_SigValid()==1)//當前信號為開空倉信號。
{
T_Deal(F_DealCode(),1,0,N,Price(F_DealCode())-MinPrice(F_DealCode()));
S=F_SigPrice();
WriteGlobal("SKPRICE",S);
}
}
}
} - 文華技術人員:
T_ReduceBuyOpiTo(F_DealCode(),Price(F_DealCode()),3);//減倉至3手
會不會是上面這句有問題,因為自動減倉至3手后,程序就不停的發出減倉0手的指令。
- 文華客服:
因為您的手數已經是3手了,沒有用別的條件限制,所以軟件在運行REDUCE時會發出委托0手的指令
- 網友回復:
在這個組件里,
"LASTWITHDRAW"是一個什么參數?
"BKPRICE"是注冊表里的數值嗎?在函數表里怎么沒有這樣的參數?還有哪些類似這種類型的參數呢?
- 網友回復: 工作時間咨詢相關同事后回復您
有思路,想編寫各種指標公式,程序化交易模型,選股公式,預警公式的朋友
可聯系技術人員 QQ: 262069696 進行 有償 編寫!(不貴!點擊查看價格!)
相關文章
-
沒有相關內容