任何菜鸟问题,为了不给论坛添乱。专业人士,不要路过。没有你就无处可去 - 6. - 页 75 1...686970717273747576777879808182...1178 新评论 Victor Nikolaev 2013.08.16 02:12 #741 MisterD: 你好,请你告诉我以下代码中哪里有错误? 我在 "deinit "的时刻调用了这个循环。 它删除了除最后一个订单以外的所有订单。 我认为这一行很可能是一个错误 >>for (int i=1; i<=OrdersTotal(); i++) << 然而,从逻辑上看,一切似乎都是正确的......我错过了什么? 提前感谢! 循环往复地做 //------------------------------------------------------------------------------------------- for (int i=OrdersTotal()-1; i>=0; i--) { if (OrderSelect(i,SELECT_BY_POS)==true) { int Type=OrderType(); if (OrderSymbol()!= Symbol() || Type <2)continue; int Ticket=OrderTicket(); bool Modify =OrderDelete(Ticket); if (Modify == true) Alert ("Ордер Удалён");continue; if (Modify != true) Alert ("Удаление ордера не удалась"); } } //------------------------------------------------------------------------------------------- Mikhail Kozhemyako 2013.08.16 05:31 #742 MisterD: 你好,请你告诉我以下代码中哪里有错误? 我在 "deinit "的时刻调用了这个循环。 它删除了除最后一个订单以外的所有订单。 我认为这一行很可能是一个错误 >>for (int i=1; i<=OrdersTotal(); i++) << 然而,从逻辑上看,一切似乎都是正确的......我错过了什么? 提前感谢! //------------------------------------------------------------------------------------------- for (int i=1; i<=OrdersTotal(); i++) { 如果(OrderSelect(i-1,SELECT_BY_POS)==true)。 { int Type=OrderType()。 如果(OrderSymbol()!= Symbol() || Type <2)继续。 int Ticket=OrderTicket()。 Modify=OrderDelete(Ticket); 如果(Modify == true) Alert ("Order Deleted"); continue; 如果(Modify != true)警告("订单删除失败")。 继续。 } } //------------------------------------------------------------------------------------------- 像这样试试吧。 for(int i=OrdersTotal()-1;i>=0;i--) { if(OrderSelect(i,...................... askyra_ya.ru 2013.08.16 08:11 #743 下午好。需要一点帮助。有一个函数,关闭了一个利润最丰厚的手。 我需要把它循环起来。 请告知如何使用这个功能,例如,如果我的账户资产超过5个点,那么这个功能应该是有效的。 void ClosePosWithMaxProfitInCurrency(string sy="", int op=-1, int mn=-1) { double pr=0; int i, k=OrdersTotal(), np=-1; if (sy=="0") sy=Symbol(); for (i=k-1; i>=0; i--) { if (OrderSelect(i, SELECT_BY_POS, MODE_TRADES)) { if ((OrderSymbol()==sy || sy=="") && (op<0 || OrderType()==op)) { if (mn<0 || OrderMagicNumber()==mn) { if (pr<OrderProfit()+OrderSwap()) { pr=OrderProfit()+OrderSwap(); np=i; } } } } } if (np>=0) { if (OrderSelect(np, SELECT_BY_POS, MODE_TRADES)) { ClosePosBySelect(); } } } TarasBY 2013.08.16 09:49 #744 sannin:下午好。需要一点帮助。有一个函数,关闭了一个利润最丰厚的手。我需要把它循环起来。 请告知如何使用它。 例如,如果我的账户净值高于5点,那么这个功能应该是有效的。例如,如果账户净值高于5点(4个字符)--在实际市场中,如果订单数量 高于3-4个,它们将很容易变成负值(根据删除的结果)。:))) P.S. 据我所知,你需要一个现成的代码,而解决这样一个问题的算法对你来说是没有用的! askyra_ya.ru 2013.08.16 09:53 #745 TarasBY: 5个点(4个标志)--在实际市场中,如果订单数量大于3-4个,它将很容易变成(通过删除的结果)减去。:))) 我是......而且我最近一直在关注黄金......它的反应没有我想象的那么快 我还没有使用过这样的功能......这就是我请求支持的原因。 bistreevseh 2013.08.16 11:13 #746 下午好,我在开发专家顾问 时遇到一个问题,它没有关闭订单,尽管指标规定了关闭的条件,请解释这是什么,提前感谢 附加的文件: tradingexper1111t.mq4 14 kb TarasBY 2013.08.16 11:48 #747 sannin: 好吧,我是......而且我最近一直在关注黄金......它不像我想象的那么快 我还没有使用过这个表格中的功能......所以这里请求支持 首先,你要计算出该工具的总头寸的BU线(它用于确定当订单达到盈利点时的平仓条件)。 //IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII+ //| Автор : TarasBY, taras_bulba@tut.by | //+-----------------------------------------------------------------------------------+ //| Определение Уровня БезУбытка по символу | //IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII+ double fGet_BreakEven (string fs_Symbol, // Symbol double fd_DeltaLots, // разность объемов ордеров Buy и Sell double fd_Profit) // текущий профит по открытым ордера { if (fd_DeltaLots == 0.) return (0.); double ld_BU = 0., ld_tickvalue = MarketInfo (fs_Symbol, MODE_TICKVALUE); // цена одного пункта //---- //---- Уровень общего безубытка для открытых ордеров if (fd_DeltaLots > 0.) ld_BU = MarketInfo (fs_Symbol, MODE_BID) - (fd_Profit / (ld_tickvalue * fd_DeltaLots)) * MarketInfo (fs_Symbol, MODE_POINT); else if (fd_DeltaLots < 0.) ld_BU = MarketInfo (fs_Symbol, MODE_ASK) - (fd_Profit / (ld_tickvalue * fd_DeltaLots)) * MarketInfo (fs_Symbol, MODE_POINT); //---- return (ld_BU); } //IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII+ 然后计算当前价格与盈亏平衡线之间的差额。 如果 "差额 "令人满意,我们就进入删除订单的程序。首先要做的是找到最有利可图/亏损的订单的票。 //IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII+ //| Автор : TarasBY, taras_bulba@tut.by | //+-----------------------------------------------------------------------------------+ // Получаем Тикет самого прибыльного/убыточного ордера | //IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII+ int fGet_TicketWithControlProfit (string fs_Symbol = "", // Инструмент int fi_Magic = -1, // Magic int fi_Type = -1, // OrderType int fi_TypeProfit = 0) // Профитность ордера среди остальных ордеров: // >= 0 - с самым большим профитом; // < 0 - самый убыточный { double ld_Profit = 0., ld_curProfit; int li_Total = OrdersTotal(), li_Ticket = -1; //---- if (fs_Symbol == "") fs_Symbol = Symbol(); if (fi_TypeProfit < 0) ld_Profit = 10000000000.; for (int i = li_Total - 1; i >= 0; i--) { if (!OrderSelect (i, SELECT_BY_POS, MODE_TRADES)) continue; if (OrderSymbol() != fs_Symbol) continue; if (fi_Magic > -1) if (OrderMagicNumber() != fi_Magic) continue; if (fi_Type > -1) if (OrderType() != fi_Type) continue; if (fi_Type > 1) continue; ld_curProfit = OrderProfit() + OrderSwap() + OrderCommission(); if (fi_TypeProfit >= 0) {if (ld_Profit <= ld_curProfit) continue;} else if (ld_Profit >= ld_curProfit) continue; ld_Profit = ld_curProfit; li_Ticket = OrderTicket(); } //---- return (li_Ticket); } //IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII+ 删除可以从任何一个方向进行。让我们删除。 //IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII+ //| Автор : TarasBY, taras_bulba@tut.by | //+-----------------------------------------------------------------------------------+ //| Функция закрытия "своих" ордеров по признаку | //IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII+ int fClose_AllOrdersByProfit (string fs_Symbol = "", // Инструмент int fi_Magic = -1, // Magic int fi_Type = -1, // OrderType int fi_TypeProfit = 0) // Направление закрытия ордеро по профитности: // >= 0 - начиная от самого большого профита; // < 0 - начиная от самого маленького профита; { int li_Ticket = fGet_TicketWithControlProfit (fs_Symbol, fi_Magic, fi_Type, fi_TypeProfit), li_cnt = 0; //---- while (li_Ticket > 0) { //---- Здесь вставите свою процедуру закрытия //---- что-то типа: //ClosePosByTicket (li_Ticket); li_Ticket = fGet_TicketWithControlProfit (fs_Symbol, fi_Magic, fi_Type, fi_TypeProfit); li_cnt++; } //---- return (li_cnt); } //IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII+ 进一步组装合适的单位并不太困难:你要做的还是去做...:) elllfix 2013.08.16 13:05 #748 我想把一个价格值分配给一个变量。 a=(NormalizeDouble(OrderOpenPrice(),5)); 但由于某些原因,价格在1.3360处画了一个四位数的数值 你能告诉我这个错误吗? Mikhail Kozhemyako 2013.08.16 13:08 #749 lottamer: 我想把一个价格值分配给一个变量。 但由于某些原因,价格在1.3360处画了一个四位数的数值 你能告诉我这个错误吗? 也许DC是四位数的?或者不使用DoubleToStr(YourPrice,5)输出价格。 elllfix 2013.08.16 13:12 #750 Sepulca: 也许DC是四位数的?或者在没有DoubleToStr(YourPrice,5)的情况下显示价格。 直流电是五位数的... 没有DoubleToStr(YourPrice,5)是什么意思? 我没有DoubleToStr(YourPrice,5)的地方。 1...686970717273747576777879808182...1178 新评论 您错过了交易机会: 免费交易应用程序 8,000+信号可供复制 探索金融市场的经济新闻 注册 登录 拉丁字符(不带空格) 密码将被发送至该邮箱 发生错误 使用 Google 登录 您同意网站政策和使用条款 如果您没有帐号,请注册 可以使用cookies登录MQL5.com网站。 请在您的浏览器中启用必要的设置,否则您将无法登录。 忘记您的登录名/密码? 使用 Google 登录
你好,请你告诉我以下代码中哪里有错误?
我在 "deinit "的时刻调用了这个循环。
它删除了除最后一个订单以外的所有订单。
我认为这一行很可能是一个错误 >>for (int i=1; i<=OrdersTotal(); i++) <<
然而,从逻辑上看,一切似乎都是正确的......我错过了什么?
提前感谢!
循环往复地做
你好,请你告诉我以下代码中哪里有错误?
我在 "deinit "的时刻调用了这个循环。
它删除了除最后一个订单以外的所有订单。
我认为这一行很可能是一个错误 >>for (int i=1; i<=OrdersTotal(); i++) <<
然而,从逻辑上看,一切似乎都是正确的......我错过了什么?
提前感谢!
//-------------------------------------------------------------------------------------------
//-------------------------------------------------------------------------------------------
像这样试试吧。
下午好。需要一点帮助。有一个函数,关闭了一个利润最丰厚的手。
我需要把它循环起来。
请告知如何使用这个功能,例如,如果我的账户资产超过5个点,那么这个功能应该是有效的。
}
下午好。需要一点帮助。有一个函数,关闭了一个利润最丰厚的手。
我需要把它循环起来。
请告知如何使用它。 例如,如果我的账户净值高于5点,那么这个功能应该是有效的。
例如,如果账户净值高于5点(4个字符)--在实际市场中,如果订单数量 高于3-4个,它们将很容易变成负值(根据删除的结果)。:)))
P.S. 据我所知,你需要一个现成的代码,而解决这样一个问题的算法对你来说是没有用的!
5个点(4个标志)--在实际市场中,如果订单数量大于3-4个,它将很容易变成(通过删除的结果)减去。:)))
我是......而且我最近一直在关注黄金......它的反应没有我想象的那么快
我还没有使用过这样的功能......这就是我请求支持的原因。
好吧,我是......而且我最近一直在关注黄金......它不像我想象的那么快
我还没有使用过这个表格中的功能......所以这里请求支持
首先,你要计算出该工具的总头寸的BU线(它用于确定当订单达到盈利点时的平仓条件)。
然后计算当前价格与盈亏平衡线之间的差额。 如果 "差额 "令人满意,我们就进入删除订单的程序。首先要做的是找到最有利可图/亏损的订单的票。
删除可以从任何一个方向进行。让我们删除。
进一步组装合适的单位并不太困难:你要做的还是去做...:)
但由于某些原因,价格在1.3360处画了一个四位数的数值
你能告诉我这个错误吗?
我想把一个价格值分配给一个变量。
但由于某些原因,价格在1.3360处画了一个四位数的数值
你能告诉我这个错误吗?
也许DC是四位数的?或者不使用DoubleToStr(YourPrice,5)输出价格。
也许DC是四位数的?或者在没有DoubleToStr(YourPrice,5)的情况下显示价格。
直流电是五位数的...
没有DoubleToStr(YourPrice,5)是什么意思? 我没有DoubleToStr(YourPrice,5)的地方。