[存档!]任何菜鸟问题,为了不给论坛添乱。专业人士,不要与它擦肩而过。没有你,哪里都不能去 - 2. - 页 315 1...308309310311312313314315316317318319320321322...537 新评论 [Deleted] 2011.04.06 21:23 #3141 你知道策略测试器 对通过的次数是否有限制?我运行了测试器,在测试开始时的左下角栏上面是:0/1280(25706)。我数了一下,有25盎司--那是所有可能的组合的数量。但他完成测试时是:1088/1280(25706)。所以他只传了1088次球?前两个数字到底是什么意思? 此外,它的计算方式很奇怪......当他又增加了一个3个参数的标准时,25块并没有增加3倍,而是给了40公斤左右的东西。这是一个小故障还是我哪里错了? --- 2011.04.06 21:43 #3142 AndrejFX: 你知道策略测试器对通过的次数是否有限制?我运行了测试器,在测试开始时的左下角栏上面是:0/1280(25706)。我数了数,有25个戈比--那是所有可能的组合的数量。但他完成测试时是:1088/1280(25706)。所以他只传了1088次球?前两个数字到底是什么意思? 此外,它的计算方式很奇怪......当他又增加了一个3个参数的标准时,25块并没有增加3倍,而是给了40公斤左右的东西。这是一个小故障还是我哪里错了? 阅读手册。个人认为那里很详细。 Christoff 2011.04.06 22:39 #3143 帮忙整理一下后面的代码!!。 应该在 "TrailingStop "的距离上,从以前的蜡烛图的高位或低位,拖曳已经打开的StopLosses。一旦专家顾问启动,它只在第一笔未平仓交易中使用订单。一旦止损被触发,下一笔交易被打开,止损订单就不会被追踪。如果我理解正确,这是因为变量"ORDER_SL"没有改变,改变订单的条件没有得到满足?如果是这样,为什么以及如何纠正? 下面是尾部的代码。 int ORDER=OrdersTotal(); OrderSelect(ORDER,SELECT_BY_TICKET,MODE_TRADES); int ORDER_Type=OrderType(); double ORDER_SL=OrderStopLoss(); double Point_High=iHigh(OrderSymbol(),0,2)-TrailingStop*Point; double Point_Low=iLow(OrderSymbol(),0,2)+TrailingStop*Point; if (ORDER_Type==OP_BUY && ORDER_SL<Point_High){ OrderModify(OrderTicket(),OrderOpenPrice(),Point_High,OrderTakeProfit(),0,CLR_NONE); while(!IsTradeAllowed()) Sleep(100); } if (ORDER_Type==OP_SELL && ORDER_SL>Point_Low){ OrderModify(OrderTicket(),OrderOpenPrice(),Point_Low,OrderTakeProfit(),0,CLR_NONE); while(!IsTradeAllowed()) Sleep(100); } 以下是EA的全部内容。 附加的文件: ____4maotrailing.mq4 3 kb Alexander 2011.04.06 23:47 #3144 这个代码 int ORDER=OrdersTotal(); OrderSelect(ORDER,SELECT_BY_TICKET,MODE_TRADES); 应该放在perls中。最有趣的是,它起作用了,但只是在第一个订单的测试器中。 Artyom Trishkin 2011.04.07 00:55 #3145 Christoff:帮忙解决拖尾问题!!应该在 "TrailingStop "的距离内,从之前的蜡烛图的高点或低点的水平,拖曳已经打开的止损。启动后,专家顾问只在第一笔开仓交易中下单工作。一旦止损被触发,下一笔交易被打开,止损订单就不会被追踪。如果我理解正确,这是因为变量 "ORDER_SL "没有改变,改变订单的条件没有得到满足?如果是这样,为什么以及如何纠正?这里是拖网代码。以下是专家顾问的全部内容。在你拖曳东西之前,你需要选择它。你首先需要循环浏览终端的所有未结头寸,选择那些由专家顾问打开的头寸。在循环的每次迭代中,如果选择了所需的顺序,就直接从循环中调用你的拖网。只有在这种情况下,专家顾问所开的所有头寸才会被拖曳。大约如此。void Trailing(string sy, int mn) { int i, err, ORDER_Type, k=OrdersTotal(); double PointX, ORDER_SL, Point_High, Point_Low; if (sy=="0") sy=Symbol(); int dg=MarketInfo(sy, MODE_DIGITS); double pt=MarketInfo(sy, MODE_POINT); if(dg==5 || dg==3) PointX=pt*10; if(dg==4 || dg==2) PointX=pt; for (i=0; i<k; i++) { if (OrderSelect(i, SELECT_BY_POS)) { if (OrderSymbol()!=sy) continue; if (OrderType()>1) continue; if (OrderMagicNumber()!=mn) continue; ORDER_Type=OrderType(); ORDER_SL=OrderStopLoss(); Point_High=iHigh(OrderSymbol(),0,2)-TrailingStop*PointX; Point_Low=iLow(OrderSymbol(),0,2)+TrailingStop*PointX; if (ORDER_Type==OP_BUY) if (NormalizeDouble(Point_High-ORDER_SL,dg)>0) { OrderModify(OrderTicket(),OrderOpenPrice(),Point_High,OrderTakeProfit(),0,CLR_NONE); while(!IsTradeAllowed()) Sleep(100); } if (ORDER_Type==OP_SELL) if (NormalizeDouble(ORDER_SL-Point_Low,dg)>0) { OrderModify(OrderTicket(),OrderOpenPrice(),Point_Low,OrderTakeProfit(),0,CLR_NONE); while(!IsTradeAllowed()) Sleep(100); } } if (!OrderSelect(i, SELECT_BY_POS)) { err=GetLastError(); Print("FUNC Trailing: Ошибка выбора ордера - ", err); break; } } return; } 我没有看你的拖网代码,而是让它保持原样(尽管我也应该改变它--添加一个检查StopLevel是否被超过,或者也许是其他的东西),我只在你的拖网代码中添加了一个关于订单和正常化的循环,当比较双值 时,等等...一些有用的东西...如果你想了解它,你就会了解它 :)ZS.我没有审查过代码,我是按原样写的,所以可能有错误。这只是一个例子。现在,在你需要遍历位置的那个代码中,调用这个函数。Trailing(Symbol(), Magic); 魔数 - 在EA中设置的魔数是一个唯一的整数,这样它就可以将自己的订单与另一个EA的订单或没有魔数的手动开仓订单区分开来。 如果我们在函数调用中留下Symbol(),我们的EA所站的符号的位置将被锁定。 另外,你可以用你想搜索的货币对头寸的名称来代替Symbol()。 trave 2011.04.07 01:30 #3146 请帮助我在一台电脑的MT4终端之间 以最快的方式交换数据。 Владимир Тезис 2011.04.07 02:32 #3147 trave: 请帮助我在一台电脑的MT4终端之间以最快的方式交换数据。 如果你需要复制交易,那么这里就是复制器。如果你只是交换数据,那么你需要制作一个dll 附加的文件: kopirowshik.zip 465 kb Роман 2011.04.07 03:48 #3148 drknn: 如果你想复制交易,这里有复制器。如果你只是想交换数据,你必须制作一个dll 祝你节日快乐...:-))) Dmitry Tolmachev 2011.04.07 04:33 #3149 Vinin: 你不应该在这个论坛上发布偷来的东西。这是一条通往放逐的道路。 是在比喻的意义上,这只火鸡已经被我敲定。 Виктор 2011.04.07 08:23 #3150 Roman.: 祝你节日快乐...:-))) 弗拉基米尔,既然你已经发布了一个汇编,你肯定已经处理了这个问题。 你是否找到了一个现成的简单变体,即通过内存、Windows变量等将一个变量从终端转移到终端,而不是通过文件? 作为最后的变体,一个指标在一个终端上在线绘制 另一个终端的Close[0]线。在勾股图上,这种比较会显得非常清晰。 1...308309310311312313314315316317318319320321322...537 新评论 您错过了交易机会: 免费交易应用程序 8,000+信号可供复制 探索金融市场的经济新闻 注册 登录 拉丁字符(不带空格) 密码将被发送至该邮箱 发生错误 使用 Google 登录 您同意网站政策和使用条款 如果您没有帐号,请注册 可以使用cookies登录MQL5.com网站。 请在您的浏览器中启用必要的设置,否则您将无法登录。 忘记您的登录名/密码? 使用 Google 登录
此外,它的计算方式很奇怪......当他又增加了一个3个参数的标准时,25块并没有增加3倍,而是给了40公斤左右的东西。这是一个小故障还是我哪里错了?
你知道策略测试器对通过的次数是否有限制?我运行了测试器,在测试开始时的左下角栏上面是:0/1280(25706)。我数了数,有25个戈比--那是所有可能的组合的数量。但他完成测试时是:1088/1280(25706)。所以他只传了1088次球?前两个数字到底是什么意思?
此外,它的计算方式很奇怪......当他又增加了一个3个参数的标准时,25块并没有增加3倍,而是给了40公斤左右的东西。这是一个小故障还是我哪里错了?
帮忙整理一下后面的代码!!。
应该在 "TrailingStop "的距离上,从以前的蜡烛图的高位或低位,拖曳已经打开的StopLosses。一旦专家顾问启动,它只在第一笔未平仓交易中使用订单。一旦止损被触发,下一笔交易被打开,止损订单就不会被追踪。如果我理解正确,这是因为变量"ORDER_SL"没有改变,改变订单的条件没有得到满足?如果是这样,为什么以及如何纠正?
下面是尾部的代码。
以下是EA的全部内容。
这个代码
应该放在perls中。最有趣的是,它起作用了,但只是在第一个订单的测试器中。
帮忙解决拖尾问题!!
应该在 "TrailingStop "的距离内,从之前的蜡烛图的高点或低点的水平,拖曳已经打开的止损。启动后,专家顾问只在第一笔开仓交易中下单工作。一旦止损被触发,下一笔交易被打开,止损订单就不会被追踪。如果我理解正确,这是因为变量 "ORDER_SL "没有改变,改变订单的条件没有得到满足?如果是这样,为什么以及如何纠正?
这里是拖网代码。
以下是专家顾问的全部内容。
在你拖曳东西之前,你需要选择它。你首先需要循环浏览终端的所有未结头寸,选择那些由专家顾问打开的头寸。在循环的每次迭代中,如果选择了所需的顺序,就直接从循环中调用你的拖网。只有在这种情况下,专家顾问所开的所有头寸才会被拖曳。
大约如此。
我没有看你的拖网代码,而是让它保持原样(尽管我也应该改变它--添加一个检查StopLevel是否被超过,或者也许是其他的东西),我只在你的拖网代码中添加了一个关于订单和正常化的循环,当比较双值 时,等等...一些有用的东西...如果你想了解它,你就会了解它 :)
ZS.我没有审查过代码,我是按原样写的,所以可能有错误。这只是一个例子。
现在,在你需要遍历位置的那个代码中,调用这个函数。
Trailing(Symbol(), Magic);魔数 - 在EA中设置的魔数是一个唯一的整数,这样它就可以将自己的订单与另一个EA的订单或没有魔数的手动开仓订单区分开来。如果我们在函数调用中留下Symbol(),我们的EA所站的符号的位置将被锁定。
另外,你可以用你想搜索的货币对头寸的名称来代替Symbol()。
请帮助我在一台电脑的MT4终端之间以最快的方式交换数据。
如果你需要复制交易,那么这里就是复制器。如果你只是交换数据,那么你需要制作一个dll
如果你想复制交易,这里有复制器。如果你只是想交换数据,你必须制作一个dll
祝你节日快乐...:-)))
你不应该在这个论坛上发布偷来的东西。这是一条通往放逐的道路。
是在比喻的意义上,这只火鸡已经被我敲定。
祝你节日快乐...:-)))
你是否找到了一个现成的简单变体,即通过内存、Windows变量等将一个变量从终端转移到终端,而不是通过文件?
作为最后的变体,一个指标在一个终端上在线绘制 另一个终端的Close[0]线。在勾股图上,这种比较会显得非常清晰。