來看看這個開拓者程序為什么不開倉 [開拓者 TB]
- 咨詢內容: //價格上穿20均線開多,下穿開空
//
//30%倉位上限
//
//------------------------------------------------------------------------
Params
Numeric Length(20); // 平均波動周期 ATR Length
Vars
NumericSeries AvgValue;
Numeric TotalEquity; // 按最新收盤價計算出的總資產
String BuyPositionStr;
String SellPositionStr;
Numeric BuyPosition;
Numeric SellPosition;
Numeric Units;
String BuyUnitsStr; // 交易單位
String SellUnitsStr;
Numeric BuyUnits; // 交易單位
Numeric SellUnits;
Begin
//If ( Q_Last == 0 || ( Date != Date[1] && High == Low ) ) Return; //如果未開盤,則直接返回
AvgValue = Average(Close,Length);
TotalEquity = Portfolio_CurrentCapital() + Portfolio_UsedMargin();
Units=IntPart((TotalEquity*0.3) /(Close* ContractUnit()*MarginRatio()));
If(GetTBProfileString2File("D:\\TBlog.log",Symbol(),"BuyPosition")==InvalidString) //持倉狀態賦初值
{
BuyPosition=0;
}
If(GetTBProfileString2File("D:\\TBlog.log",Symbol(),"SellPosition")==InvalidString)
{
SellPosition=0;
}
If(GetTBProfileString2File("D:\\TBlog.log",Symbol(),"BuyPosition")!=InvalidString)
{
BuyPositionStr=GetTBProfileString2File("D:\\TBlog.log",Symbol(),"BuyPosition");
BuyPosition=Value(BuyPositionStr);
}
If(GetTBProfileString2File("D:\\TBlog.log",Symbol(),"SellPosition")!=InvalidString)
{
SellPositionStr=GetTBProfileString2File("D:\\TBlog.log",Symbol(),"SellPosition");
SellPosition=Value(SellPositionStr);
}
If(GetTBProfileString2File("D:\\TBlog.log",Symbol(),"BuyUnits")!=InvalidString)
{
BuyUnitsStr=GetTBProfileString2File("D:\\TBlog.log",Symbol(),"BuyUnits");
BuyUnits=Value(BuyUnitsStr);
}
If(GetTBProfileString2File("D:\\TBlog.log",Symbol(),"SellUnits")!=InvalidString)
{
SellUnitsStr=GetTBProfileString2File("D:\\TBlog.log",Symbol(),"SellUnits");
SellUnits=Value(SellUnitsStr);
}
If((Q_Last > AvgValue) &&(Q_High<AvgValue)&&(Units >= 1)&&BuyPosition==0&&SellPosition==0) //無持倉上穿開多
{
A_SendOrder(Enum_Buy,Enum_Entry,Units,Q_UpperLimit);
SetTBProfileString2File("D:\\TBlog.log",Symbol(),"BuyPosition",Text(1));
SetTBProfileString2File("D:\\TBlog.log",Symbol(),"BuyUnits",Text(Units));
}
If((Q_Last < AvgValue) &&(Q_Low>AvgValue)&&(Units >= 1)&&SellPosition==0&&BuyPosition==0) //無持倉下穿開空
{
A_SendOrder(Enum_Sell,Enum_Entry,Units,Q_LowerLimit);
SetTBProfileString2File("D:\\TBlog.log",Symbol(),"SellPosition",Text(-1));
SetTBProfileString2File("D:\\TBlog.log",Symbol(),"SellUnits",Text(Units));
}
If((Q_Last > AvgValue) && (Units >= 1)&&BuyPosition==0&&SellPosition==-1) //空單平倉反手
{
A_SendOrder(Enum_Buy,Enum_Exit,SellUnits,Q_UpperLimit);
A_SendOrder(Enum_Buy,Enum_Entry,Units,Q_UpperLimit);
SetTBProfileString2File("D:\\TBlog.log",Symbol(),"SellPosition",Text(0));
SetTBProfileString2File("D:\\TBlog.log",Symbol(),"BuyPosition",Text(1));
SetTBProfileString2File("D:\\TBlog.log",Symbol(),"SellUnits",Text(0));
SetTBProfileString2File("D:\\TBlog.log",Symbol(),"BuyUnits",Text(Units));
}
If((Q_Last < AvgValue) && (Units >= 1)&&SellPosition==0&&BuyPosition==1) //多單平倉反手
{
A_SendOrder(Enum_Sell,Enum_Exit,BuyUnits,Q_LowerLimit);
A_SendOrder(Enum_Sell,Enum_Entry,Units,Q_LowerLimit);
SetTBProfileString2File("D:\\TBlog.log",Symbol(),"BuyPosition",Text(0));
SetTBProfileString2File("D:\\TBlog.log",Symbol(),"SellPosition",Text(-1));
SetTBProfileString2File("D:\\TBlog.log",Symbol(),"BuyUnits",Text(0));
SetTBProfileString2File("D:\\TBlog.log",Symbol(),"SellUnits",Text(Units));
}
End - TB技術人員: 具體代碼沒有細看,這里先提醒樓主Q_Last 只能用于實時行情交易,不能用于歷史測試。
- TB客服: 就是因為要具體到判斷每一跳的行情才這樣寫的,求指導,看看問題出在哪里了
- 網友回復: 在明確一下,我的意思是實盤中不下單,不是歷史測試
- 網友回復: 好的,明白了。代碼需要仔細研究,請耐心等候回復……
有思路,想編寫各種指標公式,程序化交易模型,選股公式,預警公式的朋友
可聯系技術人員 QQ: 262069696 進行 有償 編寫!(不貴!點擊查看價格!)
相關文章
-
沒有相關內容