以文本方式查看主题
- 金字塔客服中心 - 专业程序化交易软件提供商 (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
|