利用數據庫控制重復開倉
作者:開拓者 TB 來源:cxh99.com 發布時間:2016年08月24日
- 咨詢內容:
我寫了一個利用數據庫來控制重復發單的簡單例子,但是在測試中發現經常重復發單,重復發單的時候都是在兩秒內發兩個。請小米幫我看一下是哪里的問題吧!謝謝!
- TB技術人員:
Params
Numeric L1(3);
Numeric L2(6);
Numeric Stoploss(2);
Vars
NumericSeries shortline;
NumericSeries longline;
Numeric protectprice;
Bool SonL;
Bool SunderL;
String orderstate;
Begin
If(!CallAuctionFilter()) Return;
shortline=XAverage(Close,L1);
longline=XAverage(Close,L2);
PlotNumeric("短期均線",shortline);
PlotNumeric("長期均線",longline);
SonL=shortline[1]>longline[1];
SunderL=shortline[1]<longline[1];
If(BarStatus==2)
{
orderstate=GetTBProfileString2File("C:\\test1.log","開倉控制","發單狀態");
If(Value(orderstate)==0 Or orderstate==InvalidString)
{
If(SonL)
{
A_SendOrder(Enum_Buy,Enum_Entry,1,Q_AskPrice);
SetTBProfileString2File("C:\\test1.log","開倉控制","發單狀態",Text(1));
}
If(SunderL)
{
A_SendOrder(Enum_Sell,Enum_Entry,1,Q_BidPrice);
SetTBProfileString2File("C:\\test1.log","開倉控制","發單狀態",Text(-1));
}
}
If(Value(orderstate)==1)
{
protectprice=A_BuyAvgPrice-Stoploss;
If(Q_Last<protectprice)
{
A_SendOrder(Enum_Sell,Enum_Exit,1,Q_BidPrice);
SetTBProfileString2File("C:\\test1.log","開倉控制","發單狀態",Text(0));
}
}
If(Value(orderstate)==-1)
{
protectprice=A_SellAvgPrice+Stoploss;
If(Q_Last>protectprice)
{
A_SendOrder(Enum_Buy,Enum_Exit,1,Q_AskPrice);
SetTBProfileString2File("C:\\test1.log","開倉控制","發單狀態",Text(0));
}
}
}
End
- TB客服:
就是短期均線在長期均線上就開多一手,短期均線在長期均線下就開空一手。開倉后反向波動兩點就平倉。但是測試中經常出現重復開倉、鎖倉的問題。
- 網友回復:
zhoucx 發表于 2016-5-12 13:52
Params
Numeric L1(3);
Numeric L2(6);
將委托記錄也發過來看一下
- 網友回復:
這是下午的記錄 |