Rss & SiteMap

金字塔客服中心 - 专业程序化交易软件提供商 http://www.weistock.com/bbs/

专业程序化软件提供商
共30 条记录, 每页显示 10 条, 页签: [1] [2][3]
[浏览完整版]

标题:关于同一根K线发出多次买单指令的问题

1楼
infocell 发表于:2015/3/4 16:13:29

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

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

2楼
jinzhe 发表于:2015/3/4 16:16:39
好多乱码,你换IE浏览器发帖
3楼
jinzhe 发表于:2015/3/4 16:22:50

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

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

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

[此贴子已经被作者于2015/3/4 16:24:19编辑过]
4楼
infocell 发表于:2015/3/4 16:41:55

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

 

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

 

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

5楼
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

 

6楼
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
7楼
infocell 发表于:2015/3/4 16:47:35

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

 

8楼
infocell 发表于:2015/3/4 16:48:06

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

 

9楼
jinzhe 发表于:2015/3/4 16:48:12
那么是开单了,还是仅仅是输出了这么点信息?
10楼
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

共30 条记录, 每页显示 10 条, 页签: [1] [2][3]


Powered By Dvbbs Version 8.3.0
Processed in 0.03516 s, 3 queries.