任何菜鸟问题,为了不给论坛添乱。专业人士,不要路过。没有你就无处可去 - 6. - 页 132 1...125126127128129130131132133134135136137138139...1178 新评论 Artyom Trishkin 2013.09.08 16:49 #1311 MarkTrade: 它的作用...谢谢你! 我只是希望我明白为什么我的版本不想工作...... 难道你看不出其中的差别吗?你有一个错误的比较。 if (a && b < c) - 你不能这样做。 如果(a<c && b<c)--这就可以了 Alexey Zhuravlev 2013.09.08 16:53 #1312 artmedia70: 难道你看不出其中的差别吗?你有错误的比较。 if (a && b < c) - 你不能这样做。 如果(a<c && b<c)--你可以。 不,我注意到了差异。只是我相信如果(a && b < c) 是可以的... :-) 现在我知道了,谢谢你! Boris 2013.09.08 17:24 #1313 MarkTrade: 不,我注意到了差异。只是我相信如果(a && b < c) 是有可能的......。:-) 现在我知道了,谢谢你! 也许你的意思是如果(a+b < c) ?那么你就可以像这样做了! Paladin80 2013.09.08 17:25 #1314 skyjet: 再次感谢!现在试图使 "可检查 "的条数得到优化,但窗口中的结果就是不存在。试图从头和尾开始数,但都是徒劳。 extern int number=3; //------------------------------------+ for (int x=number; x>1; x--) // x>1 (а не x>=1) { if(Open[x]==Open[x-1]) continue; if(Open[x]<Open[x-1]) { //--- action 1 } else { //--- action 2 } } 你说"......窗口中没有结果 "是什么意思?也许你在窗口中显示的结果不正确,在程序的其他地方有错误? Alexey Semenov 2013.09.08 17:29 #1315 亲爱的伙伴们!请告知是否有任何关于基于技术分析的编程线的文献(教科书),包括Fibo水平。它是可取的,有 "傻瓜 "的程序代码实例。 或者谁能建议一个类似的顾问与开放源代码。 我在此表示感谢。 Boris 2013.09.08 18:16 #1316 alexey1979621: 亲爱的同志们!请告知是否有任何关于基于技术分析的编程线的文献(教科书),包括Fibo水平。最好是有 "傻瓜 "代码的例子。 我不知道如何使用它。 我非常感激。 这本教科书 有什么问题?无论你需要什么,都要学习、练习,祝你好运 Viktar Dzemikhau 2013.09.08 19:31 #1317 artmedia70: 你是否了解并看到在你的数组被 "填充 "了订单数据后,数组中立即包含了什么?不,你不知道,你只是假设。SPRINT所有数组单元格的内容,不是用你的pr(),而是用标准的Print(),试着查看测试者的日志,看看你在数组中的每一个单元格的内容,就在它被填充之后。当你确定数组的内容与你对其内容的想法一致时,就用你的pr()打印它。如果它没有给你同样的结果--这是你的pr(),如果数据匹配,那么在下一步寻找错误。 数组已经被打印出来了,但是,目前,这不是关于它们的。下面我将描述我的想法。 顺便说一下。把所有的输出都换成了标准打印。情况是一样的。出现了在+中关闭4个位置的时刻。然后在逻辑上,isCloseByTakeLastOpenPos() 函数应该工作,我从一开始就这样调用。 for (int ord=OrdersTotal()-1; ord>=0; ord--) { if (!OrderSelect(ord,SELECT_BY_POS)) continue; if (OrderMagicNumber() != i_magic) continue; if (OrderSymbol() != Symbol()) continue; if (OrderType() == 6) continue; g_ticket = OrderTicket(); g_type = OrderType(); // Блок модификации ордеров if (i_sl != 0 || i_tp != 0) { if (OrderStopLoss() == 0 && OrderTakeProfit() == 0) { OrdersModifyer(g_ticket); } } // Закрытие всех ордеров, если последний ордер закрыт if (isCloseByTakeLastOpenPos(2)) // Наша функция, определяющая.. закрылся ли последний закрытый ордер в + или нет. { // if (g_type < 2) { ClosePosBySortLots(); } //else if (g_type > 1 && g_type < 6) { DeletePendingOrders(g_ticket); } } } 这将告诉我们,最后一个平仓的订单要么是在获利时平仓,要么是在盈利时平仓。这里有一个函数。 //+-------------------------------------------------------------------------------------+ //| Получаем состояние последней позиции (Открыта или закрыта) | //+-------------------------------------------------------------------------------------+ bool isCloseByTakeLastOpenPos(int delta) { datetime lastOrderCloseTime = -1, // Время закрытия последнего открытого ордера lastOOTHist = -1; // Время открытия последнего открытого ордера из истории int j = -1; Print ("isCloseByTakeLastOpenPos: вошли в функцию"); for (int i=OrdersHistoryTotal()-1; i>=0; i--) { if (!OrderSelect(i, SELECT_BY_POS, MODE_HISTORY)) continue; if (OrderMagicNumber() != i_magic) continue; if (OrderSymbol() != Symbol()) continue; if (OrderType() > 1) continue; // Все удалённые отложки нас не интересуют.. Print ("isCloseByTakeLastOpenPos: первоначальные условия выполнены!"); if (lastOrderCloseTime < OrderCloseTime()) // Находим время закрытия.. { lastOrderCloseTime = OrderCloseTime(); // ..последней закрытой позиции в истории j = i; Print ("j = " + j + " " + TimeToStr(TimeCurrent())); } } if (OrderSelect(j, SELECT_BY_POS, MODE_HISTORY)) { if (OrderProfit() + OrderCommission() + OrderSwap() <= 0) return (false); // pr ("OTP() = " + OrderTakeProfit() + "; OCP() " + OrderClosePrice() + " " + TimeToStr(TimeCurrent())); // pr ("OOP() = " + OrderOpenPrice() + "; OCP() " + OrderClosePrice() + " " + TimeToStr(TimeCurrent())); if (MathAbs(OrderTakeProfit() - OrderClosePrice()) > delta * pt) return (false); else { lastOOTHist = OrderOpenTime(); Comment("\n", "FUNC isCloseByTakeLastOpenPos: ", "\n", "j = ", j, "\n", "lastOOTHist = ", TimeToStr(lastOOTHist, TIME_SECONDS)); } } else { Comment("\n", "FUNC isCloseByTakeLastOpenPos: ", "\n", "j = ", j, "\n", "не удалось выбрать ордер в истории"); return(false); } for(int h=OrdersTotal()-1; h>=0; h--) { if (OrderSelect(h, SELECT_BY_POS, MODE_TRADES)) { if (OrderMagicNumber() != i_magic) continue; if (OrderSymbol() != Symbol()) continue; if (OrderType() > 1) continue; if (lastOOTHist < OrderOpenTime()) return(false); // Выбранная рыночная позиция открыта позже закрытой по тейку } else {Print("FUNC isCloseByTakeLastOpenPos : не удалось выбрать рыночный ордер");return(false);} } Print ("isCloseByTakeLastOpenPos: последняя закрытая позиция профитна!"); return (true); } 这种情况很有意思。一切正常。而这里的情况出现了。 我们可以看到,有4个头寸在获利时关闭。 他们被武井关闭。也就是说,关闭订单的功能根本没有发挥作用。原因似乎是关闭条件没有发挥作用。这就是。 if (isCloseByTakeLastOpenPos(2)) 当我们看这个函数并打印所有内容时,就会发现它在那一刻并没有变成真的。怎么说呢?毕竟,最外面的4个订单是以+的方式关闭的。我给出了上述函数的代码。以下是同一时刻日志中的内容。 2013.09.09 00:13:23 2013.08.15 12:35 Perevorot EURUSD.GI,M5: OpenPendingSell(): Ордер послать не удалось 0 2013.09.09 00:13:23 2013.08.15 12:35 Perevorot EURUSD.GI,M5: OpenPendingSell(): Ордер послать не удалось 0 2013.09.09 00:13:23 2013.08.15 12:35 Perevorot EURUSD.GI,M5: OpenPendingSell(): Ордер послать не удалось 0 2013.09.09 00:13:23 2013.08.15 12:35 Perevorot EURUSD.GI,M5: OpenPendingSell(): Ордер послать не удалось 0 2013.09.09 00:13:23 2013.08.15 12:35 Perevorot EURUSD.GI,M5: OpenPendingSell(): Ордер послать не удалось 0 2013.09.09 00:13:04 2013.08.15 12:30 Tester: take profit #104 at 1.32731 (1.32722 / 1.32724) 2013.09.09 00:13:04 2013.08.15 12:30 Tester: take profit #102 at 1.32731 (1.32722 / 1.32724) 2013.09.09 00:13:04 2013.08.15 12:30 Tester: take profit #100 at 1.32731 (1.32722 / 1.32724) 2013.09.09 00:13:04 2013.08.15 12:30 Tester: take profit #98 at 1.32731 (1.32722 / 1.32724) 2013.09.09 00:13:03 2013.08.15 12:30 Tester: order #104, sell 0.93 EURUSD.GI is opened at 1.32831 2013.09.09 00:13:03 2013.08.15 12:30 Perevorot EURUSD.GI,M5: isCloseByTakeLastOpenPos: первоначальные условия выполнены! 2013.09.09 00:13:03 2013.08.15 12:30 Perevorot EURUSD.GI,M5: isCloseByTakeLastOpenPos: первоначальные условия выполнены! 2013.09.09 00:13:03 2013.08.15 12:30 Perevorot EURUSD.GI,M5: isCloseByTakeLastOpenPos: первоначальные условия выполнены! 2013.09.09 00:13:03 2013.08.15 12:30 Perevorot EURUSD.GI,M5: isCloseByTakeLastOpenPos: первоначальные условия выполнены! 2013.09.09 00:13:03 2013.08.15 12:30 Perevorot EURUSD.GI,M5: j = 74 2013.08.15 12:30 2013.09.09 00:13:03 2013.08.15 12:30 Perevorot EURUSD.GI,M5: isCloseByTakeLastOpenPos: первоначальные условия выполнены! 2013.09.09 00:13:03 2013.08.15 12:30 Perevorot EURUSD.GI,M5: isCloseByTakeLastOpenPos: вошли в функцию 2013.09.09 00:13:03 2013.08.15 12:30 Perevorot EURUSD.GI,M5: isCloseByTakeLastOpenPos: первоначальные условия выполнены! 2013.09.09 00:13:03 2013.08.15 12:30 Perevorot EURUSD.GI,M5: isCloseByTakeLastOpenPos: первоначальные условия выполнены! 我们可以看到,这个条件并没有发挥作用。这里有什么问题吗? Any rookie question, so learn how to earn Need help with coding forexman77 2013.09.09 04:54 #1318 你能告诉我是否有一个指标可以检测整个图表上的价差,或者是否有可能做到这一点? 我只找到了一个指标,它记录了从连接终端的那一刻起,终端被打开时的传播。 noobys 2013.09.09 05:31 #1319 paladin80: 你说"......结果窗口只是空的 "是什么意思?也许你在窗口中显示的结果是不正确的,而在程序的其他地方有错误? 但我在比较3、2和1条,也就是说,计算受阻于x>=1? 而这是否意味着具有相同价格的酒吧根本不被考虑,它们没有被分配号码? 通过设置优化参数:开始1,步骤1,结束4;在H1和H4上,结果选项卡是简单的空,在D1上,同样的盈利能力,分析的条数不同。 if(Open[x]==Open[x-1]) continue; T-G 2013.09.09 05:40 #1320 没有你,专业人员哪里也去不了。 帮助的功能。其中将历史上最后的亏损订单数量计算为加号订单。 也就是说,历史记录显示最后3个订单是负数,然后1个是正数,2个是负数。 这个函数应该计算最后三个(在正序之前)。 1...125126127128129130131132133134135136137138139...1178 新评论 您错过了交易机会: 免费交易应用程序 8,000+信号可供复制 探索金融市场的经济新闻 注册 登录 拉丁字符(不带空格) 密码将被发送至该邮箱 发生错误 使用 Google 登录 您同意网站政策和使用条款 如果您没有帐号,请注册 可以使用cookies登录MQL5.com网站。 请在您的浏览器中启用必要的设置,否则您将无法登录。 忘记您的登录名/密码? 使用 Google 登录
它的作用...谢谢你!
我只是希望我明白为什么我的版本不想工作......
难道你看不出其中的差别吗?你有一个错误的比较。
if (a && b < c) - 你不能这样做。
如果(a<c && b<c)--这就可以了
难道你看不出其中的差别吗?你有错误的比较。
if (a && b < c) - 你不能这样做。
如果(a<c && b<c)--你可以。
不,我注意到了差异。只是我相信如果(a && b < c) 是可以的... :-)
现在我知道了,谢谢你!
不,我注意到了差异。只是我相信如果(a && b < c) 是有可能的......。:-)
现在我知道了,谢谢你!
再次感谢!现在试图使 "可检查 "的条数得到优化,但窗口中的结果就是不存在。试图从头和尾开始数,但都是徒劳。
你说"......窗口中没有结果 "是什么意思?也许你在窗口中显示的结果不正确,在程序的其他地方有错误?
亲爱的伙伴们!请告知是否有任何关于基于技术分析的编程线的文献(教科书),包括Fibo水平。它是可取的,有 "傻瓜 "的程序代码实例。
或者谁能建议一个类似的顾问与开放源代码。
我在此表示感谢。
亲爱的同志们!请告知是否有任何关于基于技术分析的编程线的文献(教科书),包括Fibo水平。最好是有 "傻瓜 "代码的例子。
我不知道如何使用它。
我非常感激。
你是否了解并看到在你的数组被 "填充 "了订单数据后,数组中立即包含了什么?不,你不知道,你只是假设。SPRINT所有数组单元格的内容,不是用你的pr(),而是用标准的Print(),试着查看测试者的日志,看看你在数组中的每一个单元格的内容,就在它被填充之后。当你确定数组的内容与你对其内容的想法一致时,就用你的pr()打印它。如果它没有给你同样的结果--这是你的pr(),如果数据匹配,那么在下一步寻找错误。
数组已经被打印出来了,但是,目前,这不是关于它们的。下面我将描述我的想法。
顺便说一下。把所有的输出都换成了标准打印。情况是一样的。出现了在+中关闭4个位置的时刻。然后在逻辑上,isCloseByTakeLastOpenPos() 函数应该工作,我从一开始就这样调用。
这将告诉我们,最后一个平仓的订单要么是在获利时平仓,要么是在盈利时平仓。这里有一个函数。
这种情况很有意思。一切正常。而这里的情况出现了。
我们可以看到,有4个头寸在获利时关闭。 他们被武井关闭。也就是说,关闭订单的功能根本没有发挥作用。原因似乎是关闭条件没有发挥作用。这就是。
当我们看这个函数并打印所有内容时,就会发现它在那一刻并没有变成真的。怎么说呢?毕竟,最外面的4个订单是以+的方式关闭的。我给出了上述函数的代码。以下是同一时刻日志中的内容。
2013.09.09 00:13:23 2013.08.15 12:35 Perevorot EURUSD.GI,M5: OpenPendingSell(): Ордер послать не удалось 0
2013.09.09 00:13:23 2013.08.15 12:35 Perevorot EURUSD.GI,M5: OpenPendingSell(): Ордер послать не удалось 0
2013.09.09 00:13:23 2013.08.15 12:35 Perevorot EURUSD.GI,M5: OpenPendingSell(): Ордер послать не удалось 0
2013.09.09 00:13:23 2013.08.15 12:35 Perevorot EURUSD.GI,M5: OpenPendingSell(): Ордер послать не удалось 0
2013.09.09 00:13:23 2013.08.15 12:35 Perevorot EURUSD.GI,M5: OpenPendingSell(): Ордер послать не удалось 0
2013.09.09 00:13:04 2013.08.15 12:30 Tester: take profit #104 at 1.32731 (1.32722 / 1.32724)
2013.09.09 00:13:04 2013.08.15 12:30 Tester: take profit #102 at 1.32731 (1.32722 / 1.32724)
2013.09.09 00:13:04 2013.08.15 12:30 Tester: take profit #100 at 1.32731 (1.32722 / 1.32724)
2013.09.09 00:13:04 2013.08.15 12:30 Tester: take profit #98 at 1.32731 (1.32722 / 1.32724)
2013.09.09 00:13:03 2013.08.15 12:30 Tester: order #104, sell 0.93 EURUSD.GI is opened at 1.32831
2013.09.09 00:13:03 2013.08.15 12:30 Perevorot EURUSD.GI,M5: isCloseByTakeLastOpenPos: первоначальные условия выполнены!
2013.09.09 00:13:03 2013.08.15 12:30 Perevorot EURUSD.GI,M5: isCloseByTakeLastOpenPos: первоначальные условия выполнены!
2013.09.09 00:13:03 2013.08.15 12:30 Perevorot EURUSD.GI,M5: isCloseByTakeLastOpenPos: первоначальные условия выполнены!
2013.09.09 00:13:03 2013.08.15 12:30 Perevorot EURUSD.GI,M5: isCloseByTakeLastOpenPos: первоначальные условия выполнены!
2013.09.09 00:13:03 2013.08.15 12:30 Perevorot EURUSD.GI,M5: j = 74 2013.08.15 12:30
2013.09.09 00:13:03 2013.08.15 12:30 Perevorot EURUSD.GI,M5: isCloseByTakeLastOpenPos: первоначальные условия выполнены!
2013.09.09 00:13:03 2013.08.15 12:30 Perevorot EURUSD.GI,M5: isCloseByTakeLastOpenPos: вошли в функцию
2013.09.09 00:13:03 2013.08.15 12:30 Perevorot EURUSD.GI,M5: isCloseByTakeLastOpenPos: первоначальные условия выполнены!
2013.09.09 00:13:03 2013.08.15 12:30 Perevorot EURUSD.GI,M5: isCloseByTakeLastOpenPos: первоначальные условия выполнены!
我们可以看到,这个条件并没有发挥作用。这里有什么问题吗?
你说"......结果窗口只是空的 "是什么意思?也许你在窗口中显示的结果是不正确的,而在程序的其他地方有错误?
但我在比较3、2和1条,也就是说,计算受阻于x>=1?
而这是否意味着具有相同价格的酒吧根本不被考虑,它们没有被分配号码?
通过设置优化参数:开始1,步骤1,结束4;在H1和H4上,结果选项卡是简单的空,在D1上,同样的盈利能力,分析的条数不同。
没有你,专业人员哪里也去不了。
帮助的功能。其中将历史上最后的亏损订单数量计算为加号订单。
也就是说,历史记录显示最后3个订单是负数,然后1个是正数,2个是负数。
这个函数应该计算最后三个(在正序之前)。