设为首页收藏本站

 找回密码
 注册
查看: 7904|回复: 10
打印 上一主题 下一主题

关于A_SendOrder使用全局变量却还是发重复单的问题!! [复制链接]

Rank: 3Rank: 3

精华
0
UID
67476
积分
161
帖子
37
主题
15
阅读权限
40
注册时间
2011-9-24
最后登录
2011-10-22
跳转到指定楼层
1#
发表于 2011-10-19 15:36:59 |只看该作者 |倒序浏览
关于A_SendOrder有以下几个问题,望管理员给解释一下:
1、A_SendOrder函数据说是每个Tick执行一次,是整个程序的代码都执行一次吗?还是仅仅执行A_SendOrder这个函数一次?一个Tick一般多长时间?如果整个程序代码比较长一些,这个时间够整个程序执行一次吗?不够的话会怎样?
2、A_SendOrder在委托单发送成功之后,在单子还未成交之前,后面的程序会继续执行吗?以下是我今天测试的一个代码段,但是出了一个问题,就是在1分钟图表上,如果委托单发送成功却没有成交的话,那在次一根满足条件的K线上,又会重新再发送一次委托单,就等于发送了两次,重复了,这是什么原因呢?
If(BarStatus==0)
{
     SetGlobalVar(0,1);
}
if (Condition1 && (A_BuyPosition()==0) &&  (GetGlobalVar(0)==1))
{
      A_SendOrder(Enum_Buy,Enum_Entry,lots,Open);
      SetGlobalVar(0,0);                                                                                                                           
}
if(Condition2 && (A_BuyPosition() >0))                                                   //&& (GetGlobalVar(0)==0))
{
     A_SendOrder(Enum_Sell,Enum_Exit,A_BuyPosition(),Open);
     SetGlobalVar(0,1);
}
3、针对上面代码平仓的条件,如果在成功自动化交易之后,我选择了手动平仓,那此时的全局变量0是不是还是0(开仓里有SetGlobalVar(0,0))?那如果此时我再开启全自动化交易,是不是就是,即使开仓条件满足了,也会因全局变量0还是0而无法成功发送委托单呢?这个问题应该如何解决呢?我就是想达到自动和手动的无缝衔接,想手动的时候,想自动的时候自动。
以上3个问题,望管理员解释一下,谢谢!
天与不取,必受其咎!

Rank: 3Rank: 3

精华
0
UID
67476
积分
161
帖子
37
主题
15
阅读权限
40
注册时间
2011-9-24
最后登录
2011-10-22
2#
发表于 2011-10-19 16:01:41 |只看该作者
我在进行手动平仓之后,发现开仓信号再出现时,会按照条件重新开仓,但是这儿是怎么促成自动开仓的,还是很不理解?我在手动平仓之后,并没有去改变全局变量的值,那全局变量0理应当还是0,在我手动平仓之后它是什么时候改变成符合开仓条件的1呢?
天与不取,必受其咎!

使用道具 举报

Rank: 10Rank: 10Rank: 10

精华
2
UID
4130
积分
20901
帖子
6519
主题
17
阅读权限
200
注册时间
2009-4-15
最后登录
2019-4-12
3#
发表于 2011-10-19 17:42:07 |只看该作者
回复 1# zjbb108


1.不够时间运行,会直接执行最新的tick,中的tick会忽略
2.会继续执行
3.公式执行过程中,行情是否有断线重连?

使用道具 举报

Rank: 2

精华
0
UID
61739
积分
57
帖子
13
主题
4
阅读权限
30
注册时间
2011-8-26
最后登录
2011-11-24
4#
发表于 2011-10-19 20:16:26 |只看该作者
意思是短线重连后,全局变量就没了?那也太不可靠了,还是写在文件里可靠。

使用道具 举报

Rank: 3Rank: 3

精华
0
UID
67476
积分
161
帖子
37
主题
15
阅读权限
40
注册时间
2011-9-24
最后登录
2011-10-22
5#
发表于 2011-10-19 22:23:14 |只看该作者
2、为什么我的那段代码在委托单发送成功但单子未成交的情况下,会再次重复罚单;
3、期间没有出现断线情况!!就像4楼的说的,如果中间断线一次,全局变量就一定会重置吗?那会不会在符合开仓条件的情况下,再次开仓呢?
天与不取,必受其咎!

使用道具 举报

Rank: 3Rank: 3

精华
0
UID
67476
积分
161
帖子
37
主题
15
阅读权限
40
注册时间
2011-9-24
最后登录
2011-10-22
6#
发表于 2011-10-19 23:08:22 |只看该作者
If(BarStatus==0)
{
     SetGlobalVar(0,1);
}
if (Condition1 && (A_BuyPosition()==0) &&  (GetGlobalVar(0)==1))
{
      A_SendOrder(Enum_Buy,Enum_Entry,lots,Open);
      SetGlobalVar(0,0);                                                                                                                           
}
if(Condition2 && (A_BuyPosition() >0))                                                  
{
     A_SendOrder(Enum_Sell,Enum_Exit,A_BuyPosition(),Open);
     SetGlobalVar(0,1);
}
这段代码为什么在委托单发送成功但未成交的情况下还会重复发单呢?
天与不取,必受其咎!

使用道具 举报

Rank: 3Rank: 3

精华
0
UID
67476
积分
161
帖子
37
主题
15
阅读权限
40
注册时间
2011-9-24
最后登录
2011-10-22
7#
发表于 2011-10-19 23:10:30 |只看该作者
我在想,我手动平仓之后,是不是图表被重新加载了一次,然后全局变量就被又重新赋初值??还是我的交易系统又重新被加载了一次,让全局变量又重新赋初值了呢?
天与不取,必受其咎!

使用道具 举报

Rank: 4

精华
0
UID
67732
积分
331
帖子
123
主题
23
阅读权限
50
注册时间
2011-9-25
最后登录
2015-1-6
8#
发表于 2012-4-16 17:30:17 |只看该作者
lh948 发表于 2011-10-19 17:42
回复 1# zjbb108

老师你好,我想把  buy(lots,open)和sellshort(lots,open)   改成  A_SendOrder  那种形式,怎么来避免重复罚单呢?我知道用全局变量,但如果前面的单子没成交,后面的怎么反手呢》?谢谢~~~~~~~

使用道具 举报

Rank: 1

精华
0
UID
239089
积分
14
帖子
12
主题
2
阅读权限
10
注册时间
2016-8-19
最后登录
2017-2-17
9#
发表于 2017-2-15 12:15:37 |只看该作者
1,发单没成交那实时的价格就无效了,知道下一个实时价符合开仓条件就会发单;
2,你手动平仓后,仓位显示的是0,你是不是设置了仓位限制,比如MarketPpition之内的函数是否用到?
3,你手动平仓后全局变量应该不会发生变化
PS:你最好检查一下仓位是不是还有其它约束条件控制。

使用道具 举报

Rank: 1

精华
0
UID
239089
积分
14
帖子
12
主题
2
阅读权限
10
注册时间
2016-8-19
最后登录
2017-2-17
10#
发表于 2017-2-15 12:16:19 |只看该作者
yuanwl 发表于 2012-4-16 17:30
老师你好,我想把  buy(lots,open)和sellshort(lots,open)   改成  A_SendOrder  那种形式,怎么来避免重 ...

引入其它条件语句控制

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

bottom

静态版|手机版|联系我们|交易开拓者 ( 粤ICP备07044698   

GMT+8, 2024-5-17 12:08

Powered by Discuz! X2 LicensedChrome插件扩展

© 2011-2012 交易开拓者 Inc.

回顶部