以文本方式查看主题

-  金字塔客服中心 - 专业程序化交易软件提供商  (http://weistock.com/bbs/index.asp)
--  公式模型编写问题提交  (http://weistock.com/bbs/list.asp?boardid=4)
----  关于同一根K线发出多次买单指令的问题  (http://weistock.com/bbs/dispbbs.asp?boardid=4&id=76154)

--  作者:infocell
--  发布时间:2015/3/4 16:13:29
--  关于同一根K线发出多次买单指令的问题

下面这段代码,在同一价位上发出多个开仓指令,请帮忙看看是什么原因?

VARIABLE:Num_p0=(Buy_END-Buy_START)/Buy_STEP+1;
VARIABLE:Num_p1=(Buy_END1-Buy_START1)/Buy_STEP1+1;
VARIABLE:Num_p2=(Buy_END2-Buy_START2)/Buy_STEP2+1;
VARIABLE:SNum_p0=(Sell_END-Sell_START)/Sell_STEP+1;
VARIABLE:SNum_p1=(Sell_END1-Sell_START1)/Sell_STEP1+1;
VARIABLE:SNum_p2=(Sell_END2-Sell_START2)/Sell_STEP2+1;
VARIABLE:I_tmp=0,S_tmp=0,S_tmp1=0;
VARIABLE:Buy_point[Num_p0]=0,Buy_point1[Num_p1]=0,Buy_point2[Num_p2]=0;//?òμ?
VARIABLE:B_price[Num_p0]=0,B_price1[Num_p1]=0,B_price2[Num_p2]=0;//3é????

VARIABLE:B_flag[Num_p0]=0,B_flag1[Num_p1]=0,B_flag2[Num_p2]=0;//?òμ?±ê??
VARIABLE:S_point[SNum_p0]=0,S_point1[SNum_p1]=0,S_point2[SNum_p2]=0;//??μ?
VARIABLE:CB_flag[Num_p0]=0,CB_flag1[Num_p1]=0,CB_flag2[Num_p2]=0;//?ùóú?òμ?μ?ì??tμ¥±ê??
VARIABLE:S_flag[SNum_p0]=0,S_flag1[SNum_p1]=0,S_flag2[SNum_p2]=0;//??μ?±ê??
VARIABLE:B_NUM=0;//?òμ?×üá?μ?±ê??
VARIABLE:Add_flag=0,CAdd_flag=0;//212??°212?ì??tμ¥±ê??
VARIABLE:Is_debug=1,Is_log=1;

 

FOR I_tmp=1 TO Num_p0 DO BEGIN


 IF 开盘时间 AND OPEN>=Buy_point[I_tmp] AND B_flag[I_tmp]<=0 AND B_NUM<MAX_hold and ABS(holding)<MAX_hold  THEN BEGIN
 
  b_tmpp:=Buy_SS;
 //?aμ¥á?2??ü3?1y×?′óMAX_hold
 IF b_tmpp+ABS(holding)>MAX_hold THEN b_tmpp:=ABS(MAX_hold-ABS(holding));
 
   IF b_tmpp+B_NUM>MAX_hold THEN b_tmpp:=ABS(MAX_hold-B_NUM);//?òμ¥á?2??ü3?1y×?′ó?μ
 
   S_tmp:=HOLDING;
 
 //?a??
    IF b_tmpp>0 AND b_tmpp<ABS(MAX_hold) THEN BEGIN 
      //开仓:buyshort(1,b_tmpp,LIMITR,OPEN);//MARKET);//limitr,X?ü?úμíμ?);
      开空:buyshort(1,b_tmpp,MARKET);//LIMITR,OPEN);//MARKET);//limitr,X?ü?úμíμ?);
      B_NUM:=B_NUM+1;
     
  // END
 
     //IF HOLDING<>S_tmp THEN BEGIN
      B_price[I_tmp]:=ENTERPRICE;
      B_flag[I_tmp]:=1;
      //ê?3?μ÷ê?D??¢
    IF Is_debug=1 and ISLASTBAR THEN  MSGOUT(TRUE,\'DòáD????:\'&numtostr(BARPOS,0)&\',?a??êy:\'&numtostr(b_tmpp,0)&\',3é????:\'&numtostr(ENTERPRICE,0)&\',3?2?:\'&numtostr(HOLDING,0)&\',???ˉóˉ?÷:\'&numtostr(OPENPROFIT,0)&\',×ü?òμ¥êy:\'&numtostr(B_NUM,0)&\',×ê2ú:\'&numtostr(ASSET,0)&\',êμê±:\'&numtostr(ISLASTBAR,0));
    IF Is_log=1 THEN DEBUGFILE(\'C:\\myTEST.TXT\',\'DòáD????:\'&numtostr(BARPOS,0)&\',?a??êy:\'&numtostr(b_tmpp,0)&\',3é????:\'&numtostr(ENTERPRICE,0)&\',3?2?:\'&numtostr(HOLDING,0)&\',???ˉóˉ?÷:\'&numtostr(OPENPROFIT,0)&\',×ü?òμ¥êy:\'&numtostr(B_NUM,0)&\',×ê2ú:\'&numtostr(ASSET,0)&\',êμê±:\'&numtostr(ISLASTBAR,0),0);
 
     END
  
         END
END


--  作者:jinzhe
--  发布时间:2015/3/4 16:16:39
--  
好多乱码,你换IE浏览器发帖
--  作者:jinzhe
--  发布时间:2015/3/4 16:22:50
--  

同一根k线多次发单的最有可能原因是:

1.信号闪烁,这个是不正常的

2.多个开仓语句同时满足,这个是正常的,1个开仓语句在同一根k线上反复开仓才是不正常的

[此贴子已经被作者于2015/3/4 16:24:19编辑过]

--  作者:infocell
--  发布时间:2015/3/4 16:41:55
--  

就是在IE里面发的,好奇怪,有时候好的,有时候是乱码?

 

现在就是在同一价位同一根K线,只有一个条件满足情况下,一个开仓语句发出多个开仓指令。

 

我开完仓置标志位也置不上去


--  作者:infocell
--  发布时间:2015/3/4 16:42:32
--  

开仓信号就是这句:

 IF 开盘时间 AND OPEN>=Buy_point[I_tmp] AND B_flag[I_tmp]<=0 AND B_NUM<MAX_hold and ABS(holding)<MAX_hold  THEN BEGIN

 


--  作者:infocell
--  发布时间:2015/3/4 16:47:03
--  
2015/03/04 10:57:59  序列位置:208,开多数:1,成交价:9520,持仓:1,浮动盈亏:-3,总买单数:1,资产:999998
2015/03/04 10:57:59  序列位置:208,开多数:1,成交价:9520,持仓:2,浮动盈亏:-5,总买单数:2,资产:999995
2015/03/04 10:57:59  序列位置:208,平多数:1,成交价:9520,持仓:1,浮动盈亏:-8,总买单数:2,资产:999993
2015/03/04 10:57:59  序列位置:208,平多数:1,成交价:9520,持仓:0,浮动盈亏:0,总买单数:2,资产:999990
2015/03/04 10:57:59  序列位置:285,条件平多数:1,成交价:9520,持仓:0,浮动盈亏:0,总买单数:2,资产:999990
2015/03/04 10:57:59  序列位置:285,条件平多数:1,成交价:9520,持仓:0,浮动盈亏:0,总买单数:2,资产:999990
2015/03/04 10:57:59  序列位置:363,开多数:1,成交价:9485,持仓:1,浮动盈亏:23,总买单数:3,资产:1000013
2015/03/04 10:57:59  序列位置:363,开多数:1,成交价:9485,持仓:2,浮动盈亏:45,总买单数:4,资产:1000035
2015/03/04 10:57:59  序列位置:363,平多数:1,成交价:9485,持仓:1,浮动盈亏:18,总买单数:4,资产:1000008
2015/03/04 10:57:59  序列位置:363,平多数:1,成交价:9485,持仓:0,浮动盈亏:0,总买单数:4,资产:999980
2015/03/04 10:57:59  序列位置:370,开多数:1,成交价:9465,持仓:1,浮动盈亏:-28,总买单数:5,资产:999953
2015/03/04 10:57:59  序列位置:370,平多数:1,成交价:9465,持仓:0,浮动盈亏:0,总买单数:5,资产:999975
2015/03/04 10:57:59  序列位置:371,开多数:1,成交价:9465,持仓:1,浮动盈亏:-3,总买单数:6,资产:999973
2015/03/04 10:57:59  序列位置:371,平多数:1,成交价:9465,持仓:0,浮动盈亏:0,总买单数:6,资产:999970
2015/03/04 10:57:59  序列位置:373,开多数:1,成交价:9470,持仓:1,浮动盈亏:-3,总买单数:7,资产:999968
2015/03/04 10:57:59  序列位置:373,开多数:1,成交价:9470,持仓:2,浮动盈亏:-5,总买单数:8,资产:999965
2015/03/04 10:57:59  序列位置:373,平多数:1,成交价:9470,持仓:1,浮动盈亏:-8,总买单数:8,资产:999963
2015/03/04 10:57:59  序列位置:373,平多数:1,成交价:9470,持仓:0,浮动盈亏:0,总买单数:8,资产:999960
2015/03/04 10:57:59  序列位置:398,开多数:1,成交价:9445,持仓:1,浮动盈亏:-3,总买单数:9,资产:999958
2015/03/04 10:57:59  序列位置:398,平多数:1,成交价:9445,持仓:0,浮动盈亏:0,总买单数:9,资产:999955
--  作者:infocell
--  发布时间:2015/3/4 16:47:35
--  

这是程序输出的信息,居然在一个价位上开了好多单

 


--  作者:infocell
--  发布时间:2015/3/4 16:48:06
--  

而且持仓居然不变,用的是固定时间间隔扫描

 


--  作者:jinzhe
--  发布时间:2015/3/4 16:48:12
--  
那么是开单了,还是仅仅是输出了这么点信息?
--  作者:infocell
--  发布时间:2015/3/4 16:49:59
--  

//区间0 开多

FOR I_tmp=1 TO Num_p0 DO BEGIN

 IF B_flag[I_tmp]<=0 AND B_NUM<MAX_hold AND ABS(holding)<MAX_hold THEN BEGIN

//S_tmp1:=OPEN;
 IF 开多平空条件 AND OPEN<=Buy_point[I_tmp] THEN BEGIN
 
  b_tmpp:=Buy_SS;
 //开单量不能超过最大MAX_hold
 IF b_tmpp+ABS(holding)>MAX_hold THEN b_tmpp:=ABS(MAX_hold-ABS(holding));
 
   IF b_tmpp+B_NUM>MAX_hold THEN
  b_tmpp:=ABS(MAX_hold-B_NUM);
 
   S_tmp:=HOLDING;
 //开多
 IF b_tmpp>0 AND b_tmpp<ABS(MAX_hold) THEN BEGIN 
 开多:buy(1,b_tmpp,MARKET),IGNORECHECKPRICE;//LIMITR,OPEN),IGNORECHECKPRICE;//MARKET);//limitr,X周期低点);
 B_NUM:=B_NUM+1;
  //END
 
 // IF HOLDING<>S_tmp THEN B_flag[I_tmp]:=1;
 // IF HOLDING<>S_tmp THEN BEGIN
      B_price[I_tmp]:=ENTERPRICE;
      B_flag[I_tmp]:=1;
      //输出调试信息AND ISLASTBAR
    IF Is_debug=1  THEN  MSGOUT(TRUE,\'序列位置:\'&numtostr(BARPOS,0)&\',开多数:\'&numtostr(b_tmpp,0)&\',成交价:\'&numtostr(ENTERPRICE,0)&\',持仓:\'&numtostr(HOLDING,0)&\',浮动盈亏:\'&numtostr(OPENPROFIT,0)&\',总买单数:\'&numtostr(B_NUM,0)&\',资产:\'&numtostr(ASSET,0)&\',实时:\'&numtostr(ISLASTBAR,0));
    IF Is_log=1 THEN DEBUGFILE(\'C:\\myTEST.TXT\',\'序列位置:\'&numtostr(BARPOS,0)&\',开多数:\'&numtostr(b_tmpp,0)&\',成交价:\'&numtostr(ENTERPRICE,0)&\',持仓:\'&numtostr(HOLDING,0)&\',浮动盈亏:\'&numtostr(OPENPROFIT,0)&\',总买单数:\'&numtostr(B_NUM,0)&\',资产:\'&numtostr(ASSET,0)&\',实时:\'&numtostr(ISLASTBAR,0),0);
 
     END
     
   IF ABS(HOLDING)>=MAX_hold THEN BEGIN
    MSGOUT(TRUE,\'警告:持仓达到上限,停止开多!\');//NOAXIS,COLORGRAY;警告:"持仓达到上限,停止开多!";
    SENDPHONEMSG(\'警告:持仓达到上限,停止开多!\',1);
  END

   END
 END
END