投资者咨询:算法,求改正 (文华财经WH8赢智V8.2)
来源:文华财经 日期:2018-4-3 21:49
您好,这个模型模拟运行时出现图片的这个情况,不停的出求止盈数量,改正!谢谢
VAR_TICKDATA data;
VAR N,CurTime,pcyk,cjzt;
VAR dtcc,ktcc,wcjdk,wcjkk,wcjdp,wcjkp,wtcd;
VAR ma7,ma7_3,ma7_1,hsjd1,hsjd6,hsjd1o,hsjd6o,hsjd61;
VAR bmtj,bstj,smtj,sstj;
GLOBAL_VAR New,CONQC,dtkc,dtcd,dtzy,dtzs,ktkc,ktcd,ktzy,ktzs,pmqc,zypd,zspd,dtcj,ktcj;
GLOBAL_VAR BKID,BPID,BZID,SKID,SPID,SZID,BKPRICE,SKPRICE;
GLOBAL_VAR dtimer,ktimer,dzsl,kzsl,zysl,dzpd,kzpd;
VAR CodeName;
VOID MAIN()
{
CodeName = "rb1805"; //交易品种
New = Price(CodeName, "New"); //交易品种的当前价格
CurTime = CurrentServerTime(CodeName); //交易品种的交易所时间
CONQC = (Hour( CurTime ) == 14 && Minute( CurTime ) == 59) || ( Hour( CurTime ) == 11 && Minute( CurTime ) == 29 )||( Hour( CurTime ) == 22 && Minute( CurTime ) == 59 ) && Second( CurTime ) >= 30 ; //交易所停盘时间
dtcc = AL_BuyPosition(CodeName);
ktcc = AL_SellPosition(CodeName);
wcjdk = T_OpenOrder(CodeName,1);
wcjdp = T_OpenOrder(CodeName,2);
wcjkk = T_OpenOrder(CodeName,3);
wcjdp = T_OpenOrder(CodeName,4);
pcyk = AL_OffSetProfit();
N = 1;
/*N = CEILING(0.1*T_Equity(0)/(New * Unit(CodeName) * T_MarginRatio(CodeName,0))); //单笔成交量=总资金量可开仓10%*/
//调用技术指标参数:
ma7 = #Get("螺纹1805_5秒_ZIJIMAZHOU(2)","MA7",0);
ma7_3= #Get("螺纹1805_5秒_ZIJIMAZHOU(2)","MA7D",0);
ma7_1= #Get("螺纹1805_5秒_ZIJIMAZHOU(2)","MA7K",0);
hsjd1 = #Get("螺纹1805_5秒_ZIJIMAZHOU(2)","DIFF",0);
hsjd6 = #Get("螺纹1805_5秒_ZIJIMAZHOU(2)","DEA",0);
hsjd1o = #Get("螺纹1805_5秒_ZIJIMAZHOU(2)","DIFFD",0);
hsjd6o = #Get("螺纹1805_5秒_ZIJIMAZHOU(2)","DIFFK",0);
hsjd61 = #Get("螺纹1805_5秒_ZIJIMAZHOU(2)","ZHONGHE",0);
//多头开仓:
bmtj = (ma7>New) &&ma7_3; //5分钟买入条件
bstj = hsjd1<hsjd6 && hsjd1o&&hsjd61; //15秒买入条件
IF( bmtj == 1 && bstj == 1&& dtcc == 0 && wcjdk == 0 && CONQC != 1 )
{
IF(dtkc == 0)
{
MessageOut("多头开仓条件满足");
BKID = T_Deal(CodeName,0,0,N,Offers(CodeName,"bid1"));
dtkc = 1;
dtcd = 1;
dtcj = 1;
pmqc = 1;
}
}
//*多头开仓委托超时撤单:
IF( Timer(BKID)>=45 && (wcjdk != 0))
{
IF(dtcd == 1)
{
MessageOut("多头开仓委托超时");
T_DeleteOrderByCode( CodeName, 1);
dtcd = 0;
dtkc = 0;
}
}
//多头开仓成交判断
IF(dtcj==1 && dtcc!=0)
{
IF(T_OrderState(BKID)==1||T_OrderState(BKID)==3)
{
MessageOut("多头开仓成交状态="+T_OrderState(BKID));
BKPRICE = T_OrderMatchAvPrice(BKID);
MessageOut("多头开仓均价="+BKPRICE);
T_DeleteOrderByCode( CodeName, 1);
}
dtcj = 0;
dtzy = 1;
dzpd = 1;
}
//多头止盈:
IF( wcjdk==0 && AL_BuyRemainPosition(CodeName) != 0)
{
IF(dtzy ==1 )
{
MessageOut("多头开仓成交,委托平仓");
BPID = T_Deal(CodeName,1,2, AL_BuyRemainPosition(CodeName), BKPRICE+2);
dtzy = 0;
}
dtkc = 0;
zypd = 1;
}
IF(zypd==1 && (T_OrderState(BPID) == 1||T_OrderState(BPID) == 3))
{
zysl = zysl + T_OrderMatchVol( BPID );
MessageOut("止盈数量 = " + zysl);
MessageOut("----------平仓盈亏="+pcyk+"----------");
zypd = 0;
}
//多头止损:
IF(dzpd == 1 && (BKPRICE - New)>=5 && dtcc !=0)
{
MessageOut("多头止损");
wtcd = T_DeleteOrderByCode(CodeName,2);
dzpd = 0;
dtzs = 1;
}
IF(dtzs==1 && T_BuyRemainPosition(CodeName)>=dtcc && wtcd == 0)
{
BZID = T_Deal(CodeName,1,2,T_BuyRemainPosition(CodeName), Offers(CodeName,"bid1"));
dtzs = 0;
dtkc = 0;
zspd = 1;
}
IF (zspd==1 && T_OrderState( BZID )==1)
{
dzsl = dzsl+ T_OrderMatchVol( BZID );
MessageOut("多头止损数量 ="+ dzsl);
MessageOut("----------平仓盈亏="+pcyk+"----------");
zspd =0;
}
//空头开仓:
smtj = (ma7<New) &&ma7_1; //5分钟卖出条件
sstj = hsjd1<hsjd6 && hsjd6o&&hsjd61; //15秒卖出条件
IF( smtj == 1 && sstj == 1 && ktcc == 0 && wcjkk == 0 && CONQC != 1 )
{
IF(ktkc == 0)
{
MessageOut("空头开仓条件满足");
SKID = T_Deal(CodeName,1,0,N,Offers(CodeName,"ask1"));
ktkc = 1;
ktcd = 1;
ktcj = 1;
pmqc = 1;
}
}
//空头开仓委托超时撤单:
IF(ktcd==1 && Timer(SKID) >=45 && wcjkk != 0 )
{
MessageOut("空头开仓委托超时");
T_DeleteOrderByCode( CodeName, 3);
ktcd = 0;
ktkc = 0;
}
//空头开仓成交判断
IF(ktcj==1 && ktcc!=0)
{
IF(T_OrderState(SKID)==1||T_OrderState(SKID)==3)
{
MessageOut("空头开仓成交状态="+T_OrderState(SKID));
SKPRICE = T_OrderMatchAvPrice(SKID);
MessageOut("空头开仓均价="+SKPRICE);
T_DeleteOrderByCode( CodeName, 3);
}
ktcj = 0;
ktzy = 1;
kzpd = 1;
}
//空头止盈:
IF( ktzy == 1 && wcjkk == 0 && AL_SellRemainPosition(CodeName) != 0)
{
MessageOut("空头开仓成交,委托平仓");
SPID = T_Deal(CodeName,0,2, AL_SellRemainPosition(CodeName), SKPRICE - 2);
ktzy = 0;
ktkc = 0;
zypd =1;
}
IF(zypd == 1 && (T_OrderState( SPID ) == 1||T_OrderState(SPID) == 3))
{
zysl = zysl + T_OrderMatchVol( SPID );
MessageOut("止盈数量 = " + zysl);
MessageOut("----------平仓盈亏="+pcyk+"----------");
zypd =0;
}
//空头止损:
IF(kzpd == 1 && (New - SKPRICE)>=5 && ktcc !=0)
{
MessageOut("空头止损");
wtcd = T_DeleteOrderByCode(CodeName,4);
kzpd = 0;
ktzs = 1;
}
IF(ktzs==1 && T_SellRemainPosition(CodeName)>=ktcc && wtcd == 0)
{
SZID = T_Deal(CodeName,0,2,T_SellRemainPosition(CodeName), Offers(CodeName,"ask1"));
ktzs = 0;
ktkc = 0;
zspd = 1;
}
IF( zspd==1 && T_OrderState( SZID )==1)
{
kzsl = kzsl+T_OrderMatchVol( SZID );
MessageOut("空头止损数量 ="+ kzsl);
MessageOut("----------平仓盈亏="+pcyk+"----------");
zspd =0;
}
//盘末清仓:
IF(pmqc == 1 && CONQC == 1)
{
MessageOut("30秒后停盘");
IF(dtcc!= 0 ||ktcc!=0)
{
MessageOut("盘末清仓");
wtcd = T_DeleteOrderByCode(CodeName,0);
}
pmqc =0;
ktkc = 0;
IF(dtcc!=0 && T_BuyRemainPosition(CodeName)>=dtcc && wtcd ==0 )
{
T_Deal(CodeName,1,2,T_BuyRemainPosition(CodeName), Offers(CodeName,"bid1"));
}
IF(ktcc!=0 && T_SellRemainPosition(CodeName)>=ktcc && wtcd ==0)
{
T_Deal(CodeName,0,2,T_SellRemainPosition(CodeName),Offers(CodeName,"ask1"));
}
}
}
投资者咨询:算法,求改正 (文华财经WH8赢智V8.2)
来源:文华财经 日期:2018-4-3 21:49
好滴,谢谢
投资者咨询:算法,求改正 (文华财经WH8赢智V8.2)
来源:文华财经 日期:2018-4-3 21:49
投资者咨询:算法,求改正 (文华财经WH8赢智V8.2)
来源:文华财经 日期:2018-4-3 21:49
还有个问题,止损时平仓盈亏是减钱,止盈时平仓盈亏也是减钱
技术人员回复
日期:2018-4-4 13:04
投资者咨询:算法,求改正 (文华财经WH8赢智V8.2)
来源:文华财经 日期:2018-4-3 21:49
技术人员回复
日期:2018-4-4 15:26
投资者咨询:算法,求改正 (文华财经WH8赢智V8.2)
来源:文华财经 日期:2018-4-3 21:49
好,谢谢
投资者咨询:算法,求改正 (文华财经WH8赢智V8.2)
来源:文华财经 日期:2018-4-3 21:49
怎么样了?
技术人员回复
日期:2018-5-14 22:02



