任何菜鸟问题,为了不给论坛添乱。专业人士,不要路过。没有你就无处可去 - 6. - 页 901 1...894895896897898899900901902903904905906907908...1178 新评论 Vitalie Postolache 2015.06.06 13:33 #9001 .roman.:不必要的计算(与问题无关)已被删除。打印机被添加到代码中,专门用来显示这个问题。尽管订单符号与EA开启的符号进行了比较,但EA可能会显示以下内容(从Ozi图表中取欧元的订单数据,例如,如本案例)。 if(Ask>openPrice) { Print("OrderSymbol ",OrderSymbol()," OrderTicket ",OrderTicket()," OrderOpenPrice ",OrderOpenPrice()); } 这不可能,袋鼠的问价不可能高于2015年欧洲美元的任何公开价格......而所有对所选订单的检查最好在选择之后进行,用一个单独的if()子句。 Roman Zhitnik 2015.06.06 15:53 #9002 evillive: 这不可能,袋鼠的问价不可能高于2015年欧洲美元的任何开盘价......。而对所选订单的所有检查应该在选择之后进行,用一个单独的if()子句。 这是正确的,它不能。这就是为什么它在1.11262的eu上发出了Bid<openPrice订单。换句话说,你是否建议使用if(OrderSelect())检查是否存在订单,然后在嵌入的if中,我们已经将图表符号与订单符号、开盘价 等进行比较? Vitalie Postolache 2015.06.06 18:28 #9003 .roman.:这是正确的,它不能。这就是为什么它在1.11262为欧盟发出了一个Bid<openPrice订单。换句话说,你是否建议使用if(OrderSelect())检查订单,然后在嵌入的if中比较图表符号与订单符号、开盘价等? 是的,没错,首先是OrderSelect(),然后是下一个检查其余的参数。 Alexey Viktorov 2015.06.07 09:27 #9004 跳来跳去是没有用的。在一行中写选择顺序 和检查符号和魔术师,或者把它们分成3行,都没有区别。根据新建筑的变化,检查条件是分阶段的,也就是说,如果第一个条件没有得到满足,后面的条件就不会被检查。这与3条线是一样的。第一个条件得到满足,第二个条件被检查。只有当第二个条件也得到满足时,我们才会继续检查第三个条件。问题可能是,在代码的删除部分有一个用户函数的调用,其中选择了另一个订单。 Roman Zhitnik 2015.06.07 16:44 #9005 如果有任何关于与订单合作的说法,这将是我注意到的第一件事。但只有计算,没有使用任何一个用户功能。目前还不清楚到底是什么原因导致一个订单 从另一对中被选中。这就是为什么我对文档中提到的 "软件环境 "如此困惑,并且已经按照evillive 的建议重新编写了代码,准备用手鼓跳舞。下一个变态将是通过marketinfo与所需货币对的bid/ask进行强制比较。UPD.: 问题解决了。实际上发现了一个嵌套函数,它使用自己的OrderSelect。谢谢你的想法,AlexeyVik。 PokrovMT5 2015.06.09 16:57 #9006 大家好,能否告诉我如何解决一个问题,我在循环中找到了我想要的条数,但我还需要循环中的过去条数,如何简洁地实现这个问题?谢谢你。for(i=limit; i>=0; i--) { yesterday_weekday = TimeDayOfWeek(iTime(Symbol(),0,i-1))-TimeDayOfWeek(iTime(Symbol(),0,i)); if (yesterday_weekday ==1) yesterday_time=iTime(Symbol(),0,i); yesterday_shift=iBarShift(Symbol(),0,yesterday_time0);//последний бар } inuboh 2015.06.09 17:30 #9007 我已经创建了一个EA(不是为了工作,只是为了练习)。如果我在IF函数中设置这两个参数,如果我逐一设置,一切都会正常工作,这是代码(另外,我如何确保如果我已经有一个开放的买入订单,下一个买入订单不会开放,即使所有条件都符合)?//+------------------------------------------------------------------+ //| новый.mq4 | //| Copyright 2015, MetaQuotes Software Corp. | //| https://www.mql5.com | //+------------------------------------------------------------------+ #property copyright "Copyright 2015, MetaQuotes Software Corp." #property link "https://www.mql5.com" #property version "1.00" #property strict //+------------------------------------------------------------------+ //| Expert initialization function | //+------------------------------------------------------------------+ int OnInit() { //--- //--- return(INIT_SUCCEEDED); } //+------------------------------------------------------------------+ //| Expert deinitialization function | //+------------------------------------------------------------------+ void OnDeinit(const int reason) { //--- } //+------------------------------------------------------------------+ //| Expert tick function | //+------------------------------------------------------------------+ int start() { double PC = iClose ("EURUSD", PERIOD_H1, 0); double MA = NormalizeDouble (iMA ("EURUSD", PERIOD_H1, 12, 0, MODE_LWMA, PRICE_MEDIAN, 0), 4); if (Ask == MA && PC-->MA ) OrderSend("EURUSD",OP_BUY,1,Ask,3,Ask-30*Point, Ask+30*Point); return (0); } //+------------------------------------------------------------------+ Vitalie Postolache 2015.06.09 19:14 #9008 inuboh:我已经创建了一个EA(不是为了工作,只是为了练习)。如果我一个一个地设置它们,就能正常工作,也就是说,代码(如果我已经有一个打开的买入订单,我如何使买入订单不打开下一个,即使所有条件都正确?)并不是说它是所有麻烦的来源,而是纯粹出于学术兴趣:为什么要同时进行OnInit()、OnDeinit(),然后突然启动()?而对于这个问题,强烈不建议这样的比较问==MA,在历史上极少成真。那么,PC-->MA 这样的表达是什么意思呢?至于一买一卖的权限,我们循环查看所有市场头寸,并将其与指定的标准--符号、类型、神奇数字进行比较,如果找到了所寻求的头寸,则将计数器增加1。然后,在必要时,检查这个计数器。事情就是这样的。 _ExpertOrdersB=0; _ExpertOrdersS=0; for(int z=OrdersTotal()-1; z>=0; z --) { if(!OrderSelect(z,SELECT_BY_POS)) { Print(". OrderSelect("+IntegerToString(z)+", SELECT_BY_POS ) FAIL!. Error #"+IntegerToString(GetLastError())); } if((OrderMagicNumber()==magic) && OrderSymbol()==_Symbol) { switch(OrderType()) { default: break; case 0: _ExpertOrdersB++; break; case 1: _ExpertOrdersS++; break; } } } if (_ExpertOrdersB < 1) //если нет покупок, то пытаемся купить, при условии, что: if (Ask == MA && PC-->MA ) OrderSend("EURUSD",OP_BUY,1,Ask,3,Ask-30*Point, Ask+30*Point); inuboh 2015.06.10 05:57 #9009 evillive:并不是说这是所有问题的根源,而是纯粹出于学术兴趣:为什么同时进行OnInit()、OnDeinit(),然后突然启动()?而对于这个问题,强烈不建议这样的比较问==MA,在历史上极少成真。那么,PC-->MA 这样的表达是什么意思呢?至于一买一卖的权限,我们循环浏览所有市场头寸,并将其与指定的标准--符号、类型、神奇数字进行比较,如果找到所寻求的头寸,则将计数器增加1。然后我们在必要时看一下计数器。出于 "习惯",我修复了start() )为什么问价==MA 是一个罕见的事件? 当前的买价是否很少触及移动平均线?在我看来,PC-->MA 是指如果之前的收盘价高于移动平均线(我还没有想出其他方法)。因此,当我用 Ask == MA,然后 用PC-->MA 逐一启用IF功能时 ,它 工作得很好,但当我把它们结合起来时,它就不工作了! Alexey Viktorov 2015.06.10 08:17 #9010 evillive:并不是说这是所有问题的根源,而是纯粹出于学术兴趣:为什么同时进行OnInit()、OnDeinit(),然后突然启动()?而对于这个问题,强烈不建议这样的比较问==MA,在历史上极少成真。那么,PC-->MA 这样的表达是什么意思呢?至于一买一卖的权限,我们循环浏览所有市场头寸,并将其与指定的标准--符号、类型、神奇数字进行比较,如果找到所寻求的头寸,则将计数器增加1。然后,在必要时,检查这个计数器。事情就是这样的。我的理解是,PC-->MA与PC-1>MA是一样的。 1...894895896897898899900901902903904905906907908...1178 新评论 您错过了交易机会: 免费交易应用程序 8,000+信号可供复制 探索金融市场的经济新闻 注册 登录 拉丁字符(不带空格) 密码将被发送至该邮箱 发生错误 使用 Google 登录 您同意网站政策和使用条款 如果您没有帐号,请注册 可以使用cookies登录MQL5.com网站。 请在您的浏览器中启用必要的设置,否则您将无法登录。 忘记您的登录名/密码? 使用 Google 登录
不必要的计算(与问题无关)已被删除。打印机被添加到代码中,专门用来显示这个问题。尽管订单符号与EA开启的符号进行了比较,但EA可能会显示以下内容(从Ozi图表中取欧元的订单数据,例如,如本案例)。
这不可能,袋鼠的问价不可能高于2015年欧洲美元的任何公开价格......
而所有对所选订单的检查最好在选择之后进行,用一个单独的if()子句。
这不可能,袋鼠的问价不可能高于2015年欧洲美元的任何开盘价......。
而对所选订单的所有检查应该在选择之后进行,用一个单独的if()子句。
这是正确的,它不能。这就是为什么它在1.11262的eu上发出了Bid<openPrice订单。
换句话说,你是否建议使用if(OrderSelect())检查是否存在订单,然后在嵌入的if中,我们已经将图表符号与订单符号、开盘价 等进行比较?
这是正确的,它不能。这就是为什么它在1.11262为欧盟发出了一个Bid<openPrice订单。
换句话说,你是否建议使用if(OrderSelect())检查订单,然后在嵌入的if中比较图表符号与订单符号、开盘价等?
跳来跳去是没有用的。
在一行中写选择顺序 和检查符号和魔术师,或者把它们分成3行,都没有区别。根据新建筑的变化,检查条件是分阶段的,也就是说,如果第一个条件没有得到满足,后面的条件就不会被检查。这与3条线是一样的。第一个条件得到满足,第二个条件被检查。只有当第二个条件也得到满足时,我们才会继续检查第三个条件。
问题可能是,在代码的删除部分有一个用户函数的调用,其中选择了另一个订单。
如果有任何关于与订单合作的说法,这将是我注意到的第一件事。但只有计算,没有使用任何一个用户功能。目前还不清楚到底是什么原因导致一个订单 从另一对中被选中。这就是为什么我对文档中提到的 "软件环境 "如此困惑,并且已经按照evillive 的建议重新编写了代码,准备用手鼓跳舞。下一个变态将是通过marketinfo与所需货币对的bid/ask进行强制比较。
UPD.: 问题解决了。实际上发现了一个嵌套函数,它使用自己的OrderSelect。谢谢你的想法,AlexeyVik。
我已经创建了一个EA(不是为了工作,只是为了练习)。
如果我在IF函数中设置这两个参数,如果我逐一设置,一切都会正常工作,这是代码(另外,我如何确保如果我已经有一个开放的买入订单,下一个买入订单不会开放,即使所有条件都符合)?
我已经创建了一个EA(不是为了工作,只是为了练习)。
如果我一个一个地设置它们,就能正常工作,也就是说,代码(如果我已经有一个打开的买入订单,我如何使买入订单不打开下一个,即使所有条件都正确?)
并不是说它是所有麻烦的来源,而是纯粹出于学术兴趣:为什么要同时进行OnInit()、OnDeinit(),然后突然启动()?
而对于这个问题,强烈不建议这样的比较问==MA,在历史上极少成真。那么,PC-->MA 这样的表达是什么意思呢?
至于一买一卖的权限,我们循环查看所有市场头寸,并将其与指定的标准--符号、类型、神奇数字进行比较,如果找到了所寻求的头寸,则将计数器增加1。然后,在必要时,检查这个计数器。
事情就是这样的。
并不是说这是所有问题的根源,而是纯粹出于学术兴趣:为什么同时进行OnInit()、OnDeinit(),然后突然启动()?
而对于这个问题,强烈不建议这样的比较问==MA,在历史上极少成真。那么,PC-->MA 这样的表达是什么意思呢?
至于一买一卖的权限,我们循环浏览所有市场头寸,并将其与指定的标准--符号、类型、神奇数字进行比较,如果找到所寻求的头寸,则将计数器增加1。然后我们在必要时看一下计数器。
出于 "习惯",我修复了start() )
为什么问价==MA 是一个罕见的事件? 当前的买价是否很少触及移动平均线?
在我看来,PC-->MA 是指如果之前的收盘价高于移动平均线(我还没有想出其他方法)。
因此,当我用 Ask == MA,然后 用PC-->MA 逐一启用IF功能时 ,它 工作得很好,但当我把它们结合起来时,它就不工作了!
并不是说这是所有问题的根源,而是纯粹出于学术兴趣:为什么同时进行OnInit()、OnDeinit(),然后突然启动()?
而对于这个问题,强烈不建议这样的比较问==MA,在历史上极少成真。那么,PC-->MA 这样的表达是什么意思呢?
至于一买一卖的权限,我们循环浏览所有市场头寸,并将其与指定的标准--符号、类型、神奇数字进行比较,如果找到所寻求的头寸,则将计数器增加1。然后,在必要时,检查这个计数器。
事情就是这样的。
我的理解是,PC-->MA与PC-1>MA是一样的。