新人对MQL4和MQL5的任何问题,对算法和代码的帮助和讨论 - 页 979 1...972973974975976977978979980981982983984985986...1953 新评论 Artyom Trishkin 2019.10.06 13:01 #9781 Rustam Bikbulatov: 你好,我需要一些建议。为什么我的最后一条短信没有显示?这里有什么问题吗?你能告诉我如何修复它吗? 如果你在任何时候都只取一个对象的名字,你为什么需要一个循环? for(int no1=0; no1<ObjectsTotal(OBJ_TEXT); no1++) { if(ObjectName(0)=="Profit1"+iBarShift(NULL,1440,0)) { double name; name = ObjectDescription(0);; Comment(name); } } Artyom Trishkin 2019.10.06 13:02 #9782 Iurii Tokman: no1<=ObjectsTotal(OBJ_TEXT); 你不能完全这样做--它将超出数组的范围。如果有10个对象,最后一个对象的索引将是9。因为它是从零开始计算的。 Rustam Bikbulatov 2019.10.06 13:14 #9783 Artyom Trishkin: 如果你一次只取一个对象的名字,为什么要有一个循环? 告诉我到底如何确定这个对象的倒数第二个文本。 Artyom Trishkin 2019.10.06 13:15 #9784 Rustam Bikbulatov: 告诉我到底如何确定这个对象的倒数第二个文本。 很难知道自己想要什么。 Rustam Bikbulatov 2019.10.06 13:23 #9785 void Profit() { ObjectCreate("Profit"+iBarShift(NULL,1440,0),OBJ_TEXT,1,TimeCurrent(),0.6); ObjectSetText("Profit"+iBarShift(NULL,1440,0),DoubleToStr(AccountProfit(),2),11,"Arial",clrWhite); ObjectSetInteger(0,"Profit"+iBarShift(NULL,1440,0),OBJPROP_ANCHOR,ANCHOR_RIGHT_LOWER); return; } void Profit1() { double Prof = ObjectDescription("Profit1"+iBarShift(NULL,1440,0)); double P = -Prof; ObjectCreate("Profit1"+iBarShift(NULL,1440,0),OBJ_TEXT,1,TimeCurrent(),0.1); ObjectSetText("Profit1"+iBarShift(NULL,1440,0),DoubleToStr(MathMax(-AccountProfit(),-P),1),11,"Arial",clrWhite); ObjectSetInteger(0,"Profit1"+iBarShift(NULL,1440,0),OBJPROP_ANCHOR,ANCHOR_RIGHT_LOWER); return; } void Profit2() { ObjectCreate("Profit2"+iBarShift(NULL,1440,0),OBJ_TEXT,1,TimeCurrent(),-0.4); ObjectSetText("Profit2"+iBarShift(NULL,1440,0),iBarShift(NULL,1440,0)-1000,11,"Arial",clrWhite); ObjectSetInteger(0,"Profit2"+iBarShift(NULL,1440,0),OBJPROP_ANCHOR,ANCHOR_RIGHT_LOWER); return; } void Profit3() { for(int no1=0; no1<=ObjectsTotal(OBJ_TEXT); no1++) { if(ObjectFind(1,"Profit2"+iBarShift(NULL,1440,0))!=0) { string obj_name; obj_name = ObjectName(3); string name; name = ObjectDescription(obj_name); Comment(obj_name); } } ObjectCreate("Profit3"+iBarShift(NULL,1440,0),OBJ_TEXT,1,TimeCurrent(),-0.9); ObjectSetText("Profit3"+iBarShift(NULL,1440,0),DoubleToStr(name,1),11,"Arial",clrWhite); ObjectSetInteger(0,"Profit3"+iBarShift(NULL,1440,0),OBJPROP_ANCHOR,ANCHOR_RIGHT_LOWER); return; } Provit - 显示白天测试期间的总利润 Provit1 - 显示当天的最大缩减量 Provit2 - 从1开始的正常数字行 普罗维特3--目标!将Provit1相加,除以Provit2。我想知道测试总时间内的平均每日缩减量。 帮助理解Provit3 Roman Shiredchenko 2019.10.08 04:55 #9786 同事们--这个接近的错误可能是什么,如何处理?以下是代码,当利润被超过时--关闭所有单向头寸。 谢谢你。 // ЗАКРЫВАЕМ ВИРТУАЛЬНЫЕ ТР БАЙ позы if(takeprofit < ProfitB) { Print(" ЗАКРЫТИЕ BUY POSITIONS. общий ProfitB = ", ProfitB," мин общий takeprofit buys positions = ", takeprofit); for (i=OrdersTotal()-1; i>=0; i--) if (OrderSelect(i,SELECT_BY_POS,MODE_TRADES)) if (OrderSymbol()==Symbol() && Magic_Прямой==OrderMagicNumber()) { if(OrderType()==OP_BUY) //if(OrderOpenPrice()+takeprofit*Point<=MarketInfo(Symbol(),MODE_BID) || // OrderOpenPrice()-stoploss*Point>=MarketInfo(Symbol(),MODE_BID)) if (OrderClose(OrderTicket(),OrderLots(),MarketInfo(Symbol(),MODE_BID),NormalizeDouble(MarketInfo(Symbol(),MODE_SPREAD)*2,Digits()),clrGray)) Print(" закрытие бай, тикет = ", OrderTicket()); else Print(" ошибка закрытия бай, Error = ", GetLastError()); } } if(takeprofit < ProfitS) { Print(" ЗАКРЫТИЕ СЕЛЛов. общий ProfitS = ", ProfitS," мин общий takeprofit СЕЛЛов = ", takeprofit); for (i=OrdersTotal()-1; i>=0; i--) if (OrderSelect(i,SELECT_BY_POS,MODE_TRADES)) if (OrderSymbol()==Symbol() && Magic_Прямой==OrderMagicNumber()) { if(OrderType()==OP_SELL) // if(OrderOpenPrice()-takeprofit*Point>=MarketInfo(Symbol(),MODE_ASK) || // OrderOpenPrice()+stoploss *Point<=MarketInfo(Symbol(),MODE_ASK)) if (OrderClose(OrderTicket(),OrderLots(),MarketInfo(Symbol(),MODE_ASK),NormalizeDouble(MarketInfo(Symbol(),MODE_SPREAD)*2,Digits()),clrGray)) Print(" закрытие SELL, тикет = ", OrderTicket()); else Print(" ошибка закрытия sell, Error = ", GetLastError()); } } Igor Makanu 2019.10.08 07:38 #9787 Roman Shiredchenko: 同事们--这可能是一个关闭的错误,如何处理?如果我想使用下面的代码,我需要在盈利的时候关闭所有的单向订单。谢谢你。 错误是什么? 错误的屏幕 理论上,它应该工作,但我还没有看到如此复杂的平仓,考虑到点差并将其作为滑点加入 - 我认为,如果你决定平仓,那么滑点不是最重要的事情,平仓错误更重要,然后重新报价,然后完全失去连接 把OrderClose(....)拿走,用Kim的ClosePosBySelect()https://www.mql5.com/ru/forum/131859/page2#comment_3359664,取代它。 使用它,那么你将清楚地看到它在哪里被破坏了--要么是在你的关闭条件中,要么是服务器有一个错误。 Artyom Trishkin 2019.10.08 07:43 #9788 Igor Makanu: 错误是什么? 错误的屏幕 理论上它应该工作,但我还没有看到如此复杂的收盘,考虑到点差并将其作为滑点加入 - 我认为,如果你已经决定收盘,那么滑点不是最需要注意的,收盘错误更重要,然后是重新报价,然后完全失去联系 移除OrderClose(....)并将票据传递给Kim的ClosePosBySelect(),然后就会清楚它在哪里不起作用--要么是在你的关闭条件中,要么是服务器有一个错误。 他在那里有一个零价格接近。因此,我们需要控制MarketInfo-function所返回的内容,但没有控制。然而,像往常一样,有些人习惯于写--收到的东西,什么--没有检查,而是发送一个参数。 Igor Makanu 2019.10.08 07:48 #9789 Artyom Trishkin:他在那里有一个零价格接近。因此,我们需要控制MarketInfo-function所返回的内容,但没有控制。然而,像往常一样在四上有些人习惯于写--收到的东西,什么--没有检查,但发送的说法。 我已经看到了,我怀疑他是否能够自己取消所有的设置,这就是为什么我建议使用选中的ClosePosBySelect()来通过OrderSelect()关闭选定的订单--他可以做到这一点,至少我看到他用构造器组装代码。) SZY: 我还有一个怀疑,就是它把一个订单关闭了两次,但是Kim的f函数打印到了日志中, 似乎没有单独的循环被第二个条件关闭。 Artyom Trishkin 2019.10.08 07:53 #9790 Igor Makanu: 我已经看到了,我怀疑它是否能够自己解除所有的prime,这就是为什么我建议通过OrderSelect()使用被证明的高亮订单的闭合。 当然,伊戈尔的函数将为用户做一切事情(甚至有些用户设法用它们来犯错)。但在这种情况下,他永远不会学会自己做什么。虽然,当然--他们的选择。 1...972973974975976977978979980981982983984985986...1953 新评论 您错过了交易机会: 免费交易应用程序 8,000+信号可供复制 探索金融市场的经济新闻 注册 登录 拉丁字符(不带空格) 密码将被发送至该邮箱 发生错误 使用 Google 登录 您同意网站政策和使用条款 如果您没有帐号,请注册 可以使用cookies登录MQL5.com网站。 请在您的浏览器中启用必要的设置,否则您将无法登录。 忘记您的登录名/密码? 使用 Google 登录
你好,我需要一些建议。为什么我的最后一条短信没有显示?这里有什么问题吗?你能告诉我如何修复它吗?
如果你在任何时候都只取一个对象的名字,你为什么需要一个循环?
Iurii Tokman:
你不能完全这样做--它将超出数组的范围。如果有10个对象,最后一个对象的索引将是9。因为它是从零开始计算的。
如果你一次只取一个对象的名字,为什么要有一个循环?
告诉我到底如何确定这个对象的倒数第二个文本。
告诉我到底如何确定这个对象的倒数第二个文本。
很难知道自己想要什么。
Provit - 显示白天测试期间的总利润
Provit1 - 显示当天的最大缩减量
Provit2 - 从1开始的正常数字行
普罗维特3--目标!将Provit1相加,除以Provit2。我想知道测试总时间内的平均每日缩减量。 帮助理解Provit3
同事们--这个接近的错误可能是什么,如何处理?以下是代码,当利润被超过时--关闭所有单向头寸。 谢谢你。
同事们--这可能是一个关闭的错误,如何处理?如果我想使用下面的代码,我需要在盈利的时候关闭所有的单向订单。谢谢你。
错误是什么? 错误的屏幕
理论上,它应该工作,但我还没有看到如此复杂的平仓,考虑到点差并将其作为滑点加入 - 我认为,如果你决定平仓,那么滑点不是最重要的事情,平仓错误更重要,然后重新报价,然后完全失去连接
把OrderClose(....)拿走,用Kim的ClosePosBySelect()https://www.mql5.com/ru/forum/131859/page2#comment_3359664,取代它。
使用它,那么你将清楚地看到它在哪里被破坏了--要么是在你的关闭条件中,要么是服务器有一个错误。
错误是什么? 错误的屏幕
理论上它应该工作,但我还没有看到如此复杂的收盘,考虑到点差并将其作为滑点加入 - 我认为,如果你已经决定收盘,那么滑点不是最需要注意的,收盘错误更重要,然后是重新报价,然后完全失去联系
移除OrderClose(....)并将票据传递给Kim的ClosePosBySelect(),然后就会清楚它在哪里不起作用--要么是在你的关闭条件中,要么是服务器有一个错误。
他在那里有一个零价格接近。因此,我们需要控制MarketInfo-function所返回的内容,但没有控制。然而,像往常一样,有些人习惯于写--收到的东西,什么--没有检查,而是发送一个参数。
他在那里有一个零价格接近。因此,我们需要控制MarketInfo-function所返回的内容,但没有控制。然而,像往常一样在四上有些人习惯于写--收到的东西,什么--没有检查,但发送的说法。
我已经看到了,我怀疑他是否能够自己取消所有的设置,这就是为什么我建议使用选中的ClosePosBySelect()来通过OrderSelect()关闭选定的订单--他可以做到这一点,至少我看到他用构造器组装代码。)
SZY: 我还有一个怀疑,就是它把一个订单关闭了两次,但是Kim的f函数打印到了日志中, 似乎没有单独的循环被第二个条件关闭。
我已经看到了,我怀疑它是否能够自己解除所有的prime,这就是为什么我建议通过OrderSelect()使用被证明的高亮订单的闭合。
当然,伊戈尔的函数将为用户做一切事情(甚至有些用户设法用它们来犯错)。但在这种情况下,他永远不会学会自己做什么。虽然,当然--他们的选择。