但是有一个问题,历史订单数电脑上会变得,,订单多了或者星期一打开电脑订单数量会改变,比如 星期五…… 这个不是问题。请看下图
关于排序, 终端的工作机制如下图
这意味着,默认排序是会受终端操作人员的设置影响。也就是说,使用默认排序来检索订单,想得到完全想要的数据是不安全的。
我的处理方式:首先,得确保终端设置显示 所有订单 ,然后,EA里先读取所有指定条件的订单(如指定魔术号)到一个数组,然后,对这个数组再按需求进行排序(如按订单关闭时间从大到小排序,则最后平仓的订单将处于数组0位),然后,再对已经排好序的订单进行 相应 的统计计算。
我的处理方式是;首先默认电脑终端的排序。摸清他的规律是,电脑上现有的排序不会变,是按照开单时间先后排序的,开单越晚序列号越大。最后一个序号为空,有入金的序号值也为空。。比如当前电脑上的历史订单序列号是32,OrdersHistoryTotal()获取的也是32个订单;0到31,那么最后一张订单的序列号就是31,可以读取开单时间,利润,平仓时间等各种数值,32是空值。。序列中要是中间有入金或出金会有一个单独的序列号(重点)***这个序列号比如是11。入金是100。那么这个序列号利润获取值就是:100.其他数值( 开单时间 , 平仓时间等 )都是空!!如果直接获取利润会加100的
有时星期一开盘会把电脑上所有历史订单清空,变成0!!!
我就利用电脑上现有的历史订单,,设一个变量记录最后平仓的订单号码(比如是31号订单的订单号码),如果历史订单数是0。(星期一电脑清零)。记录当前最后平仓的变量=零。。。。。我尝试过记录最后平仓订单的开单时间,但是不行,最后平仓的平仓时间没有毫秒,也就是说会有可能出现相同的两张一样平仓时间的订单会被漏掉
如果历史订单数不是零是0。。循环一下订单找到变量里匹配的订单号码,,并获取订单的序列号(32),,然后循环检测是否有大于32的序号(重点***)并且是否有开单时间数值(入金或出金的序列号没有这个数值),,如果有获取利润并累加,,订单号和累加利润写入电脑单独文件夹,避免断电丢失,这里唯一的buy就是如果星期五出现断电停盘前没来电星期一又清零就没办法了,最后变量=最后一张平仓订单的订单号码,如此循环
不知道我说明白没有!!!!!!!!!!!!!!!!!!!!!!!!
MT4 这个问题容易解决 ,但是 MT5 就比较麻烦。我目前在写 MT5 实时把平仓的信息发送到本地一个文件里的模块,遇到问题结果老是不对。
MT4 这个问题容易解决 ,但是 MT5 就比较麻烦。我目前在写 MT5 实时把平仓的信息发送到本地一个文件里的模块,遇到问题结果老是不对。
求教高手.程序本来是KDJ指标,然后我加了下面代码意图实现当J线死叉的时候,发出预警信号,但总是没收到预警信息,测试也没任何错误提示,求大神看看问题在哪里?谢谢
for(int j=10;j<limit;j++)
{
if((JBuffer[j-1] > KBuffer[j-1])&&(JBuffer[j] < KBuffer[j])) //判断两线产生了死叉
{
if(j==prev_calculated)//只针对当前K线报警历史K线就不用报警了
{
Alert("UP");
SendMail("eurusd","死叉");
SendNotification("空平");
}//预警
}