任何菜鸟问题,为了不给论坛添乱。专业人士,不要路过。没有你就无处可去 - 6. - 页 65 1...585960616263646566676869707172...1178 新评论 Mepkypuu 2013.08.04 17:59 #641 祝大家今天愉快如果我试图在拖网上设置止损,在策略测试器中就会失效,但我从未失去过一个。在策略测试器中,当EA应该设置止损时,它没有这样做,但有时会这样做,但我没有发现任何规律性,测试的准确性受到很大影响。演示存款上的同一专家顾问显示,拖网工作。终端没有报告任何错误。这是代码的错误还是终端的错误?你能帮助我理解它吗?我已经尝试了所有的代码,不明白哪里出了问题,我不想改变跟踪策略。我附上了专家顾问的完整代码,下面是trawl的代码(由Yury Dzyuban 略加修改的烛台影子上的追踪)。 void TrailingByShadows(int ticket,int tmfrm,int bars_n, int indent) { int i; double new_extremum; if ((bars_n<1) || (indent<0) || (ticket==0) || ((tmfrm!=1) && (tmfrm!=5) && (tmfrm!=15) && (tmfrm!=30) && (tmfrm!=60) && (tmfrm!=240) && (tmfrm!=1440) && (tmfrm!=10080) && (tmfrm!=43200)) || (!OrderSelect(ticket,SELECT_BY_TICKET))) { Print("Трейлинг функцией TrailingByShadows() невозможен из-за некорректности значений переданных ей аргументов."); return(0); } if (OrderType()==OP_BUY) { for(i=1;i<=bars_n;i++) { if (i==1) new_extremum = iLow(Symbol(),tmfrm,i); else if (new_extremum>iLow(Symbol(),tmfrm,i)) new_extremum = iLow(Symbol(),tmfrm,i); } if ((((new_extremum - indent*Point)>OrderStopLoss() + 1.0 * Point) || (OrderStopLoss()==0)) && ((new_extremum - indent*Point)>OrderOpenPrice()) && (new_extremum - indent*Point<Bid-MarketInfo(Symbol(),MODE_STOPLEVEL)*Point) && (getLots(new_extremum) > 0)) if (!OrderModify(ticket,OrderOpenPrice(),new_extremum-indent*Point,OrderTakeProfit(),OrderExpiration())) Print("Не удалось модифицировать ордер №",OrderTicket(),". Ошибка: ",GetLastError()); } if (OrderType()==OP_SELL) { for(i=1;i<=bars_n;i++) { if (i==1) new_extremum = iHigh(Symbol(),tmfrm,i); else if (new_extremum<iHigh(Symbol(),tmfrm,i)) new_extremum = iHigh(Symbol(),tmfrm,i); } if ((((new_extremum + (indent + MarketInfo(Symbol(),MODE_SPREAD))*Point)<OrderStopLoss() - 1.0 * Point) || (OrderStopLoss()==0)) && ((new_extremum + (indent + MarketInfo(Symbol(),MODE_SPREAD))*Point)<OrderOpenPrice()) && (new_extremum + (indent + MarketInfo(Symbol(),MODE_SPREAD))*Point>Ask+MarketInfo(Symbol(),MODE_STOPLEVEL)*Point) && (getLots(new_extremum) > 0)) if (!OrderModify(ticket,OrderOpenPrice(),new_extremum + (indent + MarketInfo(Symbol(),MODE_SPREAD))*Point,OrderTakeProfit(),OrderExpiration())) Print("Не удалось модифицировать ордер №",OrderTicket(),". Ошибка: ",GetLastError()); } } double getLots(double newSL) { int opnTime = 0; // время открытия трейда для цикла пересчета позиций double lotSum = 0; for (int i = 0; i <= OrdersTotal()-1; i++) { OrderSelect(i, SELECT_BY_POS); if ((OrderOpenTime() > opnTime) && (OrderType() == OP_BUY) || (OrderType() == OP_SELL)) { opnTime = OrderOpenTime(); if (OrderType() == OP_BUY) { lotSum += OrderLots() * (newSL - OrderOpenPrice()) / Point; } if (OrderType() == OP_SELL) { lotSum -= OrderLots() * (newSL - OrderOpenPrice()) / Point; } } } return(lotSum); } 附加的文件: avalanche.mq4 12 kb Alexander 2013.08.04 22:12 #642 你在什么时间范围内测试,质量如何? Mepkypuu 2013.08.05 01:29 #643 eurusd,m1,99%,90%。 起初我使用标准的tick历史,用MT加载,我发现了这个问题,以及报价历史中无法解释的差距,所以我已经切换到Tick Data Suite,我从Dukascopy下载报价,质量从90增加到99,但问题仍然存在。 ZS: 可能在现实生活中也有同样的情况,或者我测试的时间不够长(大约3周),在此期间我不得不手动关闭几次,因为没有安装trawl,但我认为这是因为我不得不定期断开终端机器的连接,这在某种程度上影响了EA的运行,最近也许在一周前将其转移到VPS,现在似乎也出现了同样情况 keekkenen 2013.08.05 01:50 #644 测试是在一个等于tmfrm变量值的时间框架上进行的,还是没有? 如果没有,你应该确保在tmfrm时间框架上有一个历史记录... 和变量bar_n中传送的坦克数量对应于变量tmfrm中传送的时间框架 ? Mepkypuu 2013.08.05 03:03 #645 keekkenen:测试是在一个等于tmfrm变量值的时间框架上进行的,还是没有?如果没有,你应该确保在tmfrm时间框架上有一个历史记录...和变量bar_n中传递的坦克数量对应于变量tmfrm中传递的时间框架 ? 是的,我想你是对的,我忽略了别人函数的代码,没有深入研究,没有考虑到这个参数。因此,止损 被设定为一个不同的时期。谢谢你的帮助。 ZS:事情总是这样:一些小事使代码不能按我希望的方式工作。 Boris 2013.08.05 05:40 #646 下午好!谁知道记录本上的红砖到底是怎么回事? 2013.08.05 08:00:41 '9291791': 信号 - 未找到更新信号 - 基准中的7400 我的代码没有任何问题!而且还有信号!这意味着什么呢? Mepkypuu 2013.08.05 06:04 #647 Mepkypuu: 是的,看来你是对的,我忽略了别人的函数代码,没有详细研究,没有考虑到这个参数。因此,止损被设定为一个不同的时期。谢谢你的帮助。 ZS:总是这样:一些小事使代码不能按我希望的方式工作。 我对它高兴得太早了,跟踪已经开始工作得更好了,但在历史上仍有不工作的情况,也就是说,问题只是部分地解决了。 Leo59 2013.08.05 10:23 #648 splxgf: 因为在运行过程中采取的是当前的点差,但在新闻和晚间,它与每日点差不同。 你如何解决传播问题?毕竟,OrderSend 指定的是Ask或Bid。 Alexander 2013.08.05 12:57 #649 Mepkypuu: 我对它还不满意,拖尾的效果比较好,但仍有不工作的情况,也就是说,问题只是部分解决了。 你所说的尾随并不是真正的尾随,它是以不同的方式计算的,其行为可能是不符合逻辑的。 Boris 2013.08.05 15:00 #650 Leo59: 如何才能解决差价问题?毕竟,OrderSend指定的是Ask或Bid。 在测试器下的TF! 1...585960616263646566676869707172...1178 新评论 您错过了交易机会: 免费交易应用程序 8,000+信号可供复制 探索金融市场的经济新闻 注册 登录 拉丁字符(不带空格) 密码将被发送至该邮箱 发生错误 使用 Google 登录 您同意网站政策和使用条款 如果您没有帐号,请注册 可以使用cookies登录MQL5.com网站。 请在您的浏览器中启用必要的设置,否则您将无法登录。 忘记您的登录名/密码? 使用 Google 登录
祝大家今天愉快如果我试图在拖网上设置止损,在策略测试器中就会失效,但我从未失去过一个。在策略测试器中,当EA应该设置止损时,它没有这样做,但有时会这样做,但我没有发现任何规律性,测试的准确性受到很大影响。演示存款上的同一专家顾问显示,拖网工作。终端没有报告任何错误。这是代码的错误还是终端的错误?你能帮助我理解它吗?我已经尝试了所有的代码,不明白哪里出了问题,我不想改变跟踪策略。我附上了专家顾问的完整代码,下面是trawl的代码(由Yury Dzyuban 略加修改的烛台影子上的追踪)。
eurusd,m1,99%,90%。
起初我使用标准的tick历史,用MT加载,我发现了这个问题,以及报价历史中无法解释的差距,所以我已经切换到Tick Data Suite,我从Dukascopy下载报价,质量从90增加到99,但问题仍然存在。
ZS: 可能在现实生活中也有同样的情况,或者我测试的时间不够长(大约3周),在此期间我不得不手动关闭几次,因为没有安装trawl,但我认为这是因为我不得不定期断开终端机器的连接,这在某种程度上影响了EA的运行,最近也许在一周前将其转移到VPS,现在似乎也出现了同样情况
测试是在一个等于tmfrm变量值的时间框架上进行的,还是没有?
如果没有,你应该确保在tmfrm时间框架上有一个历史记录...
和变量bar_n中传送的坦克数量对应于变量tmfrm中传送的时间框架 ?
测试是在一个等于tmfrm变量值的时间框架上进行的,还是没有?
如果没有,你应该确保在tmfrm时间框架上有一个历史记录...
和变量bar_n中传递的坦克数量对应于变量tmfrm中传递的时间框架 ?
是的,我想你是对的,我忽略了别人函数的代码,没有深入研究,没有考虑到这个参数。因此,止损 被设定为一个不同的时期。谢谢你的帮助。
ZS:事情总是这样:一些小事使代码不能按我希望的方式工作。
下午好!谁知道记录本上的红砖到底是怎么回事?
2013.08.05 08:00:41 '9291791': 信号 - 未找到更新信号 - 基准中的7400
我的代码没有任何问题!而且还有信号!这意味着什么呢?
是的,看来你是对的,我忽略了别人的函数代码,没有详细研究,没有考虑到这个参数。因此,止损被设定为一个不同的时期。谢谢你的帮助。
ZS:总是这样:一些小事使代码不能按我希望的方式工作。
我对它高兴得太早了,跟踪已经开始工作得更好了,但在历史上仍有不工作的情况,也就是说,问题只是部分地解决了。
因为在运行过程中采取的是当前的点差,但在新闻和晚间,它与每日点差不同。
你如何解决传播问题?毕竟,OrderSend 指定的是Ask或Bid。
我对它还不满意,拖尾的效果比较好,但仍有不工作的情况,也就是说,问题只是部分解决了。
你所说的尾随并不是真正的尾随,它是以不同的方式计算的,其行为可能是不符合逻辑的。
如何才能解决差价问题?毕竟,OrderSend指定的是Ask或Bid。