來(lái)看看這個(gè)開(kāi)拓者程序?yàn)槭裁床婚_(kāi)倉(cāng)
作者:開(kāi)拓者 TB 來(lái)源:cxh99.com 發(fā)布時(shí)間:2013年04月19日
|
- 咨詢內(nèi)容: //價(jià)格上穿20均線開(kāi)多,下穿開(kāi)空
//
//30%倉(cāng)位上限
//
//------------------------------------------------------------------------
Params
Numeric Length(20); // 平均波動(dòng)周期 ATR Length
Vars
NumericSeries AvgValue;
Numeric TotalEquity; // 按最新收盤(pán)價(jià)計(jì)算出的總資產(chǎn)
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; //如果未開(kāi)盤(pán),則直接返回
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) //持倉(cāng)狀態(tài)賦初值
{
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) //無(wú)持倉(cāng)上穿開(kāi)多
{
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) //無(wú)持倉(cāng)下穿開(kāi)空
{
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) //空單平倉(cāng)反手
{
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) //多單平倉(cāng)反手
{
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技術(shù)人員: 具體代碼沒(méi)有細(xì)看,這里先提醒樓主Q_Last 只能用于實(shí)時(shí)行情交易,不能用于歷史測(cè)試。
- TB客服: 就是因?yàn)橐唧w到判斷每一跳的行情才這樣寫(xiě)的,求指導(dǎo),看看問(wèn)題出在哪里了
- 網(wǎng)友回復(fù): 在明確一下,我的意思是實(shí)盤(pán)中不下單,不是歷史測(cè)試
- 網(wǎng)友回復(fù): 好的,明白了。代碼需要仔細(xì)研究,請(qǐng)耐心等候回復(fù)……