初学者的问题 MQL5 MT5 MetaTrader 5 - 页 1163 1...115611571158115911601161116211631164116511661167116811691170...1503 新评论 Vladimir Karputov 2019.12.10 20:29 #11621 Roman: 如果已经输入了,那么就有区别了。 读取一个初始化的变量总是比读取一个函数快。 没有任何区别。我现在找不到链接了--但答案是很久以前给出的。 Roman 2019.12.10 20:50 #11622 Vladimir Karputov: 没有任何区别。我现在找不到链接了--但答案是很久以前给出的。 对于胡安和编译器警告 来说,没有任何区别 )) Alexey Viktorov 2019.12.10 23:16 #11623 Vladimir Karputov: 没有任何区别。当你编译所有的东西时,所有的东西都集中在一个单一的调用中。这就是为什么最好是 通过函数来做一切事情。 让我们也单独开个话题,像争论点数一样争论这个问题......。这将使人们有事可做...... 你们喜欢把自己的意见强加于人...... [删除] 2019.12.11 09:59 #11624 有一个MA,有一些转变。让MA_shift=5。 为什么只有在向CopyBuffer 传递双负 移位的情况下,才有可能从图表的零条中获得MA的正确值? CopyBuffer(hMA, 0,-2*5, rates_total, MA_Buf)。 MA_Buf[0]现在有了正确的值。 Vladimir Karputov 2019.12.11 10:06 #11625 RickD: 有一个MA,有一些转变。让MA_shift=5。 为什么只有当你向CopyBuffer传递双负 移位时,才有可能从图表的零条中获取MA的正确值? CopyBuffer(hMA, 0,-2*5, rates_total, MA_Buf)。 MA_Buf[0]现在有了正确的值。 先画一张图,用移位参数指定什么是你的指标的 "零条"。 Igor Makanu 2019.12.11 10:19 #11626 Roman: 读取一个变量,比函数更快。 并非如此,我检查了_Symbol和Symbol()https://www.mql5.com/ru/forum/160683/page933#comment_12780905, 哪个更快。 访问时间是一样的,MQL中的代码优化是非常酷的,所以使用任何方便的方法。 根据我的测试,访问时间可能不同,这取决于变量描述的位置和修改器,但有2-5%的速度,原则上可以写成特定构建中的实现,这取决于构建号。 WinZip 2019.12.11 11:41 #11627 你能告诉我获得当前符号的最后一笔交易结果的最简单和最快的方法吗?因为从文件上看,一切都很复杂。要得到结果首先需要找到所需交易的票据,要找到票据需要在历史上按其索引找到该交易,索引应在历史上搜索,更何况你还需要按符号过滤。 Vladimir Karputov 2019.12.11 11:51 #11628 WinZip: 你能告诉我如何轻松快速地获得当前符号的最后一笔交易的结果吗?因为文件是非常复杂的。为了得到结果,你需要先找到所需交易的票据,为了找到票据,你需要在历史上通过其索引找到交易,索引应该在历史上寻找,更不用说我们应该通过符号来过滤。 为了避免每次都去看交易历史--只需在OnTradeTransaction 中捕捉交易,类型为 TRADE_TRANSACTION_DEAL_ADD - 将交易添加到历史上。 //+------------------------------------------------------------------+ //| TradeTransaction function | //+------------------------------------------------------------------+ void OnTradeTransaction(const MqlTradeTransaction &trans, const MqlTradeRequest &request, const MqlTradeResult &result) { //--- get transaction type as enumeration value ENUM_TRADE_TRANSACTION_TYPE type=trans.type; //--- if transaction is result of addition of the transaction in history if(type==TRADE_TRANSACTION_DEAL_ADD) { long deal_ticket =0; long deal_order =0; long deal_time =0; long deal_time_msc =0; long deal_type =-1; long deal_entry =-1; long deal_magic =0; long deal_reason =-1; long deal_position_id =0; double deal_volume =0.0; double deal_price =0.0; double deal_commission =0.0; double deal_swap =0.0; double deal_profit =0.0; string deal_symbol =""; string deal_comment =""; string deal_external_id =""; if(HistoryDealSelect(trans.deal)) { deal_ticket =HistoryDealGetInteger(trans.deal,DEAL_TICKET); deal_order =HistoryDealGetInteger(trans.deal,DEAL_ORDER); deal_time =HistoryDealGetInteger(trans.deal,DEAL_TIME); deal_time_msc =HistoryDealGetInteger(trans.deal,DEAL_TIME_MSC); deal_type =HistoryDealGetInteger(trans.deal,DEAL_TYPE); deal_entry =HistoryDealGetInteger(trans.deal,DEAL_ENTRY); deal_magic =HistoryDealGetInteger(trans.deal,DEAL_MAGIC); deal_reason =HistoryDealGetInteger(trans.deal,DEAL_REASON); deal_position_id =HistoryDealGetInteger(trans.deal,DEAL_POSITION_ID); deal_volume =HistoryDealGetDouble(trans.deal,DEAL_VOLUME); deal_price =HistoryDealGetDouble(trans.deal,DEAL_PRICE); deal_commission =HistoryDealGetDouble(trans.deal,DEAL_COMMISSION); deal_swap =HistoryDealGetDouble(trans.deal,DEAL_SWAP); deal_profit =HistoryDealGetDouble(trans.deal,DEAL_PROFIT); deal_symbol =HistoryDealGetString(trans.deal,DEAL_SYMBOL); deal_comment =HistoryDealGetString(trans.deal,DEAL_COMMENT); deal_external_id =HistoryDealGetString(trans.deal,DEAL_EXTERNAL_ID); } else return; ENUM_DEAL_ENTRY enum_deal_entry=(ENUM_DEAL_ENTRY)deal_entry; if(deal_symbol==m_symbol.Name() && deal_magic==InpMagic) { if(deal_type==DEAL_TYPE_BUY || deal_type==DEAL_TYPE_SELL) { ... } } } } m_symbol.Name() - 当前符号,InpMagic - 专家顾问的唯一标识符。 Каныбек Султан Уулу 2019.12.11 12:07 #11629 你好,我在网站和facebook上注册了邮件,但无法进入meta trader 5-4,请帮助我补充我的账户。 Roman 2019.12.11 13:19 #11630 Igor Makanu: 不是事实,我检查过了,与_Symbol和Symbol()相比,哪个更快https://www.mql5.com/ru/forum/160683/page933#comment_12780905 即访问时间是一体的,MQL中的代码优化是非常酷的,所以只要是方便的,就用它。 根据我的测试,访问时间可能不同,这取决于变量描述的位置和修改器,但有2-5%的速度,原则上可以写成特定构建中的实现,这取决于构建号。 我同意优化器工作良好,但总是依赖编译器的优化器是错误的。 你需要提前考虑代码在内存、初始化和值返回层面是如何执行的。 也就是说,计算每个操作的执行动作数,如果动作少,代码就快。并把它作为一种实践,一次写出一个最佳代码。 在简短的代码中,也许没有什么区别,但当有一个有数百个文件的项目时,这时就会出现延迟。 并且只会有一个剖析器和重写代码。每个人都选择自己的耙子))。 同时用谷歌搜索关键词 __inline __forceinline 奇怪的是,它们在mql中是没有记录的。 1...115611571158115911601161116211631164116511661167116811691170...1503 新评论 您错过了交易机会: 免费交易应用程序 8,000+信号可供复制 探索金融市场的经济新闻 注册 登录 拉丁字符(不带空格) 密码将被发送至该邮箱 发生错误 使用 Google 登录 您同意网站政策和使用条款 如果您没有帐号,请注册 可以使用cookies登录MQL5.com网站。 请在您的浏览器中启用必要的设置,否则您将无法登录。 忘记您的登录名/密码? 使用 Google 登录
如果已经输入了,那么就有区别了。
读取一个初始化的变量总是比读取一个函数快。
没有任何区别。我现在找不到链接了--但答案是很久以前给出的。
没有任何区别。我现在找不到链接了--但答案是很久以前给出的。
对于胡安和编译器警告 来说,没有任何区别 ))
没有任何区别。当你编译所有的东西时,所有的东西都集中在一个单一的调用中。这就是为什么最好是 通过函数来做一切事情。
让我们也单独开个话题,像争论点数一样争论这个问题......。这将使人们有事可做......
你们喜欢把自己的意见强加于人......
有一个MA,有一些转变。让MA_shift=5。
为什么只有在向CopyBuffer 传递双负 移位的情况下,才有可能从图表的零条中获得MA的正确值?
CopyBuffer(hMA, 0,-2*5, rates_total, MA_Buf)。
MA_Buf[0]现在有了正确的值。
有一个MA,有一些转变。让MA_shift=5。
为什么只有当你向CopyBuffer传递双负 移位时,才有可能从图表的零条中获取MA的正确值?
CopyBuffer(hMA, 0,-2*5, rates_total, MA_Buf)。
MA_Buf[0]现在有了正确的值。
先画一张图,用移位参数指定什么是你的指标的 "零条"。
读取一个变量,比函数更快。
并非如此,我检查了_Symbol和Symbol()https://www.mql5.com/ru/forum/160683/page933#comment_12780905, 哪个更快。
访问时间是一样的,MQL中的代码优化是非常酷的,所以使用任何方便的方法。
根据我的测试,访问时间可能不同,这取决于变量描述的位置和修改器,但有2-5%的速度,原则上可以写成特定构建中的实现,这取决于构建号。
你能告诉我如何轻松快速地获得当前符号的最后一笔交易的结果吗?因为文件是非常复杂的。为了得到结果,你需要先找到所需交易的票据,为了找到票据,你需要在历史上通过其索引找到交易,索引应该在历史上寻找,更不用说我们应该通过符号来过滤。
为了避免每次都去看交易历史--只需在OnTradeTransaction 中捕捉交易,类型为
TRADE_TRANSACTION_DEAL_ADD - 将交易添加到历史上。
m_symbol.Name() - 当前符号,InpMagic - 专家顾问的唯一标识符。
不是事实,我检查过了,与_Symbol和Symbol()相比,哪个更快https://www.mql5.com/ru/forum/160683/page933#comment_12780905
即访问时间是一体的,MQL中的代码优化是非常酷的,所以只要是方便的,就用它。
根据我的测试,访问时间可能不同,这取决于变量描述的位置和修改器,但有2-5%的速度,原则上可以写成特定构建中的实现,这取决于构建号。
我同意优化器工作良好,但总是依赖编译器的优化器是错误的。
奇怪的是,它们在mql中是没有记录的。你需要提前考虑代码在内存、初始化和值返回层面是如何执行的。
也就是说,计算每个操作的执行动作数,如果动作少,代码就快。并把它作为一种实践,一次写出一个最佳代码。
在简短的代码中,也许没有什么区别,但当有一个有数百个文件的项目时,这时就会出现延迟。
并且只会有一个剖析器和重写代码。每个人都选择自己的耙子))。
同时用谷歌搜索关键词