test onEURUSD,H1 (netting) 2020.04.15 15:47:05 failed modify #44 sell 0.2 EURUSD sl: 1.08929, tp: 1.08599 -> sl: 1.08919, tp: 1.08599 [Modification failed due to order or position being close to market] 由于订单或头寸接近市场,修改失败。
test on EURUSD,H1 (netting) 2020.04.15 15:47:05 failed modify #44 sell 0.2 EURUSD sl: 1.08929, tp: 1.08599 -> sl: 1.08919, tp: 1.08599 [Modification failed due to order or position being close to market] 我的EA在注册新产品时返回错误。
但我的 EA 是在 WIN$ 上运行的,而不是外汇。为什么测试器不让你知道运行哪种资产?
现在我怎么才能纠正没有错误的东西,因为 EA 运行得很好,我只是无法注册产品进行销售。
机器人必须准备好在任何资产上运行....。
要纠正上述错误,您必须在修改仓位前进行以下检查:
//+--------------------------------------------------------------------------------------------------------------------+//| 检查止盈/止损与收盘价之间的距离是否大于 SYMBOL_TRADE_STOPS_LEVEL//+--------------------------------------------------------------------------------------------------------------------+bool Check_SL_TP(ENUM_ORDER_TYPE type, double SL, double TP)
{
//--- 本地变量bool SL_check = false, TP_check = false;
//--- 确定当前符号的最后价格double BID = SymbolInfoDouble(_Symbol, SYMBOL_BID);
double ASK = SymbolInfoDouble(_Symbol, SYMBOL_ASK);
//--- 获取 SYMBOL_TRADE_STOPS_LEVEL 级别int stops_level = (int)SymbolInfoInteger(_Symbol, SYMBOL_TRADE_STOPS_LEVEL);
if(stops_level != 0)
{
PrintFormat("SYMBOL_TRADE_STOPS_LEVEL=%d: StopLoss and TakeProfit must not be nearer than %d points from the closing price", stops_level, stops_level);
}
//--- 仅检查两种订单类型switch(type)
{
//--- 购买操作caseORDER_TYPE_BUY:
{
//--- 检查止损
SL_check = (BID - SL > stops_level * _Point);
if(!SL_check)
{
ERRMSG = StringFormat("For order %s StopLoss=%.5f must be less than %.5f (Bid=%.5f - SYMBOL_TRADE_STOPS_LEVEL=%d points)", EnumToString(type), SL, BID - stops_level * _Point, BID, stops_level);
}
//--- 检查 TakeProfit
TP_check = (TP - BID > stops_level * _Point);
if(!TP_check)
{
ERRMSG = StringFormat("For order %s TakeProfit=%.5f must be greater than %.5f (Bid=%.5f + SYMBOL_TRADE_STOPS_LEVEL=%d points)", EnumToString(type), TP, BID + stops_level * _Point, BID, stops_level);
}
//--- 返回检查结果return(SL_check && TP_check);
}
//--- 卖出操作caseORDER_TYPE_SELL:
{
//--- 检查止损
SL_check = (SL - ASK > stops_level * _Point);
if(!SL_check)
{
ERRMSG = StringFormat("For order %s StopLoss=%.5f must be greater than %.5f (Ask=%.5f + SYMBOL_TRADE_STOPS_LEVEL=%d points)", EnumToString(type), SL, ASK + stops_level * _Point, ASK, stops_level);
}
//--- 检查 TakeProfit
TP_check = (ASK - TP > stops_level * _Point);
if(!TP_check)
{
ERRMSG = StringFormat("For order %s TakeProfit=%.5f must be less than %.5f (Ask=%.5f - SYMBOL_TRADE_STOPS_LEVEL=%d points)", EnumToString(type), TP, ASK - stops_level * _Point, ASK, stops_level);
}
//--- 返回检查结果return(TP_check && SL_check);
}
break;
}
//--- 验证成功return(false);
}
Предлагаю свой набор торговых функций в виде готового советника. Представленный способ позволяет получать множество торговых стратегий простым добавлением индикаторов и изменением входных параметров.
我的 EA 在注册新产品时返回错误:
test onEURUSD,H1 (netting) 2020.04.15 15:47:05 failed modify #44 sell 0.2 EURUSD sl: 1.08929, tp: 1.08599 -> sl: 1.08919, tp: 1.08599 [Modification failed due to order or position being close to market] 由于订单或头寸接近市场,修改失败。
但我的 EA 是在 WIN$ 上运行的,而不是外汇。为什么测试器不让你知道运行哪种资产?
现在我怎么才能纠正没有错误的东西,因为 EA 运行得很好,我只是无法注册产品进行销售。
我的 EA 在注册新产品时返回错误:
test on EURUSD,H1 (netting) 2020.04.15 15:47:05 failed modify #44 sell 0.2 EURUSD sl: 1.08929, tp: 1.08599 -> sl: 1.08919, tp: 1.08599 [Modification failed due to order or position being close to market] 我的EA在注册新产品时返回错误。
但我的 EA 是在 WIN$ 上运行的,而不是外汇。为什么测试器不让你知道运行哪种资产?
现在我怎么才能纠正没有错误的东西,因为 EA 运行得很好,我只是无法注册产品进行销售。
机器人必须准备好在任何资产上运行....。
要纠正上述错误,您必须在修改仓位前进行以下检查:
请参阅下面文章中机器人应进行的其他检查:
交易机器人在市场上发布前应通过哪些测试 - MQL5 文章
你好,我无法编辑我的一个旧产品的产品描述。
我按照各种论坛上的说明进行了操作,包括重新编写描述、从市场上隐藏等等,但描述仍然恢复到原始版本。
现在,我再也无法在市场上恢复产品,也无法对其进行编辑。我已在论坛上请求与此问题相关的帮助,但至今没有得到任何帮助。
如何解决 "无法编辑产品描述 "的问题?请提供帮助
加载智能交易系统并进行测试时,它写入了一个错误,我不知道如何纠正。
测试欧元兑美元,H1(净额结算)
2020.04.14 00:24:42 在 1.09044 处即时买入 0.01 欧元兑美元失败 [无效交易量]
2020.04.14 00:24:45 在 1.09044 即时买入 0.01 欧元兑美元失败 [无效交易量]
2020.04.14 00:24:48 在1.09037即时买入0.01欧元兑美元失败 [无效交易量]
2020.04.21 00:01:34 即时买入0.01欧元兑美元失败,价格为1.08626 [无效交易量]
2020.04.21 00:01:37 在1.08626价位即时买入0.01欧元兑美元失败 [无效交易量]
2020.04.21 00:01:40 在1.08626价位即时买入0.01欧元兑美元失败 [无效交易量]
2020.04.27 16:08:24 即时卖出 0.01 EURUSD 失败,价格 1.08546 [无效交易量]
2020.04.27 16:08:27 在1.08548价位即时卖出0.01欧元兑美元失败 [无效交易量]
2020.04.27 16:08:30 在1.08547价位即时卖出0.01欧元兑美元失败 [无效交易量]
2020.04.29 20:15:52 在1.08565价位即时卖出0.01欧元兑美元失败 [无效交易量]
2020.04.29 20:15:55 0.01 EURUSD即时卖出失败,价格为1.08566 [无效交易量]
2020.04.29 20:15:58 0.01 EURUSD即时卖出失败,价格1.08566 [无效交易量]
2020.05.18 00:12:09 即时买入 0.01 欧元兑美元,价格为 1.08134 [无效交易量] 失败
2020.05.18 00:12:12 在1.08134价位即时买入0.01欧元兑美元失败 [无效交易量]
2020.05.18 00:12:15 在1.08143价位即时买入0.01欧元兑美元失败 [无效交易量]
2020.05.21 15:50:25 即时卖出 0.01 EURUSD 失败,价格 1.10031 [无效交易量]
2020.05.21 15:50:28 0.01 EURUSD即时卖出失败,价格1.10034 [无效交易量]
2020.05.21 15:50:31 即时卖出 0.01 欧元兑美元,价格 1.10036 失败 [无效交易量]
2020.05.25 19:00:05 即时买入 0.01 欧元兑美元,价格为 1.08950 [无效交易量] 失败
2020.05.25 19:00:08 在1.08951价位即时买入0.01欧元兑美元失败 [无效交易量]
2020.05.25 19:00:11 Instant Buy 0.01 EURUSD at 1.08952 [Invalid volume] 失败
没有交易操作
加载智能交易系统并进行测试时会写入错误,但不清楚如何纠正。
在欧元兑美元 H1(净价)上测试
2020.04.14 00:24:42 在 1.09044 处即时买入 0.01 欧元兑美元失败 [无效交易量]
***
阅读并写入代码
交易操作中不正确的交易量
在发送交易订单之前,还有必要检查订单中指定的交易量是否正确。在调用 OrderSend() 功能之前,应检查 Expert Advisor 在订单中指定的手数。对于金融工具,规范 规定了 允许的最小和最大交易量以及交易量分级。在 MQL5 中,您可以 使用 SymbolInfoDouble() 函数从 ENUM_SYMBOL_INFO_DOUBLE 枚举 中获取这些值。
没有帮助,我可以修改其他代码吗?
您能告诉我如何完善脚本吗?
阅读它,将其写入代码
贸易业务中不正确的交易量
在发送交易订单之前,还有必要检查订单中指定的交易量是否正确。在调用 OrderSend() 功能之前,应检查 Expert Advisor 在订单中指定的手数。对于金融工具,规范 规定了 允许的最小和最大交易量以及交易量分级。在 MQL5 中,可以 使用 SymbolInfoDouble() 函数从 ENUM_SYMBOL_INFO_DOUBLE 枚举 中获取这些值。
没有帮助,我可以修改其他代码吗?
您能告诉我如何完善脚本吗?
请完整阅读文章,"CheckVolumeValue "是对输入参数正确性的检查。
此外,还需要检查批次四舍五入是否正确......
考虑到未结头寸的交易量和挂单 的交易量,最终的检查结果将如下所示:
add?
checkvolumevalue.mq5 如下所示
添加?
checkvolumevalue.mq5 如下所示
所有必要的检查都在这篇文章中几乎一个用于创建 EA 的构造函数
前面提到的代码合适吗?
您可以编写文章中必要的几行。