任何菜鸟问题,为了不给论坛添乱。专业人士,不要路过。没有你就无处可去 - 6. - 页 384 1...377378379380381382383384385386387388389390391...1178 新评论 Джони Браво 2013.12.30 13:04 #3831 福!对不起! 如果T.P.设置了唯一的订单号,你如何保持跟踪?你如何改变它呢? Alekseu Fedotov 2013.12.30 13:16 #3832 Link_x: 在我的例子中:随机订单号,成交量-5,收盘价,滑点0,没有箭头。 在文件的例子中:通过订单_id计算订单号,成交量1,通过收盘价,滑点3,箭头为红色。 聪明得很,但有一点,请看强调,你写的是Symbol()。 而代码,"如何?",很简单。for(int i=OrdersTotal()-1;i>=0;i--) // { if (OrderSelect(i, SELECT_BY_POS, MODE_TRADES)) { if(OrderType()==OP_BUY) price=Bid; else price=Ask; OrderClose(OrderTicket(),OrderLots(),price,3,CLR_NONE); } } 类似这样的事情 Джони Браво 2013.12.30 13:57 #3833 r772ra: 不知何故, 哇!现在它关闭了位置,但瞬间就关闭了。让我们这样做: if(AccountProfit() > 50) { for(int i=OrdersTotal()-1;i>=0;i--) { if (OrderSelect(i, SELECT_BY_POS, MODE_TRADES)) { if(OrderType()==OP_BUY) price=Bid; else price=Ask; OrderClose(OrderTicket(),OrderLots(),price,3,CLR_NONE); } } } 并得到一个代码,以50美元的潜在利润平掉所有头寸。 非常感谢您! 现在一切都清楚了! 酷!:) Alexey Semenov 2013.12.30 16:03 #3834 大家好!请帮助我,聪明的人们。我设置了Profit=10点(即当我得到两个交易对的总利润等于10点时),两个未平仓的交易都应该被关闭。然而,我的交易没有被关闭。错误在哪里?extern double lotAU=0.01; extern double lotEA=0.01; extern double Profit=10; extern string Сomment = "KVAZ_EURAUD_AUDUSD"; extern int Magic = 1111; int EASell, EABuy, AUSell, AUBuy; //+------------------------------------------------------------------+ //| expert initialization function | //+------------------------------------------------------------------+ int init() { return(0); } //+------------------------------------------------------------------+ //| expert deinitialization function | //+------------------------------------------------------------------+ int deinit() { return(0); } //+------------------------------------------------------------------+ //| expert start function | //+------------------------------------------------------------------+ int start() { double prof; double bidEA = MarketInfo("EURAUD",MODE_BID); double askEA = MarketInfo("EURAUD",MODE_ASK); double bidAU = MarketInfo("AUDUSD",MODE_BID); double askAU = MarketInfo("AUDUSD",MODE_ASK); string symEA = "EURAUD"; string symAU = "AUDUSD"; for(int i=OrdersTotal()-1; i>=0; i--) { OrderSelect(i,SELECT_BY_POS); prof=prof+OrderProfit(); Print("Profit="+prof); } if(prof>=Profit) { for(i=OrdersTotal()-1; i>=0; i--) { OrderSelect(i,SELECT_BY_POS); OrderClose(OrderTicket(),OrderLots(),OrderClosePrice(),5,0); } } double LineEA = iCustom (Symbol(), 0, "Ind_2 Line+1", 0, 1); // Первый инструмент double LineAU = iCustom (Symbol(), 0, "Ind_2 Line+1", 1, 1); // Второй инструмент if(NumberOfPositions("EURAUD")==0 && LineEA > 0.1 && LineAU < -0.1) { EASell = OrderSend(symEA,OP_SELL,lotEA,bidEA,3,0,0,"KVAZ_EURAUD_AUDUSD",Magic,0,Red); } if(NumberOfPositions("AUDUSD")==0 && LineEA > 0.1 && LineAU < -0.1) { AUSell = OrderSend(symAU,OP_SELL,lotAU,bidAU,3,0,0,"KVAZ_EURAUD_AUDUSD",Magic,0,Red); } if(NumberOfPositions("EURAUD")==0 && LineEA < -0.1 && LineAU > 0.1) { EABuy = OrderSend(symEA,OP_BUY,lotEA,bidEA,3,0,0,"KVAZ_EURAUD_AUDUSD",Magic,0,Red); } if(NumberOfPositions("AUDUSD")==0 && LineEA < -0.1 && LineAU > 0.1) { AUBuy = OrderSend(symAU,OP_BUY,lotAU,bidAU,3,0,0,"KVAZ_EURAUD_AUDUSD",Magic,0,Red); } return(0); } //+------------------------------------------------------------------+ int NumberOfPositions(string sy="", int op=-1, int mn=1111) { //| Параметры: | //| sy - наименование инструмента ("" - любой символ, | //| NULL - текущий символ) | //| op - операция (-1 - любая позиция) | //| mn - MagicNumber (-1 - любой магик) int i, k=OrdersTotal(), kp=0; if (sy=="0") sy=Symbol(); for (i=0; i<k; i++) { if (OrderSelect(i, SELECT_BY_POS, MODE_TRADES)) { if (OrderSymbol()==sy || sy=="") { if (OrderType()==OP_BUY || OrderType()==OP_SELL) { if (op<0 || OrderType()==op) { if (mn<0 || OrderMagicNumber()==mn) kp++; } } } } } return(kp); } 提醒你,我明白当我关闭时,EA只是没有看到符号上的订单和它需要关闭的meigic。就是这样............ 是的,还有一个变种。只有一个订单被关闭,10个点的利润条件没有得到满足。简而言之,这是胡说八道。 for(int i=OrdersTotal()-1; i>=0; i--) { OrderSelect(i,SELECT_BY_POS); prof=prof+OrderProfit(); Print("Profit="+prof); } if(prof>=Profit) { for(i=OrdersTotal()-1; i>=0; i--) { OrderSelect(i,SELECT_BY_POS); { if(OrderSymbol()!= Symbol() || OrderMagicNumber()!=Magic) continue; OrderClose(OrderTicket(),OrderLots(),OrderClosePrice(),5,0); } } } [Удален] 2013.12.30 17:37 #3835 你好,请你告诉我,如何在达到某些条件时,让当前的条形图和当前的价格出现一个箭头,并触发一次警报,给出一个信息?例如:当一个移动的目标穿过一个自下而上的箭头,上面分别写着 "买入 "和一个自上而下的箭头,上面写着 "卖出"。提前感谢。 Alekseu Fedotov 2013.12.30 18:42 #3836 alexey1979621: 大家好!请帮助我,聪明的人们。我设置了Profit=10点(即当我得到两个交易对的总利润等于10点时),两个未平仓的交易都应该被关闭。然而,我的交易没有被关闭。错误在哪里? 提醒你,我明白当我关闭时,EA只是没有看到符号上的订单和它需要关闭的meigic。就这样............ 是的,还有一个变体。一笔交易只关闭了一个位置,而10个点的利润条件没有得到满足。总之,这是胡说八道。 1.我们应该使用开仓时的工具的卖出价或买入价来平仓。 而不是像你用OrderClosePrice()那样。 这样写 if(prof>=Profit) { for(int i=OrdersTotal()-1;i>=0;i--) { if (OrderSelect(i, SELECT_BY_POS, MODE_TRADES)) { double AS=MarketInfo(OrderSymbol(), MODE_ASK); double BI=MarketInfo(OrderSymbol(), MODE_BID); if(OrderType()==OP_BUY) price=BI; else price=AS; OrderClose(OrderTicket(),OrderLots(),price,3,CLR_NONE); } } } 类似这样的事情 forexman77 2013.12.30 18:55 #3837 有可能会触发停止,然后需要将旗帜重置为原来的状态。这个问题是通过 从图表中删除EA来 解决的吗? Alexey Semenov 2013.12.30 19:08 #3838 r772ra: 1.我们使用开仓的工具的升水或降水来平仓。 而不是像你用OrderClosePrice()那样。 这样写 像这样的 完成了,但这并没有解决适用于上述猫头鹰的问题。我认为在关闭时,EA只是没有看到符号上的订单和它需要关闭的专业人员。 TarasBY 2013.12.30 19:23 #3839 alexey1979621: 大家好!请帮助我,聪明的人们。我设置了Profit=10点(即当我得到两个交易对的总利润等于10点时),两个未平仓的交易都应该被关闭。然而,我的交易没有被关闭。错误在哪里? 提醒你,我明白当我关闭时,EA只是没有看到符号上的订单和它需要关闭的meigic。就是这样............ 是的,当时也有这样的选项。这笔交易只关闭了一次,10个点的利润条件没有被遵守。简而言之,这是胡说八道。 错误上的错误。也许这将使一些东西发挥作用。 extern double lotAU=0.01; extern double lotEA=0.01; extern double Profit=10; extern string EXP_Comment = "KVAZ_EURAUD_AUDUSD"; extern int Magic = 1111; int EASell, EABuy, AUSell, AUBuy; string gsa_SMB[2]; //+------------------------------------------------------------------+ //| expert initialization function | //+------------------------------------------------------------------+ int init() { gsa_SMB[0] = "EURAUD"; gsa_SMB[1] = "AUDUSD"; return (0); } //+------------------------------------------------------------------+ //| expert deinitialization function | //+------------------------------------------------------------------+ int deinit() { return(0); } //+------------------------------------------------------------------+ //| expert start function | //+------------------------------------------------------------------+ int start() { int li_N; double prof = 0., ld_Price = 0.; for (int i = OrdersTotal() - 1; i >= 0; i--) { OrderSelect (i,SELECT_BY_POS); li_N = fGet_NumSymbol (OrderSymbol(), gsa_SMB); if (li_N < 0) continue; if (OrderMagicNumber() != Magic) continue; prof += OrderProfit(); Print ("Profit=", prof); } if (prof>=Profit) { for (i=OrdersTotal()-1; i>=0; i--) { OrderSelect (i, SELECT_BY_POS); li_N = fGet_NumSymbol (OrderSymbol(), gsa_SMB); if (li_N < 0) continue; if (OrderMagicNumber() != Magic) continue; if (OrderType() == OP_BUY) ld_Price = MarketInfo (gsa_SMB[li_N], MODE_BID); else if (OrderType() == OP_SELL) ld_Price = MarketInfo (gsa_SMB[li_N], MODE_ASK); OrderClose (OrderTicket(), OrderLots(), ld_Price, 5); } } double bidEA = MarketInfo ("EURAUD", MODE_BID), askEA = MarketInfo ("EURAUD", MODE_ASK), bidAU = MarketInfo ("AUDUSD", MODE_BID), askAU = MarketInfo ("AUDUSD", MODE_ASK), LineEA = iCustom (Symbol(), 0, "Ind_2 Line+1", 0, 1), // Первый инструмент LineAU = iCustom (Symbol(), 0, "Ind_2 Line+1", 1, 1); // Второй инструмент if (NumberOfPositions (gsa_SMB[0], -1, Magic) == 0) { if (LineEA > 0.1) if (LineAU < -0.1) {EASell = OrderSend (gsa_SMB[0], OP_SELL, lotEA, bidEA, 3, 0, 0, EXP_Comment, Magic, 0, Red);} if (LineEA < -0.1) if (LineAU > 0.1) {EABuy = OrderSend (gsa_SMB[0], OP_BUY, lotEA, askEA, 3, 0, 0, EXP_Comment, Magic, 0, Blue);} } if (NumberOfPositions (gsa_SMB[1], -1, Magic) == 0) { if (LineEA < -0.1) if (LineAU > 0.1) {AUBuy = OrderSend (gsa_SMB[1], OP_BUY, lotAU, askAU, 3, 0, 0, EXP_Comment, Magic, 0, Blue);} if (LineEA > 0.1) if (LineAU < -0.1) {AUSell = OrderSend (gsa_SMB[1], OP_SELL, lotAU, bidAU, 3, 0, 0, EXP_Comment, Magic, 0, Red);} } return (0); } //+------------------------------------------------------------------+ int fGet_NumSymbol (string fs_Symbol, string ar_SMB[]) { for (int li_IND = 0; li_IND < 2; li_IND++) {if (fs_Symbol == ar_SMB[li_IND]) return (li_IND);} return (-1); } //+------------------------------------------------------------------+ ??? Alexander 2013.12.30 19:25 #3840 alexey1979621: 完成了,但这并没有解决上面那个猫头鹰的问题。我认为在关闭时,EA只是没有看到符号上的订单和它需要关闭的专业人员。 它不应该看到符号或魔力,你的EA中一切都正确。看一下日志,看看它产生什么样的错误。 1...377378379380381382383384385386387388389390391...1178 新评论 您错过了交易机会: 免费交易应用程序 8,000+信号可供复制 探索金融市场的经济新闻 注册 登录 拉丁字符(不带空格) 密码将被发送至该邮箱 发生错误 使用 Google 登录 您同意网站政策和使用条款 如果您没有帐号,请注册 可以使用cookies登录MQL5.com网站。 请在您的浏览器中启用必要的设置,否则您将无法登录。 忘记您的登录名/密码? 使用 Google 登录
如果T.P.设置了唯一的订单号,你如何保持跟踪?你如何改变它呢?
在我的例子中:随机订单号,成交量-5,收盘价,滑点0,没有箭头。 在文件的例子中:通过订单_id计算订单号,成交量1,通过收盘价,滑点3,箭头为红色。
聪明得很,但有一点,请看强调,你写的是Symbol()。
类似这样的事情而代码,"如何?",很简单。
不知何故,
并得到一个代码,以50美元的潜在利润平掉所有头寸。
非常感谢您!
现在一切都清楚了!
酷!:)
提醒你,我明白当我关闭时,EA只是没有看到符号上的订单和它需要关闭的meigic。就是这样............
是的,还有一个变种。只有一个订单被关闭,10个点的利润条件没有得到满足。简而言之,这是胡说八道。
大家好!请帮助我,聪明的人们。我设置了Profit=10点(即当我得到两个交易对的总利润等于10点时),两个未平仓的交易都应该被关闭。然而,我的交易没有被关闭。错误在哪里?
提醒你,我明白当我关闭时,EA只是没有看到符号上的订单和它需要关闭的meigic。就这样............
是的,还有一个变体。一笔交易只关闭了一个位置,而10个点的利润条件没有得到满足。总之,这是胡说八道。
1.我们应该使用开仓时的工具的卖出价或买入价来平仓。
而不是像你用OrderClosePrice()那样。
这样写
类似这样的事情1.我们使用开仓的工具的升水或降水来平仓。
而不是像你用OrderClosePrice()那样。
这样写
像这样的大家好!请帮助我,聪明的人们。我设置了Profit=10点(即当我得到两个交易对的总利润等于10点时),两个未平仓的交易都应该被关闭。然而,我的交易没有被关闭。错误在哪里?
提醒你,我明白当我关闭时,EA只是没有看到符号上的订单和它需要关闭的meigic。就是这样............
是的,当时也有这样的选项。这笔交易只关闭了一次,10个点的利润条件没有被遵守。简而言之,这是胡说八道。
错误上的错误。也许这将使一些东西发挥作用。
???
完成了,但这并没有解决上面那个猫头鹰的问题。我认为在关闭时,EA只是没有看到符号上的订单和它需要关闭的专业人员。
它不应该看到符号或魔力,你的EA中一切都正确。看一下日志,看看它产生什么样的错误。