错误 4756 - 页 3

 
BHC:

我的EA在构建778时带来了奇怪的错误。0.1的成交量是正常的,显然不是无效的。

你能不能检查一下白银的符号属性,让我们知道SYMBOL_VOLUME_MIN和SYMBOL_VOLUME_STEP 是什么。 仅仅归一化并不总是足够的,例如,如果你的成交量步长是0.5,那么归一化就不能帮助你。
 
RaptorUK:
你能不能检查一下Silver的符号属性,并让我们知道SYMBOL_VOLUME_MIN和SYMBOL_VOLUME_STEP 是什么。 仅仅规范化并不总是足够的,例如,如果你的体积步长是0.5,那么规范化就不能帮助你。

这个来源

Print(" volume step: ",SymbolInfoDouble(_trade_symbol,SYMBOL_VOLUME_STEP),", volume minimum: ",", ",SymbolInfoDouble(_trade_symbol,SYMBOL_VOLUME_MIN)); return;
         

在测试者的日志中给出了这个...

2013.03.12 12:46:01 Core 1 2013.01.23 13:32:59 volume step: 0.1, volume minimum:, 0.1

 
BHC:

这个来源

在测试者的日志中给出了这个...

2013.03.12 12:46:01 Core 1 2013.01.23 13:32:59 volume step: 0.1, volume minimum:, 0.1

问题可能出在你的错误报告上,我没有用mql5检查过,但这在mql4上是行不通的 . .

if(_result.retcode != ( 0 || TRADE_RETCODE_PLACED || TRADE_RETCODE_DONE))

相反,试试这个 .

if( _result.retcode != 0 && _result.retcode != TRADE_RETCODE_PLACED && _result.retcode != TRADE_RETCODE_DONE )
 
这样就摆脱了错误!谢谢
 
BHC:
这就摆脱了错误!谢谢
if(_result.retcode != ( 0 || TRADE_RETCODE_PLACED || TRADE_RETCODE_DONE))

是否有任何语言的这种语法是有效的?

 
其实我也没有遇到过......。我想我是从某人的订单检查的实施中得到的。它是在这个网站上...
 
angevoyageur:

是否有任何语言的这种语法是有效的?

也许,如果变量是bool类型的,它可能会有一些意义。我在mql4论坛上看到一些人做了类似的事情,这是一个简单的错误。
 
RaptorUK:
这是你找到的线程吗?https://www.mql5.com/en/forum/10850,它报告的问题与我的问题相同。

我没有看到这个主题。

解决方案就像我说的那样,使用OnTradeTransaction()事件处理程序(不要使用这个代码,它是用来试验和测试的)。

void OnTradeTransaction(const MqlTradeTransaction& trans,
                        const MqlTradeRequest& request,
                        const MqlTradeResult& result)
                        {

    if (trans.type == TRADE_TRANSACTION_DEAL_ADD) {

        if (execution == SYMBOL_TRADE_EXECUTION_MARKET) {
            if (!trade.PositionModify(_Symbol, _sl, _tp))
                if (debugMode) {
                    Print("Modify SL & TP failed. Return code=", trade.ResultRetcode(), ". Code description: ", trade.ResultRetcodeDescription());
                    Print("Deal ticket : ", trans.deal);
                }
            else
                if (debugMode) Print("Modify SL & TP executed successfully. Return code=", trade.ResultRetcode(), " (", trade.ResultRetcodeDescription(),")");
        }

    }
}   

这是在工作。_sl和_tp是全局变量,在本地处理肯定更好。我想你可以用OrderSend()做同样的事情。

 
angevoyageur:

我没有看到这个主题。

解决方案就像我说的那样,使用OnTradeTransaction()事件处理程序(不要使用这个代码,它是用来试验和测试的)。

这是在工作。_sl和_tp是全局变量,在本地处理肯定更好。trade是CTrade类的类型。我想你可以用OrderSend()做同样的事情。

我远离CTrade类,试图学习基础知识,我从来没有使用过OOP,所以类、结构等都是我学习mql5的一部分。

我相信OnTradeTransaction()会提供一个变通方法,但对我来说,即使对我正在做的简单EA来说,它似乎也是一个相当可怕的方法,OrderSend() 的文档中也没有提到需要使用它。我想,我将确认,我在策略测试器中看到了同样的问题,不确定这到底是如何发生的,我将在增加一些错误报告后再试一次,以确保。

 
RaptorUK:

我远离CTrade类,试图学习基础知识,我从来没有使用过OOP,所以类、结构等都是我学习mql5的一部分。

我相信OnTradeTransaction()会提供一个变通方法,但对我来说,即使对我正在做的简单EA来说,它似乎也是一个相当可怕的方法,OrderSend() 的文档中也没有提到需要使用它。我想,我将确认,我在策略测试器中看到了同样的问题,不确定这到底是如何发生的,我将在增加一些错误报告的情况下再次尝试,以确保。

我理解你对OOP的立场。它总是 比 "传统 "方法花费 更多的时间,对于大型(或中型)项目来说是非常有用的。

我很 知道对于我们的问题是否存在一个 "经典 "的解决方案。