错误、漏洞、问题 - 页 2410

 
Vladimir Karputov:

哼哼 :)

好的。启迪我们。代码中的什么错误,或者什么代码,可以以另一个工具的价格关闭 测试器中的头寸。我真的,真的很感兴趣。

Совершение сделок - Торговые операции - MetaTrader 5
Совершение сделок - Торговые операции - MetaTrader 5
  • www.metatrader5.com
Торговая деятельность в платформе связана с формированием и отсылкой рыночных и отложенных ордеров для исполнения брокером, а также с управлением текущими позициями путем их модификации или закрытия. Платформа позволяет удобно просматривать торговую историю на счете, настраивать оповещения о событиях на рынке и многое другое. Открытие позиций...
 
Aleksey Sergan:

该代码有几千行。添加它没有任何意义。没有静态变量。有的班级。在任何情况下,这都是测试者的错误。

这就是你的错误。

在调试模式下,在发送交易指令 前运行一个检查。看一下符号和价格。并至少在 "所有刻度线 "模式下进行测试。

 
Andrey Barinov:

好的。启迪我们。代码中的什么错误,或者什么代码,可以以另一个工具的价格关闭 测试器中的头寸。我真的非常、非常好奇。

很容易。这直接取决于代码的懒惰程度。我自己做的:)。考虑不周的字符类初始化控制体系。另外,还有静态变量。

总之,没有你所问的人写的代码,进一步说话是没有意义的。

 
Vladimir Karputov:

很容易。这与代码的曲率有直接的关系。我自己也做过 :)。字符类初始化的控制系统不够精细。此外,还有静态变量。

因此,不问你的代码,再讲下去就没有意义了。

你能给我们看一个代码的例子吗?如何以GPBUSD价格平仓 欧元兑美元?

如果是这样,对你来说就不是一个问题。我将非常感激。

 
Andrey Barinov:

你能给我看一个示例代码吗?如何以GPBUSD的价格关闭 欧元兑美元的头寸

如果是这样,对你来说就没有问题了。我将非常感激。

关于交易、自动交易系统和策略测试的论坛

虫子,虫子,问题

Vladimir Karputov, 2019.03.24 05:58

这很容易。代码曲率的依赖性。我自己也犯了这样的错误:)。角色类初始化控制的系统考虑不够周全。并加上静态变量。

总之,没有你所问的人写的代码,进一步说话是没有意义的。


 
这就是测试器格拉 尔的酷,不再有拖尾的点,酷)
 

在调试、可视化模式下没有错误。仓位的关闭不是通过交易指令,而是通过止损。



很可能是代码中的逻辑错误,很可能是这里,我将调查一下,当然,还不知道如何调查--在调试模式下没有错误。



它设法在1.60704设置一个订单的止损,比当前价格高出3000点。

在这种情况下,测试人员应该禁止停止设置。

 

我在这里看了一下日志。

更改止损的指令是针对高亮行gpbusd发送的,但实际上是针对eurusd-下一个执行。


以下是设置停止的代码


bool MyOrderSend( MqlTradeRequest &req, MqlTradeResult &res ){

  
  //Print("Попытка выполнения OrderSend ... ");
  Print("Try to execute OrderSend ... for ", req.symbol );
  ResetLastError();
  if (OrderSend( req, res  )){
    if( res.retcode != TRADE_RETCODE_DONE ){
      //Print("Ошибка обработки торгового запроса,код ответа сервера: ", res.retcode, "Описание:", TradeServerReturnCodeDescription(res.retcode) );
      Print("Error of trade requaest: ", res.retcode, "Description:", TradeServerReturnCodeDescription(res.retcode) );
      Print(STradeRequest(req) );
      return(false);
    }else{
      //Print("Успех, код ответа сервера: ", IntegerToString(res.retcode), " Описание:",  TradeServerReturnCodeDescription(res.retcode)  );
      Print("Success, return code is : ", IntegerToString(res.retcode), " Description:",  TradeServerReturnCodeDescription(res.retcode)  );
      Print(STradeRequest(req) );
    }
    return(true);
  }else{
    //Print("Ошибка выполнения OrderSend в ", __FUNCTION__, " _LastError=", _LastError, " ",  ErrorDescription(_LastError) );
    Print("Error of execution OrderSend in ", __FUNCTION__, " _LastError=", _LastError, " ",  ErrorDescription(_LastError) );
    //Print("Код ответа сервера: ", IntegerToString(res.retcode), " Описание:",  TradeServerReturnCodeDescription(res.retcode)  );
    Print("Server return code : ", IntegerToString(res.retcode), " Description:",  TradeServerReturnCodeDescription(res.retcode)  );
    Print(STradeRequest(req) ); 
    return(false);
  }
  return(true);
}


其中


OrderSend( req, res  )

本地mql函数,没有重载。

即这里

 Print("Try to execute OrderSend ... for ", req.symbol );


它说它为GBPUSD设置了一个止损,应该是这样的,但事实上


OrderSend( req, res  )


为Eurusd设置

 
Aleksey Sergan:

我在这里看了一下日志。

更改止损的指令是针对高亮行gpbusd发送的,但实际上是针对下一行eurusd执行的。

有两个错误。

№1.你的错误。在代码的某个地方。你用英镑兑美元的价格为欧元兑美元的头寸设置SL。终端应该没有什么反对意见。

№2.终端中的错误。如果这个SL被触发的价格在当时的欧元兑美元流量中并不存在,使用英镑兑美元的价格。

 
Aleksey Sergan:

我在这里看了一下日志。

更改止损的指令是针对高亮行gpbusd发送的,但实际上是针对eurusd-下一个执行。


以下是设置停止的代码



其中


本地mql函数,没有重载。

https://www.mql5.com/ru/docs/constants/structures/mqltraderequest

显然,在发送修改请求时,位置字段优先于符号。打印req.position

Документация по MQL5: Константы, перечисления и структуры / Структуры данных / Структура торгового запроса
Документация по MQL5: Константы, перечисления и структуры / Структуры данных / Структура торгового запроса
  • www.mql5.com
Взаимодействие клиентского терминала и торгового сервера для проведения операций постановки ордеров производится посредством торговых запросов. Запрос представлен специальной предопределенной структурой MqlTradeRequest, которая содержит все поля, необходимые для заключения торговых сделок. Результат обработки запроса представлен структурой...