文章 "针对初学者以 MQL5 编写“EA 交易”的分步指南" - 页 21

 

大家好、

我是 MQL5(以及外汇交易)的新手,但我是一名资深程序员。我打开了 My_First_EA.mq5 文件并进行了编译,但没有调试功能。如果打开任何示例脚本文件,我都能看到调试选项。此外,我还收到一个警告:应检查 "OrderSend "的返回值。我应该怎么做才能获得调试功能?

路易斯

 
louisd:

大家好

我是 MQL5(以及外汇交易)的新手,但我是一名资深程序员。我打开了 My_First_EA.mq5 文件并进行了编译,但没有调试功能。如果打开任何示例脚本文件,我都能看到调试选项。此外,我还收到一个警告:应检查 "OrderSend "的返回值。我应该怎么做才能获得调试功能?

路易斯

大家好、

我发现了自己的问题。我用智能交易向导创建了一个新项目,然后复制了 My_First_EA.mq5 文件,就获得了调试功能。

路易斯

 
louisd:

大家好

我发现了自己的问题。我用智能交易向导创建了一个新项目,然后复制了 My_First_EA.mq5 文件,就得到了调试功能。

路易斯

但您是否修复了 "应检查 订单发送 "警告?
 
Boobwood:

我遇到了 4756 错误,我在第 2 页看到了解决方案,并检查了原始代码,在第 218 行中有 ZeroMemory(mrequest);,但我仍然遇到了 4756 错误。


我在做了建议的两项更正后,仍然出现了这个错误:

ZeroMemory(mrequest);

以及

if(Buy_opened || Sell_opened)

请问谁能帮助我解决错误 4756?似乎无法下买入订单。

 
Tchuso:

你好,我遇到了一个错误:

OrderSend 的返回值应检查第 213 行和第 259 行。


你解决了吗?

早上好,Tchuso、

我也遇到了同样的问题。我用这个替换了两个操作中的这几行,解决了问题。

if(!OrderSend(mrequest,mresult))
PrintFormat("OrderSend error %d",GetLastError());

如果需要帮助,请告诉我,我也是新手。

向您致以最诚挚的问候!

 

我很喜欢这个示例 代码,我也是新手,我修改了注释中的代码,现在不会再出错了。

问题是,机器人无法打开交易,甚至无法打开交易。

有人能解决这个问题吗?


我使用的是策略测试器的 "Unico "选项:是我的错误吗?


感谢您的时间和支持
 


我注意到机器人试图打开订单,但总是出错:


Exit:

2020.05.06 20:35:16.141 Core 1 2020.04.20 20:25:00 failed market sell 0.10 EURUSD sl: 1.08965 tp: 1.07665 [Invalid request](无效请求)。


我修改了代码中的一些内容,但还是不行,我添加了我的代码:


Original: mrequest.type_filling = "我已经按照文档中的 3 种方式进行了设置"。

 mrequest.action = TRADE_ACTION_DEAL;                                  // 立即执行订单
         mrequest.price = NormalizeDouble(latest_price.ask,_Digits);           // 最新卖出价
         mrequest.sl = NormalizeDouble(latest_price.ask - STP*_Point,_Digits); // 止损
         mrequest.tp = NormalizeDouble(latest_price.ask + TKP*_Point,_Digits); // 获利
         mrequest.symbol = _Symbol;                                            // 货币对
         mrequest.volume = Lot;                                                 // 交易手数
         mrequest.magic = EA_Magic;                                             // 订购神奇号码
         mrequest.type = ORDER_TYPE_BUY;                                        // 购买订单
         mrequest.type_filling = ORDER_FILLING_RETURN;                             // 订单执行类型
         mrequest.deviation=100;                      
        



Tambien he probado este codigo:

 //--- 请求和结果的声明和初始化
               MqlTradeRequest request={0};
               MqlTradeResult  result={0};
            //--- 应用程序参数
               request.action   =TRADE_ACTION_DEAL;                     // 企业经营类型
               request.symbol   =Symbol();                              // 符号
               request.volume   =0.1;                                   // 0.1 手的交易量
               request.type     =ORDER_TYPE_BUY;                        // 订单类型
               request.price    =SymbolInfoDouble(Symbol(),SYMBOL_ASK); // 起始价格
               request.deviation=5;                                     // 允许的价格偏差
               request.magic    =EA_Magic;                          // 订单的神奇编号

               //--- 发送应用程序
               if(!OrderSend(request,result))
               PrintFormat("OrderSend error %d",GetLastError());     // 如果请求无法发送,请输入错误代码
               //--- 有关操作的信息
               PrintFormat("retcode=%u  deal=%I64u  order=%I64u",result.retcode,result.deal,result.order);
 
Libni Colina:


我注意到,机器人试图打开订单,但总是出错:


Exit:

2020.05.06 20:35:16.141 Core 1 2020.04.20 20:25:00 failed market sell 0.10 EURUSD sl: 1.08965 tp: 1.07665 [Invalid request].


我修改了代码中的几处内容,但仍不起作用:


Original: mrequest.type_filling = "我按照文档中的 3 种方式进行了设置"。


将此添加到代码顶部:

#include <Trade\Trade.mqh>

然后只需键入以下内容即可打开操作:

double volumen= 0.01; // 或你想要的任何音量

CTrade m_trade;

m_trade.Buy(volumen); // 购买

m_trade.Sell(volumen); // 销售
 
你好,谢谢你的教程,对我很有帮助。但我有一个误解,New_Time 变量是用CopyTimes 函数 声明和初始化的,而 Old_Time 变量是声明的,但一开始并没有初始化,然后才与 New_Time 变量进行比较,以验证是否有新的条形图。Old_Time 应该是空的。我不知道我描述得对不对,但感谢您的阅读。
 

您好、


同样,我在进行测试时也遇到了错误代码 4756,显示 "卖出订单 请求无法完成"。

请告知如何解决这个问题。


谢谢