[存档]任何菜鸟问题,为了不使论坛变得杂乱无章。专业人士,不要路过。没有你就无处可去 - 3. - 页 524 1...517518519520521522523524525526527528529530531...652 新评论 costy_ 2012.01.23 15:20 #5231 sss2019: 我的专家顾问在我的终端中打开了三个订单,在某些时候,它应该关闭所有三个订单,但由于某些原因,它只关闭了两个,它没有给出错误。 下面是这篇应该可以结束交易的文章 我不明白出了什么问题,为什么只有两笔交易完成。请告诉我谁知道什么。 if(OrderSelect(i, SELECT_BY_POS) == false) continue; asasusa 2012.01.23 15:24 #5232 Vinin: 以不同的方式进行循环 但这也无济于事。不重新安排循环或替代继续都没有用,好像EA没有看到自己的三个订单,而只删除了两个。 Рустам 2012.01.23 15:30 #5233 反转周期重新计算的方向 Рустам 2012.01.23 15:38 #5234 拿着它并使用它。 附加的文件: tradingfunction.mqh 43 kb asasusa 2012.01.23 15:41 #5235 有时事情是如此不可理解,根本不符合逻辑,我认为终端环境本身就有错误。 Vladyslav Goshkov 2012.01.23 17:28 #5236 sss2019: 有时事情是如此不可理解,根本不符合逻辑,我认为终端环境本身就有错误。 为了让它看起来更少,你需要从学习课本和手册开始。然后尝试在论坛上找到类似问题的解释。 Artem Boev 2012.01.23 20:23 #5237 sss2019:你如何更好地组织EA的最大缩减量,在这个时候它就会停止工作,你能不能设置一个静态变量,将损失的数额累积起来?专家顾问应该停止工作,但在重新启动或改变参数后,它将再次开始工作。 在初始化EA时,你可以在一个静态变量 中保存当前余额。在 "开始 "功能中,你可以检查目前的余额比最初的余额减少了多少百分比,如果百分比超过了允许的范围,则禁止交易。简而言之,没有任何代码。重新启动后,专家顾问将记住新的初始余额... Алексей Тарабанов 2012.01.23 20:50 #5238 MrSoros: 在初始化专家顾问时,可以将当前余额保存在一个静态变量中。而在 "开始 "功能中,检查当前余额比初始余额下滑了多少,如果百分比高于允许的水平--则禁止交易。简而言之,没有任何代码。重新启动后,专家顾问将记住新的初始余额。 你理解了这个问题吗? Роман 2012.01.23 23:51 #5239 MrSoros: 1.在初始化专家顾问时,你可以将当前的余额保存到一个静态变量中。然后,"开始 "功能检查当前余额比初始余额下降了多少百分比,如果百分比更高,交易将被禁止。简而言之,没有任何代码。 2.重新启动后,评估员将记住新的原始余额... 1.你可以。我有这个选项(有代码)--你自己初始化变量。 extern int MaxLoss = 90; // Максимально допустимая просадка в процентах от баланса int orderIndex; bool IsExpertFailed = false; bool IsExpertStopped = false; double lots; // вспомогательная переменная для расчета нового размера лота double Lots_New; // Количество лотов для новых ордеров int ticket; // Номер ордера double orderLots; // Lots double orderProfit; // Profit double Price; // Цена открытия рыночного ордера double SL; // Значение StopLoss ордера double TP; // Значение TakeProfit ордера static datetime prevtime = 0; // по ценам открытия int start() { if (IsExpertStopped) { Comment("Не удалось инициализировать советник!"); return (0); } if (IsExpertFailed) { Comment("Критическая ошибка! Советник остановлен."); return (0); } Level_new=MarketInfo(Symbol(),MODE_STOPLEVEL ); int orderCount = 0; // ------------------------------------------------Учет ордеров только ЭТОГО ЭКСПА--------------------------- int orderType; for (orderIndex = (OrdersTotal() - 1); orderIndex >= 0; orderIndex--) { if (!OrderSelect(orderIndex, SELECT_BY_POS)) continue; if ((OrderSymbol() != Symbol()) || (OrderMagicNumber() != magic)) continue; orderType = OrderType(); if ((orderType != OP_BUY) && (orderType != OP_SELL)) continue; ticket = OrderTicket( ); // Номер ордера orderLots = OrderLots(); // Lots orderProfit = OrderProfit() + OrderSwap(); // Profit Price = OrderOpenPrice(); // Цена открытия рыночного ордера SL = OrderStopLoss(); // Значение StopLoss ордера TP = OrderTakeProfit(); // Значение TakeProfit ордера if (ticket>0) // Если позиция открылась { while(OrderSelect(ticket,SELECT_BY_TICKET)==false) // Если ордер выбран { Sleep(100); } double OpenPrice=OrderOpenPrice(); } // Проверка на предельную просадку double loss = - ((orderProfit * 100.0) / AccountBalance()); if (loss > MaxLoss) { Print ("MaxLoss"); CloseAllOrders(magic); IsExpertFailed = true; return (0); } orderCount++; // считаем ордера (не больше i) } 2.不,它不会记住第一次启动该专家之前的平衡水平。将只记住变量中的当前水平 AccountBalance() ......为这个账户。 orb 2012.01.24 05:12 #5240 下午好!我之前有一个关于在Excel中正确表示报价的问题。这个问题已经得到了回答,感谢costy 。现在我有一个问题,是否有可能使(没有MQL5和dll)更多货币的数据被上传?示 意图如下,代替"...... "的是相应的日期值、收盘价值和当前期数。 我假设问题的答案将涉及对我的代码进行可能的修正。我附上专家顾问的代码,它将一个当前金融工具的收盘价数值写入文件中。 #property copyright "S.I.Shlikov" #property link "" int init() { string Name=Symbol(); int h=FileOpen(Symbol()+"-"+Period()+".csv",FILE_CSV|FILE_WRITE|FILE_READ,";"); if(h<1) { Print("Файл не найден : ", GetLastError()); return(false); } FileSeek(h, 0, SEEK_END); FileWrite(h,"Date",Name,"Period",Period()); FileClose(h); } int start() { int h=FileOpen(Symbol()+"-"+Period()+".csv",FILE_CSV|FILE_WRITE|FILE_READ,";"); if(h<1) { Print("Файл не найден : ", GetLastError()); return(false); } string Wtime=TimeToStr(TimeCurrent(),TIME_DATE|TIME_MINUTES); FileSeek(h, 0, SEEK_END); FileWrite(h,Wtime,NormalizeDouble(Close[0], Digits)); FileClose(h); return(0); } 1...517518519520521522523524525526527528529530531...652 新评论 您错过了交易机会: 免费交易应用程序 8,000+信号可供复制 探索金融市场的经济新闻 注册 登录 拉丁字符(不带空格) 密码将被发送至该邮箱 发生错误 使用 Google 登录 您同意网站政策和使用条款 如果您没有帐号,请注册 可以使用cookies登录MQL5.com网站。 请在您的浏览器中启用必要的设置,否则您将无法登录。 忘记您的登录名/密码? 使用 Google 登录
我的专家顾问在我的终端中打开了三个订单,在某些时候,它应该关闭所有三个订单,但由于某些原因,它只关闭了两个,它没有给出错误。
下面是这篇应该可以结束交易的文章
我不明白出了什么问题,为什么只有两笔交易完成。请告诉我谁知道什么。
以不同的方式进行循环
但这也无济于事。不重新安排循环或替代继续都没有用,好像EA没有看到自己的三个订单,而只删除了两个。
有时事情是如此不可理解,根本不符合逻辑,我认为终端环境本身就有错误。
你如何更好地组织EA的最大缩减量,在这个时候它就会停止工作,你能不能设置一个静态变量,将损失的数额累积起来?
专家顾问应该停止工作,但在重新启动或改变参数后,它将再次开始工作。
在初始化EA时,你可以在一个静态变量 中保存当前余额。在 "开始 "功能中,你可以检查目前的余额比最初的余额减少了多少百分比,如果百分比超过了允许的范围,则禁止交易。简而言之,没有任何代码。重新启动后,专家顾问将记住新的初始余额...
在初始化专家顾问时,可以将当前余额保存在一个静态变量中。而在 "开始 "功能中,检查当前余额比初始余额下滑了多少,如果百分比高于允许的水平--则禁止交易。简而言之,没有任何代码。重新启动后,专家顾问将记住新的初始余额。
你理解了这个问题吗?
1.在初始化专家顾问时,你可以将当前的余额保存到一个静态变量中。然后,"开始 "功能检查当前余额比初始余额下降了多少百分比,如果百分比更高,交易将被禁止。简而言之,没有任何代码。
2.重新启动后,评估员将记住新的原始余额...
1.你可以。我有这个选项(有代码)--你自己初始化变量。
2.不,它不会记住第一次启动该专家之前的平衡水平。将只记住变量中的当前水平
AccountBalance()
......为这个账户。
下午好!我之前有一个关于在Excel中正确表示报价的问题。这个问题已经得到了回答,感谢costy 。现在我有一个问题,是否有可能使(没有MQL5和dll)更多货币的数据被上传?示 意图如下,代替"...... "的是相应的日期值、收盘价值和当前期数。
我假设问题的答案将涉及对我的代码进行可能的修正。我附上专家顾问的代码,它将一个当前金融工具的收盘价数值写入文件中。