来自一个 "傻瓜 "的问题 - 页 33 1...262728293031323334353637383940...277 新评论 Anatoli Kazharski 2011.07.26 14:31 #321 Renat: i>=0 谢谢你。我很惭愧))。很多时候我在mql4中使用这个枚举,在这么简单的事情上犯了一个错误。 Anatoli Kazharski 2011.07.27 00:39 #322 不可能选择一个位置。比如说。 double Stop_Loss = NormalizeDouble(OrderGetDouble(ORDER_SL),_Digits); double Open_Price = NormalizeDouble(OrderGetDouble(ORDER_PRICE_OPEN),_Digits); double Amount_Risk = 0.0; for(count = PositionsTotal()-1; count >= 0; count--) { if(PositionSelect(SymbolName(count,true))) { int tp_pos; tp_pos = (ENUM_ORDER_TYPE)PositionGetInteger(POSITION_TYPE); if(tp_pos == ORDER_TYPE_BUY || tp_pos == ORDER_TYPE_SELL) { Amount_Risk = MathAbs(Open_Price - Stop_Loss); Print("PositionTotal(): ",PositionsTotal(), " Amount_Risk: ",Amount_Risk); } if(GetLastError() != 0) Print(ErrorDescription(GetLastError()),", ",GetLastError()); } }记录本上有一个错误。如何正确操作? Документация по MQL5: Торговые функции / PositionSelect www.mql5.com Торговые функции / PositionSelect - Документация по MQL5 Rashid Umarov 2011.07.27 08:55 #323 tol64:不可能选择一个位置。比如说。先纠正错误,不要混淆订单类型和位置类型。 tp_pos = (ENUM_POSITION_TYPE)PositionGetInteger(POSITION_TYPE); Vladimir Kustikov 2011.07.27 09:42 #324 tol64:不可能选择一个位置。比如说。记录本上有一个错误。如何正确操作?如果你问你哪里弄错了,那就更容易了......。为了使其发挥作用,该结构if(PositionSelect(SymbolName(count,true)))应替换为。如果(PositionSelect(PositionGetSymbol(count)))而且你还混淆了ENUM_ORDER_TYPE 和 ENUM_POSITION_TYPE。 Anatoli Kazharski 2011.07.27 13:28 #325 Rosh:先纠正错误,不要混淆订单类型和位置类型。弗拉迪克斯。你要问哪里没有错,那就更容易了......。 谢谢你,我为我真正的严重错误道歉。这是一个暂时的现象,这种误解很快就会过去)。 Andrian22 2011.07.27 15:11 #326 请告知如何解决这个问题。我正在两台电脑上为MT5开发专家顾问、库和指标。什么是最简单的方法来组织从一台计算机到另一台计算机的发展转移,最好是自动同步。即自动采取最新鲜的文件并进行复制。计算机都在同一个网络上。有一个共享文件夹,它是通过互联网共享的。 TheXpert 2011.07.27 15:17 #327 使用VCS Andrian22 2011.07.27 15:44 #328 TheXpert: 使用VCS 我没有指定Windows7电脑。最难的部分是弄清楚它如何在文件系统中堆放文件。在XP系统中,一切都很清楚,有一个目录,所有东西都在里面,但在这里,所有东西都是分散的。 Andrew Petras 2011.07.27 17:08 #329 Andrian22: 我没有指定Windows7电脑。最难的部分是弄清楚它如何在文件系统中堆放文件。在XP系统中,一切都很清楚,有一个目录,所有东西都在那里,但在这里,所有东西都是分散的。 参见帮助 - 入门 -终端启动- "访客模式"(使用/portable开关)。 Anatoli Kazharski 2011.07.27 19:00 #330 Vladix:如果你问你在哪里得到了正确的答案,那就更容易了......为了使其发挥作用,该结构if(PositionSelect(SymbolName(count,true)))应替换为。如果(PositionSelect(PositionGetSymbol(count)))我看了看不同的变体,发现它们在最终结果上都是一样的。也就是说,这些选项中的每一个。 if(PositionSelect(Symbol())) if(PositionSelect(PositionGetSymbol(count))) if(PositionSelect(SymbolName(count,true)))...将返回相同的结果。而在我的案例中,它没有以任何方式影响结果)))完成了剧本。//+------------------------------------------------------------------+ //| Script program start function | //+------------------------------------------------------------------+ void OnStart() { for(int count = 0; count < PositionsTotal(); count++) { double Amount_Risk = 0.0; string Type_pos; if(PositionSelect(Symbol())) //if(PositionSelect(PositionGetSymbol(count))) //if(PositionSelect(SymbolName(count,true))) { int tp_pos = (ENUM_POSITION_TYPE)PositionGetInteger(POSITION_TYPE); string Symbol_pos = PositionGetSymbol(count); double Acc_Blnc = AccountInfoDouble(ACCOUNT_BALANCE); double Order_Lots = PositionGetDouble(POSITION_VOLUME); double Stop_Loss = NormalizeDouble(PositionGetDouble(POSITION_SL),_Digits); double Open_Price = NormalizeDouble(PositionGetDouble(POSITION_PRICE_OPEN),_Digits); switch(tp_pos) { case 0 : Type_pos = "LONG"; break; case 1 : Type_pos = "SHORT"; break; } Amount_Risk += MathAbs(((((Open_Price - Stop_Loss)*10000)*(Order_Lots*10))/Acc_Blnc)*100); Print("PositionTotal(): ",PositionsTotal(),", Symbol: ",Symbol_pos,", Position: ",Type_pos,", Amount_Risk: ",DoubleToString(Amount_Risk,2),"%"); if(GetLastError() != 0) Print(ErrorDescription(GetLastError()),", ",GetLastError()); ResetLastError(); } } }现在一切工作都正常了。上面提到的变体被注释出来,你可以进行比较。结果在日志中总是一样的。 1...262728293031323334353637383940...277 新评论 您错过了交易机会: 免费交易应用程序 8,000+信号可供复制 探索金融市场的经济新闻 注册 登录 拉丁字符(不带空格) 密码将被发送至该邮箱 发生错误 使用 Google 登录 您同意网站政策和使用条款 如果您没有帐号,请注册 可以使用cookies登录MQL5.com网站。 请在您的浏览器中启用必要的设置,否则您将无法登录。 忘记您的登录名/密码? 使用 Google 登录
i>=0
不可能选择一个位置。比如说。
记录本上有一个错误。
如何正确操作?
不可能选择一个位置。比如说。
先纠正错误,不要混淆订单类型和位置类型。
不可能选择一个位置。比如说。
记录本上有一个错误。
如何正确操作?
如果你问你哪里弄错了,那就更容易了......。
为了使其发挥作用,该结构
if(PositionSelect(SymbolName(count,true)))应替换为。
如果(PositionSelect(PositionGetSymbol(count)))
而且你还混淆了ENUM_ORDER_TYPE 和 ENUM_POSITION_TYPE。
先纠正错误,不要混淆订单类型和位置类型。
弗拉迪克斯。
你要问哪里没有错,那就更容易了......。
请告知如何解决这个问题。
我正在两台电脑上为MT5开发专家顾问、库和指标。
什么是最简单的方法来组织从一台计算机到另一台计算机的发展转移,最好是自动同步。即自动采取最新鲜的文件并进行复制。
计算机都在同一个网络上。有一个共享文件夹,它是通过互联网共享的。
使用VCS
我没有指定Windows7电脑。最难的部分是弄清楚它如何在文件系统中堆放文件。在XP系统中,一切都很清楚,有一个目录,所有东西都在那里,但在这里,所有东西都是分散的。
如果你问你在哪里得到了正确的答案,那就更容易了......
为了使其发挥作用,该结构
if(PositionSelect(SymbolName(count,true)))应替换为。
如果(PositionSelect(PositionGetSymbol(count)))
我看了看不同的变体,发现它们在最终结果上都是一样的。也就是说,这些选项中的每一个。
...将返回相同的结果。
而在我的案例中,它没有以任何方式影响结果)))完成了剧本。
现在一切工作都正常了。上面提到的变体被注释出来,你可以进行比较。结果在日志中总是一样的。