VAR_TICKDATA data;
VAR N,N1,BPRICE,Lost,Win,CurTime;
GLOBAL_VAR High,BKID,New,Type,Typp,CONQC;
VAR CodeName;
VOID MAIN()
{
CodeName = "ni1809";
N = 2; // 下单手数
N1 = 2; //当合约价格上涨2个最小变动价位
Lost = 3; //止损3个最小变动价位
Win = 10; //止盈10个最小变动价位
New = Price(CodeName, "New"); //获取当前合约最新价
BPRICE=T_BuyAvgPrice(CodeName);//取得持仓栏中该合约多头持仓均价
data = Def_TickData(CodeName,1,4); // 保存最近四笔的tick数据
CurTime = CurrentTime(); // 获取当前时间
// 收盘前30秒清仓
CONQC = (Hour( CurTime ) == 14 && Minute( CurTime ) == 59) || ( Hour( CurTime ) == 10 && Minute( CurTime ) == 14 ) || ( Hour( CurTime ) == 11 && Minute( CurTime ) == 29 ) && Second( CurTime ) > 30 ;
IF( Typp == 0&&(CONQC == 1))
{
MessageOut("收盘前30秒清仓");
T_Deal(CodeName,1,1,T_BuyRemainPosition( CodeName ),Offers(CodeName,"bid1"));
Type = 0;
Typp = 1;
}
IF( data.State == 1 ) // 数据保存完成
{
//连续3次当笔TICK的买一价都大于上一笔TICK的买一价,并且最新一笔的成交量大于上一笔TICK的成交量,对价做多
IF( Type == 0 && data[0].Bid1 < data[1].Bid1 && data[1].Bid1 < data[2].Bid1 && data[2].Bid1 < data[3].Bid1 && CONQC != 1)
{
IF( data[2].TickVolum - data[1].TickVolum < data[3].TickVolum - data[2].TickVolum )
{
MessageOut("连续3次当笔TICK的买一价都大于上一笔TICK的买一价");
BKID = T_Deal(CodeName,0,0,N,Offers(CodeName,"ask1"));
Type = 1;
Typp = 0;
}
}
//当合约价格上涨2个最小变动价位,加仓1手
IF(Type == 1 && T_OrderState(BKID) == 1 && CONQC != 1 )
{
MessageOut("当合约价格上涨2个最小变动价位,加仓1手");
IF( New - T_OrderMatchAvPrice(BKID) > N1 * MinPrice(CodeName) )
{
BKID = T_Deal(CodeName,0,0,1,Offers(CodeName,"ask1"));
Type = 2;
Typp = 0;
}
}
IF( Type == 2 && T_OrderState(BKID) == 1 )
{
Type = 1;
}
PingCang();
SPDeal();
High = Price(CodeName, "High");
}
}
//止盈10个最小变动价位
//止损3个最小变动价位
VOID SPDeal()
{
IF( BPRICE - New >= Lost*MinPrice(CodeName) || New - BPRICE >= Win*MinPrice(CodeName))
{
IF( Type != 0 && T_BuyRemainPosition( CodeName ) > 0 )
{
MessageOut("止盈止损");
T_Deal(CodeName,1,1,T_BuyRemainPosition( CodeName ),Offers(CodeName,"bid1"));
Type = 0;
}
}
}
//当持仓手数超过了5手,并且最新价格超过了今天的最高价,对价平仓
VOID PingCang()
{
IF( Type != 0 && T_BuyRemainPosition( CodeName ) > 5 && New > High ) // 该组件多头持仓超过5手
{
MessageOut("当持仓手数超过了5手,并且最新价格超过了今天的最高价,对价平仓");
T_Deal(CodeName,1,1,T_BuyRemainPosition( CodeName ),Offers(CodeName,"bid1"));
Type = 0;
}
}
这是系统自带的模型,我想问为什么这个模型只建立仓位,而止损条件达成后,也就是说亏损3个点后,并不执行止损呢?而且每次建仓并不按照模型设定的两手,加仓一手,而是5手5手的加仓。请老师麻烦指导一下,谢谢!