错误、漏洞、问题 - 页 2412 1...240524062407240824092410241124122413241424152416241724182419...3184 新评论 Andrey Dik 2019.03.24 12:45 #24111 Andrey Barinov:然后进行调试。打印交易票据,并在测试器中看到那里实际选择的内容。不过,添加一个交易类型 的过滤器。地段显示正确,所以票面选择正确。 Andrey Barinov 2019.03.24 12:47 #24112 Andrey Dik:地段是正确的,所以票是正确的。不,两种交易,进和出,都有相同的手数。但利润却没有。 这是我的代码。它是有效的。 //+------------------------------------------------------------------+ //| | //+------------------------------------------------------------------+ ulong LastOutDealTicket(const string symbol,const uint magic) { //=============== long lasttime=0; //=============== //=============== ulong ticket=0; //=============== //=============== #ifdef __MQL5__ //=============== ::HistorySelect(0,TimeCurrent()+60); //=============== const int deals=::HistoryDealsTotal(); //=============== for(int i=deals-1;i>=0;i--) { //=============== const ulong tempticket=::HistoryDealGetTicket(i); //=============== //=============== if(::HistoryDealGetInteger(tempticket,DEAL_ENTRY)!=DEAL_ENTRY_OUT || ::HistoryDealGetString(tempticket,DEAL_SYMBOL)!=symbol || ::HistoryDealGetInteger(tempticket,DEAL_MAGIC)!=magic)continue; //=============== //=============== if(::MQLInfoInteger(MQL_TESTER))return(tempticket); //=============== //=============== if(::HistoryDealGetInteger(tempticket,DEAL_TIME)<=lasttime)continue; //=============== //=============== ticket=tempticket; lasttime=::HistoryDealGetInteger(tempticket,DEAL_TIME); //=============== } //=============== #endif //=============== //=============== #ifdef __MQL4__ //=============== const int ordershistory=OrdersHistoryTotal(); //=============== for(int i=ordershistory-1;i>=0;i--) { //=============== if(!::OrderSelect(i,SELECT_BY_POS,MODE_HISTORY) || ::OrderSymbol()!=symbol || ::OrderMagicNumber()!=magic || (::OrderType()!=OP_SELL && ::OrderType()!=OP_BUY))continue; //=============== //=============== if(::MQLInfoInteger(MQL_TESTER))return(::OrderTicket()); //=============== //=============== if(::OrderCloseTime()<=lasttime)continue; //=============== //=============== ticket=::OrderTicket(); lasttime=::OrderCloseTime(); //=============== } //=============== #endif //=============== //=============== return(ticket); //=============== } //+------------------------------------------------------------------+ //| | //+------------------------------------------------------------------+ double LastClosedProfit(const string symbol,const uint magic) { //=============== const ulong lastoutticket=::LastOutDealTicket(symbol,magic); //=============== //=============== if(lastoutticket<=0)return(0); //=============== //=============== double result=0; //=============== //=============== #ifdef __MQL5__ //=============== result=::HistoryDealGetDouble(lastoutticket,DEAL_PROFIT); //=============== #endif //=============== //=============== #ifdef __MQL4__ //=============== if(::OrderSelect((int)lastoutticket,SELECT_BY_TICKET,MODE_HISTORY))result=::OrderProfit(); //=============== #endif //=============== //=============== return(result); //=============== } Andrey Dik 2019.03.24 13:06 #24113 Andrey Barinov:不,两种交易,进和出,都有相同的手数。利润是没有的。 这是我的代码。它是有效的。 试过了,你的代码也给出了0.0))))。 如果有的话,该账户是被套期保值的。 Andrey Barinov 2019.03.24 13:21 #24114 Andrey Dik:试过了,你的代码也给出了0.0))))。 如果有的话,该账户是被套期保值的。刚刚检查了2009年建造的一切。我的代码给出了它应该给出的东西。如果它给出了0,这意味着你那里有0。 Andrey Dik 2019.03.24 13:57 #24115 Andrey Barinov:刚刚检查了2009年建造的一切。我的代码给出了它应该给出的东西。如果它给出了0,这意味着你那里有0。怎么会这样,在历史上有关闭的交易,其结果不是零,而它给出的是0 [删除] 2019.03.24 15:26 #24116 Andrey Barinov:安德烈-迪克 有一种可能性,问题可能出在直流侧。 Andrey Dik 2019.03.24 15:30 #24117 Alexey Kozitsyn: 有一种可能性,问题可能出在直流侧。在Metaquotes和Robo上试过,在测试器中。 Andrey Dik 2019.03.24 15:50 #24118 发现我的错误...我的错误是,我没有把majik传给平仓 函数,而是传给了开仓函数,结果交易无法被majik选中...... Andrey Pogoreltsev 2019.03.25 13:14 #24119 如果你在多货币中使用CSymbolInfo,它在初始化的时候被Name方法调用。 if(!SymbolInfoDouble(m_name,SYMBOL_TRADE_TICK_VALUE,m_tick_value)) return(false); if(!SymbolInfoDouble(m_name,SYMBOL_TRADE_TICK_VALUE_PROFIT,m_tick_value_profit)) return(false); if(!SymbolInfoDouble(m_name,SYMBOL_TRADE_TICK_VALUE_LOSS,m_tick_value_loss)) return(false); 在测试过程中,会出现USDCAD符号 错误。 no prices for symbol Vladimir Karputov 2019.03.25 13:17 #24120 Andrey Pogoreltsev:如果你在多货币中使用CSymbolInfo,它在初始化的时候被Name方法调用。 在测试期间,USDCAD符号会出现错误。 有没有人明白我们在说什么? 1...240524062407240824092410241124122413241424152416241724182419...3184 新评论 您错过了交易机会: 免费交易应用程序 8,000+信号可供复制 探索金融市场的经济新闻 注册 登录 拉丁字符(不带空格) 密码将被发送至该邮箱 发生错误 使用 Google 登录 您同意网站政策和使用条款 如果您没有帐号,请注册 可以使用cookies登录MQL5.com网站。 请在您的浏览器中启用必要的设置,否则您将无法登录。 忘记您的登录名/密码? 使用 Google 登录
然后进行调试。打印交易票据,并在测试器中看到那里实际选择的内容。不过,添加一个交易类型 的过滤器。
地段显示正确,所以票面选择正确。
地段是正确的,所以票是正确的。
不,两种交易,进和出,都有相同的手数。但利润却没有。
这是我的代码。它是有效的。
不,两种交易,进和出,都有相同的手数。利润是没有的。
这是我的代码。它是有效的。
试过了,你的代码也给出了0.0))))。
如果有的话,该账户是被套期保值的。试过了,你的代码也给出了0.0))))。
如果有的话,该账户是被套期保值的。刚刚检查了2009年建造的一切。我的代码给出了它应该给出的东西。如果它给出了0,这意味着你那里有0。
刚刚检查了2009年建造的一切。我的代码给出了它应该给出的东西。如果它给出了0,这意味着你那里有0。
怎么会这样,在历史上有关闭的交易,其结果不是零,而它给出的是0
有一种可能性,问题可能出在直流侧。
有一种可能性,问题可能出在直流侧。
在Metaquotes和Robo上试过,在测试器中。
如果你在多货币中使用CSymbolInfo,它在初始化的时候被Name方法调用。
在测试过程中,会出现USDCAD符号 错误。
no prices for symbol
如果你在多货币中使用CSymbolInfo,它在初始化的时候被Name方法调用。
在测试期间,USDCAD符号会出现错误。
有没有人明白我们在说什么?