「FX581独家」MT4开发技巧 历史记录的“坑”

我们会经常遇到这样的需求:统计历史交易记录的手数,或者得到最后一笔历史交易订单的信息。这样的功能对于我们来说并不困难,下面是一个简单的代码示例:

double lot = 0;

for(int i=0;i < OrdersHistoryTotal();i )

{

if(OrderSelect(i,SELECT_BY_POS,MODE_HISTORY) == false) continue;

lot = OrderLots();

}

Print("总手数:",lot);

这段代码就是通过循环统计出所有历史的手数,其实这段代码就是把循环遍历所有在场单的代码改动下即可。把OrdersTotal()函数改成OrdersHistoryTotal(),把OrderSelect函数里增加一个参数:MODE_HISTORY。那么这么一个简单的程序也有问题吗?答案是肯定的。

我们来运行下这个EA程序,在终端中显示的结果是:

总手数居然是0!太不可思议了,明明我有很多的交易记录啊。

现在跟小编一起来做一些操作,再运行下程序看看最后的结果是什么:

「FX581独家」MT4开发技巧 历史记录的“坑”

在账户历史中点击右键,选择所有交易记录,现在账户历史中就出现了之前交易的所有历史记录

「FX581独家」MT4开发技巧 历史记录的“坑”


那么我们在运行下EA程序试下结果就会显示正常:

「FX581独家」MT4开发技巧 历史记录的“坑”

这就是通过程序得到历史记录的一个“坑”了,在MT4中,软件默认会只显示当月的历史记录,而程序在得到历史记录时只根据软件当前的历史记录进行查找,由于这个月我没有做任何的交易,所以在统计总手数的时候得到的是0,而如果在软件里把所有的交易记录都显示出来后,程序终于可以正常工作了。
(本段落标蓝是为了推广所用,请吧xxx替换为相应要宣传的平台,如果没有可做的平台可以删除这段内容)之所以我们很少发现这个问题的原因在于一般的MT4平台模拟账户时效性都很短,注册了一个模拟户后很快就过期了,导致很少有人能发现这个问题。所以拥有一个能开长效模拟户的平台尤为重要了,我们推荐使用xxx平台它可以提供长达xx天的模拟账户。
长效模拟户本身对于我们开发和测试EA程序是有很大帮助,众所周知开发完成一款新的EA程序后只是用历史模拟是不够的,还需要挂机测试,如果测试没几天就过期了这样对于开发EA来说是非常烦恼的事情。

关于这个历史记录的第二个“坑”是,我们要想得到历史记录只能用EA程序来获取,如果我们写一个脚本程序,同样是得不到历史记录的,即使我们已经在账户历史中显示了所有的记录。

那么我们如何才能避免这个问题呢?因为客户在使用我们的EA程序时是不知道这个问题的,如果客户不知道或根本不会去这样操作,我们在程序中如何避免这个问题呢?一个比较简单的办法是在您的EA程序运行中,把所有下单的记录都存在文件中,这样即使客户没有任何操作也可以拿到这些历史记录信息,下面是一个简单的存文件的代码示例:

//content为要存储的内容

void setfile(string content)

{

string Filename = "要存储的文件名";

int filehandle = FileOpen(filename,FILE_WRITE|FILE_TXT);//也可以存成CSV文件把FILE_TXT替换成FILE_CSV,这样可以存储多条信息

if(filehandle == INVALID_HANDLE)//判断读取文件是否出现错误

{

FileClose(filehandle);

Print("存储文件发生错误");

}

else//正常打开,可以写入内容了

{

FileWriteString(filehandle, content);

FileClose(filehandle);

}

}

通过以上的方法,想必各位已经有所了解,在以后的开发中我们的程序将更加的完善和健壮。

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。

(0)
上一篇 2023年4月24日 下午4:14
下一篇 2023年4月24日 下午4:30

相关推荐

  • 仓储管理系统项目描述表

    仓储管理系统项目描述表 项目概述: 仓储管理系统是一种用于管理仓储货物的计算机系统。该系统旨在提高仓储效率,减少库存损失,并确保货物安全存储。该项目旨在开发一个全面的仓储管理系统,…

    科研百科 2024年12月30日
    1
  • 《广西壮族自治区高标准农田建设项目工程设施管护办法(试行)》政策解读

    为进一步提高我区高标准农田工程设施管护水平,保障粮食安全,促进农业强区,根据国务院办公厅《关于切实加强高标准农田建设提升国家粮食安全保障能力的意见》(国办发〔2019〕50号)、农…

    科研百科 2024年2月14日
    113
  • crm客户关系管理系统介绍

    CRM客户关系管理系统介绍 CRM客户关系管理系统是一种能够帮助企业有效地管理客户关系的软件系统。它可以帮助企业更好地了解客户的需求和偏好,并提供个性化的服务和产品,以提高客户满意…

    科研百科 2024年9月15日
    19
  • 做科研项目的基本环节有哪些内容(做科研项目的基本环节有哪些)

    做科研项目的基本环节有哪些 科研项目是科学研究的重要形式,是推动科学进步的重要力量。科研项目的基本环节有哪些?以下是一些基本环节: 1. 研究计划:研究计划是科研项目的基础,包括研…

    科研百科 2024年4月10日
    104
  • 新宝来发现“返修单” 消费者维权30天等来退车通知 但是……

    11月2日,市民张先生在大庆一汽世腾4S店购买了一辆2018款大众宝来轿车,然而,刚开回家的第二天,张先生就在车副驾驶的手扣里发现了一张“商品车返修单”,这张返厂维修单不是别的车的…

    科研百科 2023年5月27日
    237
  • 合同管理系统saas

    合同管理系统SaaS:提升合同管理效率 随着企业规模的不断扩大和业务需求的不断增长,合同管理成为了企业日常运营中不可或缺的一部分。传统的合同管理方式不仅效率低下,而且容易出错,给企…

    科研百科 2024年6月5日
    32
  • 党支部如何强化政治功能

    党支部是中国共产党的重要组成部分,其主要功能是履行党员的先进性教育、组织管理、思想引领和政治宣传等职责,为党的各项工作提供坚实的组织和保障。在新时代,党支部应该如何强化政治功能,为…

    科研百科 2024年11月29日
    1
  • 付费科研项目有哪些项目

    付费科研项目有哪些项目? 随着科技的不断发展,越来越多的机构和公司开始提供付费科研项目。这些项目旨在帮助学生和专业人士提高他们的技能和知识水平。如果您正在寻找一些项目来帮助您提高您…

    科研百科 2025年3月19日
    1
  • 供应链管理科研项目有哪些内容(供应链管理科研项目有哪些)

    供应链管理科研项目有哪些 随着全球化的加速和市场竞争的加剧,供应链管理已成为企业竞争力的重要因素之一。为了提升供应链管理水平,企业纷纷投入了大量的科研资金和人力资源,开展供应链管理…

    科研百科 2024年4月2日
    85
  • plosone伦理怎么填呀

    Plos One伦理怎么填呀 在Plos One上,我们致力于推动科学界对于伦理问题的研究。在填表时,我们需要遵循一些基本的原则。这些原则包括:尊重个人权利,保护隐私,不泄露个人信…

    科研百科 2024年11月29日
    0