- 精华
- 0
- 在线时间
- 197 小时
- UID
- 10701
- 积分
- 170
- 帖子
- 44
- 阅读权限
- 40
- 注册时间
- 2010-5-22
- 最后登录
- 2019-3-30
- 精华
- 0
- UID
- 10701
- 积分
- 170
- 帖子
- 44
- 主题
- 18
- 阅读权限
- 40
- 注册时间
- 2010-5-22
- 最后登录
- 2019-3-30
|
//价格上穿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 |
|