[存档!]任何菜鸟问题,为了不给论坛添乱。专业人士,不要与它擦肩而过。没有你,哪里都不能去 - 2. - 页 56 1...495051525354555657585960616263...537 新评论 Владимир Тезис 2011.02.04 12:04 #551 Sergstuddek: (班级很好,但仍有一个问题)) 我在理论上理解它,但在实践中它不工作,你能看一下我的代码并告诉我哪里有问题吗? 我知道这是一个非常简单的EA,但我刚刚开始我的旅程)))),我已经有一个问题了 // 专家顾问的本质是,首先它打开了第一个买入订单。 // 然后在两个方向上放置止动器 //在一边作为一个开放订单的延续 //在图表反转的情况下,在另一边再做两次 //止损与顾问最后开出的订单有关。 //每开出一个新的挂单,以前的挂单都会被删除。 //和新的挂单止损已经相对于新的未平仓订单开放。 止损可以理解为两件事--止损单(Take Profit和Stop Loss)和止损单(Bystop和Sell Stop)。这里的 "停止 "是什么意思,可能只有你明白。请准确地使用术语。计算机必须得到精确的指令。描述也必须尽可能的精确 [删除] 2011.02.04 12:41 #552 drknn: 止损可以理解为两件事--止损单(Take Profit和Stop Loss)和止损单(Bystop和Sell Stop)。这里的 "停止 "是什么意思,可能只有你明白。请准确地使用术语。你必须向计算机发出精确的指令。描述也必须尽可能的精确 我很抱歉有不准确的地方,但止损单是止损单(买入止损和卖出止损)。 Владимир Тезис 2011.02.04 13:02 #553 Sergstuddek: 我为不准确之处道歉:我是指止损单(买入止损和卖出止损)。void DeleteStopOrders() { int res; for(int i=0;i<OrdersTotal();i++) { if(OrderSelect(i,SELECT_BY_POS,MODE_TRADES)==false) break; if(OrderSymbol()==Symbol() && OrderMagicNumber()==MAGIC) { if(OrderType()==OP_SELLSTOP) res=OrderDelete(OrderTicket()); if(OrderType()==OP_BUYSTOP) res=OrderDelete(OrderTicket()); } } } 这个函数写得不对。订单应在订单列表中从最后一个到第一个进行搜索。你的方法将导致1个订单被跳过,因为在它被删除后,订单列表将按其位置移动。该环路应组织如下。 for (int i=OrdersTotal()-1;i>=0;i--){ 此外,如果订单未被选中,你不需要进行突破--你不需要退出循环--你需要找出订单未被选中的原因。具体情况如下。 if (!OrderSelect(i,SELECT_BY_POS,MODE_TRADES)) { Print("При выборе ордера № ",i," произошла ошибка № ",GetLastError()); res=OrderDelete(OrderTicket()); - 这也不够正确。OrderDelete()函数有一个布尔类型。而在下达删除订单的同时,我们还需要处理订单不能被删除的情况。换句话说,它是这样的。 res=OrderDelete(OrderTicket()); if(!res){ Print("Ордер № ",OrderTicket()," удалить не получилось - ошибка № ",GetLastError()); } 我以后再看其他的。 Владимир Тезис 2011.02.04 13:07 #554 //+------------------------------------------------------------------+ //| expert start function | //+------------------------------------------------------------------+ int start() { //---- if (CalculateCurrentOrders1(Symbol())==0) OpenBuy(); if (CalculateCurrentOrders2(Symbol())<=1) DeleteStopOrders(); if (CalculateCurrentOrders2(Symbol())<=1) OpenStops(); //---- return(0); } 启动功能代码书写不正确。 通过第一个功能,你把买入和卖出的订单加起来。你需要分别计算买入订单和卖出订单。问题就在这里。如果市场上有1个买单,那么买入的止损点应该设置为较大的手数。对吗?如果市场上有卖单,那么买入止损应该设置为正常手数,卖出止损应该设置为较大手数。如果你在一个函数中把买入和卖出的订单相加,你如何检测哪个订单在市场上是开放的?试着根据这些事实重做代码。 _Dude_ 2011.02.04 14:00 #555 你能告诉我如何从经纪人那里自动下载历史记录吗?压在家里一个小时,有点不方便。 Виктор 2011.02.04 14:05 #556 _dude_: 你能告诉我如何从经纪人那里自动下载历史记录吗?压在家里一个小时,有点不方便。 瓦迪姆-顺子已经为你解决了这个问题。加载历史记录的脚本。在基地(脚本部分)还有一些。 Victor Nikolaev 2011.02.04 18:05 #557 gince: 关于该指标的问题。 该指标是一个交叉指标。它把很多箭头引向一边,然后又有很多箭头引向另一边。如何做到只抽到第一批的人。我已经按照代码中描述的方式进行了尝试,但当我切换框架时,箭头会发生变化。 请告知如何正确操作。 我必须看一下这个指标。也许有一个解决方案 Victor Nikolaev 2011.02.04 18:31 #558 nemo811: 请帮助我纠正我的专家顾问。你需要让它与安装了它的图表上的货币对的订单(用户自己的和打开的)一起工作。我们指的是确定利润或损失的时间。在目前的版本中,当一个条件(抓住存款%)发生时,它试图关闭所有货币对的所有头寸(MAGIC=0),我不需要它。有必要完全划定所有货币对的界限。我提前表示感谢。 在不同的留言板上也要做同样的事情--这就是垃圾邮件,你可能会被禁言。 Артур 2011.02.04 18:38 #559 Vinin: 在不同的主题中写同样的东西--这是垃圾信息,会被禁言。 我很抱歉--和以往一样,我想一次做完所有事情)) Артур 2011.02.04 19:35 #560 谢谢你的关注和理解 )) 能够自己解决这个问题。 插入了一个棘手的行 如果(OrderSymbol()!=SMB || OrderMagicNumber()!=MAGIC) 继续。 到一个同样棘手的地方。在那之后,一切都按计划进行。 谢谢你对魔术师的提示。我不是一个程序员,所以有时和没有想到的东西,因为缺乏知识。 1...495051525354555657585960616263...537 新评论 您错过了交易机会: 免费交易应用程序 8,000+信号可供复制 探索金融市场的经济新闻 注册 登录 拉丁字符(不带空格) 密码将被发送至该邮箱 发生错误 使用 Google 登录 您同意网站政策和使用条款 如果您没有帐号,请注册 可以使用cookies登录MQL5.com网站。 请在您的浏览器中启用必要的设置,否则您将无法登录。 忘记您的登录名/密码? 使用 Google 登录
(班级很好,但仍有一个问题))
我在理论上理解它,但在实践中它不工作,你能看一下我的代码并告诉我哪里有问题吗?
我知道这是一个非常简单的EA,但我刚刚开始我的旅程)))),我已经有一个问题了
// 专家顾问的本质是,首先它打开了第一个买入订单。
// 然后在两个方向上放置止动器
//在一边作为一个开放订单的延续
//在图表反转的情况下,在另一边再做两次
//止损与顾问最后开出的订单有关。
//每开出一个新的挂单,以前的挂单都会被删除。
//和新的挂单止损已经相对于新的未平仓订单开放。
止损可以理解为两件事--止损单(Take Profit和Stop Loss)和止损单(Bystop和Sell Stop)。这里的 "停止 "是什么意思,可能只有你明白。请准确地使用术语。你必须向计算机发出精确的指令。描述也必须尽可能的精确
我很抱歉有不准确的地方,但止损单是止损单(买入止损和卖出止损)。
我为不准确之处道歉:我是指止损单(买入止损和卖出止损)。
这个函数写得不对。订单应在订单列表中从最后一个到第一个进行搜索。你的方法将导致1个订单被跳过,因为在它被删除后,订单列表将按其位置移动。该环路应组织如下。
此外,如果订单未被选中,你不需要进行突破--你不需要退出循环--你需要找出订单未被选中的原因。具体情况如下。
res=OrderDelete(OrderTicket()); - 这也不够正确。OrderDelete()函数有一个布尔类型。而在下达删除订单的同时,我们还需要处理订单不能被删除的情况。换句话说,它是这样的。
我以后再看其他的。
启动功能代码书写不正确。
通过第一个功能,你把买入和卖出的订单加起来。你需要分别计算买入订单和卖出订单。问题就在这里。如果市场上有1个买单,那么买入的止损点应该设置为较大的手数。对吗?如果市场上有卖单,那么买入止损应该设置为正常手数,卖出止损应该设置为较大手数。如果你在一个函数中把买入和卖出的订单相加,你如何检测哪个订单在市场上是开放的?试着根据这些事实重做代码。
你能告诉我如何从经纪人那里自动下载历史记录吗?压在家里一个小时,有点不方便。
你能告诉我如何从经纪人那里自动下载历史记录吗?压在家里一个小时,有点不方便。
关于该指标的问题。
该指标是一个交叉指标。它把很多箭头引向一边,然后又有很多箭头引向另一边。如何做到只抽到第一批的人。我已经按照代码中描述的方式进行了尝试,但当我切换框架时,箭头会发生变化。
请告知如何正确操作。
我必须看一下这个指标。也许有一个解决方案
请帮助我纠正我的专家顾问。你需要让它与安装了它的图表上的货币对的订单(用户自己的和打开的)一起工作。我们指的是确定利润或损失的时间。在目前的版本中,当一个条件(抓住存款%)发生时,它试图关闭所有货币对的所有头寸(MAGIC=0),我不需要它。有必要完全划定所有货币对的界限。我提前表示感谢。
在不同的留言板上也要做同样的事情--这就是垃圾邮件,你可能会被禁言。
在不同的主题中写同样的东西--这是垃圾信息,会被禁言。
我很抱歉--和以往一样,我想一次做完所有事情))
谢谢你的关注和理解 ))
能够自己解决这个问题。
插入了一个棘手的行 如果(OrderSymbol()!=SMB || OrderMagicNumber()!=MAGIC) 继续。
到一个同样棘手的地方。在那之后,一切都按计划进行。
谢谢你对魔术师的提示。我不是一个程序员,所以有时和没有想到的东西,因为缺乏知识。