- 精华
- 0
- 在线时间
- 76 小时
- UID
- 266622
- 积分
- 40
- 帖子
- 29
- 阅读权限
- 10
- 注册时间
- 2018-6-13
- 最后登录
- 2019-10-25
- 精华
- 0
- UID
- 266622
- 积分
- 40
- 帖子
- 29
- 主题
- 11
- 阅读权限
- 10
- 注册时间
- 2018-6-13
- 最后登录
- 2019-10-25
|
首先要感谢小米版主,我写的这么复杂,你还耐心看完了,
以上问题是这样的:
1.程序是在barstatus==2的条件下写的,先查询持仓,如果持仓大于0才开始执行,我看日志显示,是在刚开始循环的过程中持仓还没有查询到的情况下,显示持仓是 N/A 的时候, 他就循环执行发单,导致设置全局变量,我没有办法,只好在程序里添加了判断,当查不到未成交委托单,而且成交委托单里也没有和原来发送委托单价格相同的委托单的时候,吧这个全局变量又设置回0,当然,这样也有问题。
2.A_orderfilledprice这个函数如果是每10秒刷新一次,那么用什么方式可以获得成交价格,我是要获取上一笔的成交价格作为下一单的基础价格?
3.buy和sell函数需要MarketPosition为1的条件下才能执行,之前没搞明白,我早上打开系统,MarketPosition=0, 可是我有实际持仓,符合条件我要卖出的时候,sell函数不执行,所以后来就用a函数了。不知道是不是理解的不对,或者有其他操作方法?
4.我写了个测试代码如下:
Begin
chicang = A_BuyPosition(); //当前买入持仓数量
FileAppend("d:\\test.Log","-----------|| 1.总程序开始 ||---------74行-- 当前时间:" + Text(CurrentTime()) + " 持仓:"+Text(chicang));
If(chicang > 0 and BarStatus() == 2){
FileAppend("d:\\test.Log"," 1.-------24行-- 当前MarketPosition:" + Text(MarketPosition()) );
Sell(1,Q_Last());
FileAppend("d:\\test.Log"," 2.-------33行-- 当前MarketPosition:" + Text(MarketPosition()) );
Buy(1,Q_Last());
FileAppend("d:\\test.Log"," 3.-------37行-- 当前MarketPosition:" + Text(MarketPosition()) );
}
End
当我把这个测试公式插入应用的时候,还没有开始自动交易的时候,日志文件就记载了,之前的全局变量设置是不是也是自动编译或者是调入的时候执行的。
日志文件如下:
-----------|| 1.总程序开始 ||---------74行-- 当前时间:0.105936 持仓:N/A
-----------|| 1.总程序开始 ||---------74行-- 当前时间:0.105936 持仓:N/A
1.-------24行-- 当前MarketPosition:0
2.-------33行-- 当前MarketPosition:0
3.-------37行-- 当前MarketPosition:1
-----------|| 1.总程序开始 ||---------74行-- 当前时间:0.105936 持仓:N/A
1.-------24行-- 当前MarketPosition:0
2.-------33行-- 当前MarketPosition:0
3.-------37行-- 当前MarketPosition:1
-----------|| 1.总程序开始 ||---------74行-- 当前时间:0.105937 持仓:N/A
1.-------24行-- 当前MarketPosition:0
2.-------33行-- 当前MarketPosition:0
3.-------37行-- 当前MarketPosition:1
-----------|| 1.总程序开始 ||---------74行-- 当前时间:0.105939 持仓:N/A
1.-------24行-- 当前MarketPosition:0
2.-------33行-- 当前MarketPosition:0
3.-------37行-- 当前MarketPosition:1
-----------|| 1.总程序开始 ||---------74行-- 当前时间:0.105941 持仓:N/A
1.-------24行-- 当前MarketPosition:0
2.-------33行-- 当前MarketPosition:0
3.-------37行-- 当前MarketPosition:1
-----------|| 1.总程序开始 ||---------74行-- 当前时间:0.105941 持仓:N/A
1.-------24行-- 当前MarketPosition:0
2.-------33行-- 当前MarketPosition:0
3.-------37行-- 当前MarketPosition:1
-----------|| 1.总程序开始 ||---------74行-- 当前时间:0.105942 持仓:N/A
1.-------24行-- 当前MarketPosition:0
2.-------33行-- 当前MarketPosition:0
3.-------37行-- 当前MarketPosition:1
-----------|| 1.总程序开始 ||---------74行-- 当前时间:0.105943 持仓:N/A
1.-------24行-- 当前MarketPosition:0
2.-------33行-- 当前MarketPosition:0
3.-------37行-- 当前MarketPosition:1
打开自动运行以后,等到持仓数据获取到的时候,买开仓可以,卖不行,按理说买完后有持仓了,应该可以卖了,但是没反应,不知道是啥原因,从11.10.18以后,持仓从10手变成了11手,日志如下:
-----------|| 1.总程序开始 ||---------74行-- 当前时间:0.111014 持仓:N/A
-----------|| 1.总程序开始 ||---------74行-- 当前时间:0.111014 持仓:N/A
-----------|| 1.总程序开始 ||---------74行-- 当前时间:0.111014 持仓:N/A
-----------|| 1.总程序开始 ||---------74行-- 当前时间:0.111014 持仓:10
1.-------24行-- 当前MarketPosition:0
2.-------33行-- 当前MarketPosition:0
3.-------37行-- 当前MarketPosition:1
-----------|| 1.总程序开始 ||---------74行-- 当前时间:0.111015 持仓:10
1.-------24行-- 当前MarketPosition:0
2.-------33行-- 当前MarketPosition:0
3.-------37行-- 当前MarketPosition:1
-----------|| 1.总程序开始 ||---------74行-- 当前时间:0.111015 持仓:10
1.-------24行-- 当前MarketPosition:0
2.-------33行-- 当前MarketPosition:0
3.-------37行-- 当前MarketPosition:1
-----------|| 1.总程序开始 ||---------74行-- 当前时间:0.111016 持仓:10
1.-------24行-- 当前MarketPosition:0
2.-------33行-- 当前MarketPosition:0
3.-------37行-- 当前MarketPosition:1
-----------|| 1.总程序开始 ||---------74行-- 当前时间:0.111017 持仓:10
1.-------24行-- 当前MarketPosition:0
2.-------33行-- 当前MarketPosition:0
3.-------37行-- 当前MarketPosition:1
-----------|| 1.总程序开始 ||---------74行-- 当前时间:0.111018 持仓:11
1.-------24行-- 当前MarketPosition:0
2.-------33行-- 当前MarketPosition:0
3.-------37行-- 当前MarketPosition:1
-----------|| 1.总程序开始 ||---------74行-- 当前时间:0.111019 持仓:11
1.-------24行-- 当前MarketPosition:0
2.-------33行-- 当前MarketPosition:0
3.-------37行-- 当前MarketPosition:1
|
|