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

 
Stacy:
我非常感谢这篇文章,它帮了我大忙。写完 EA 代码后,我按下了调试按钮,结果被告知有 10 个错误,而您的文章中没有任何纠正这些错误的信息。请尽快给我回信。

你好,斯泰西、

感谢您的赞美,正如您所说,文章中没有讨论如何纠正某些代码错误,不过,我们很快就会发表另一篇文章,详细解释如何解决代码错误。

敬请期待。

谢谢

塞缪尔

 

大家好!

我是一个初学者,我正试图按照指南编写一个 E.A,但它没有做出卖出或买入指令。

我的算法是使用 2 个 ma(6 和 12)和 1 个 rsi(14),就像这样:


bool Buy_Condition_1 = (maVal_fast[0]<maVal_slow[0]) && (maVal_fast[1] > maVal_slow[1]);

bool Buy_Condition_2 = (rsiVal[0] < Pereprod);

if(Buy_Condition_1 && Buy_Condition_2)

{

// 胡说......胡说......

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); // Take Profit
mrequest.volume = Lot;// 交易手数

mrequest.type =ORDER_TYPE_BUY

// .............


}

但是它没有跳转到上面的代码段,所以不能自动交易。

我需要帮助 :(.

我使用 PRICE_MEDIAN 而不是 PRICE_CLOSE(我不知道它们之间的区别)。

谢谢。

Documentation on MQL5: Standard Constants, Enumerations and Structures / Trade Constants / Order Properties
  • www.mql5.com
Standard Constants, Enumerations and Structures / Trade Constants / Order Properties - Documentation on MQL5
 

hi everyone!

i am a beginer and i am trying to write an E.A follow the guide but it did not make sell or buy order.

您好、

能否请您提供代码,以便我们了解问题出在哪里?

 

Мы решили хранить значения Stop Loss и Take Profit в определенных ранее переменных STP и TKP. Почему мы это сделали?

这样做是因为输入参数的值不能修改,它们是只读的。

我们需要确保我们的智能交易系统能在所有经纪商处正常运行。要根据图表的当前符号确定报价的准确性,可以使用以下方法。

受人尊敬、经验丰富的程序员使用了一种神奇的 "方法 "来 "解决 "五位数符号的问题。现在,这种 "方法 "也在初学者中推广开来,可以说是在教育文献中。

作者给出的 "方法 "完全抹杀了 5 位数的全部优势。作者没有向初学者解释,引入 5 位数报价后,可以设置的获利点数不是 10 个点,而是 10.5 个点。还要解释在使用带有 5 位数报价的智能交易系统时,有必要指定止盈不是 10 个点,而是 100 个点。但程序代码中并没有这样的解释,而是引入了一些字符串,从程序上导致无法利用 5 位数报价。

"我们必须确保我们的 EA 能在所有经纪商处正常运行"。好吧,我们确定了,然后呢?如果 Expert Advisor 在程序上 "被判正确运行",现在如何利用 5 位数报价的优势?

[删除]  
abolk:

德高望重、经验丰富的程序员用一种神奇的 "方法 "来 "解决 "五位数的问题。现在,这种 "方法 "也在初学者中推广开来,可以说是在教育文献中。

作者给出的 "方法 "完全抹杀了 5 位数的全部优势。作者没有向初学者解释,引入 5 位数报价后,可以设置的获利点数不是 10 个点,而是 10.5 个点。还要解释在使用带有 5 位数报价的智能交易系统时,有必要指定止盈不是 10 个点,而是 100 个点。程序代码中没有这些解释,而是引入了一些行,这些行在编程上无法使用 5 位数报价的优势。

"我们必须确保我们的 EA 能在所有经纪商处正常运行"。好吧,我们确定了,然后呢?如果智能交易系统在程序上被 "判定为正确服务",我们现在又如何使用 5 位数报价的优势呢?

10.5 是另一种说法:)

如果我们考虑到需要在不同精度的账户上进行通用工作,那么 4 位数的标准化是完全可以理解的。

如果所有经纪商都使用 5 位数的账户,也许就不需要这样的处理了(尽管为了代码的通用性,存在这样的区块也无妨)。

但我不明白这怎么会妨碍利用第 5 位数字的优势。

这个区块的精确度允许您使用第一个四位数点数(有条件的 "标准"),如果是五位数,则为 10 点。

PS

我认为大多数经纪商不允许使用更小的数值。即使他们允许而且有必要,也有可能摆脱困境(即使使用 0.1-0.9 这样的奇特值)。

 
Interesting:

10.5 仍有争议)

如果我们考虑到不同精度的账户需要通用工作,那么 4 位数的标准化是完全可以理解的。

如果所有经纪商都使用 5 位数的账户,也许就没有必要进行这样的处理了(不过,为了代码的通用性,有这样的区块也无妨)。

但我不明白这如何妨碍利用第 5 位数字的优势。

这个区块的精确度允许使用 1 个四位数点数(有条件的 "标准"),如果是五位数,则为 10 点。

PS

我认为大多数经纪商都不允许使用更小的数值。即使他们允许,而且有必要使用,也有可能摆脱困境(甚至使用 0.1-0.9 这样的奇特值)。

4 位数的价格变化 为 0.0001,5 位数的价格变化 为 0.00001。

4 位数不可能在 10.5 个标准点后平仓,但 5 位数却有可能。

如果以编程方式使用上述程序块,那么在 5 位数符号上使用智能交易系统时,将无法更改止损点,例如,在 10.5 个标准点时止损。这一点对剥头皮者很重要。

为了让 Expert Advisor 在 4 位数和 5 位数上正常工作 有必要在四舍五入时考虑到报价的符号,并在输入参数中设置止损时手动 考虑到 10 个标准点被写成 100。

否则,如果使用这样的区块,那么当从 k5 位数切换到 4 位数时,将不得不除以什么?

这些都是输入参数,为什么要用它们进行 "奇怪 "的转换操作呢?

 
abolk:

4 位数不可能在 10.5 个标准点后平仓,但 5 位数却有这种可能性。

您进行交易吗?还是你只是在推测?

我很难想象一个 EA,改变 0.5 个点的 TP 会对结果产生多大影响。对于 99% 的智能交易系统来说,用 4 位数的点数指定所有数值更简单、更方便。在普通教育文章中描述剩下的 1%是没有意义的。

[删除]  
komposter:

你在交易吗?还是只是想理论一下?

我很难想象一个 EA 的 TP 值改变 0.5 点会对结果产生多大影响。对于 99% 的智能交易系统来说,用四位数点数指定所有数值更简单方便。而对于剩下的 1%,在普通教育文章中进行描述是没有意义的。

+1.

这不是交易精确度的问题,而是这 10.5 个点听起来像什么,会让每个人(尤其是初级交易者)感到困惑。

根据定义,点是价格变化的最小单位。也许我错了?

在现实生活中,不太可能出现以 5 个五位数点(0.5 个标准点)为止损点和止赢点的 EA。

我甚至将此类智能交易系统的数量定义为总数的 0.1-0.01%。

PS

这里不考虑基于交易操作 结果的内部计算(每个人都可以四舍五入到必要的精确度)。



 
abolk:

作者给出的 "方法 "完全抹杀了 5 位数报价的所有优点。他没有向初学者解释,引入 5 位数报价后,例如,止盈可以设置为 10.5,而不是 10 个点。还要解释在使用带有 5 位数报价的智能交易系统时,有必要指定止盈不是 10 个点,而是 100 个点。但程序代码中并没有这样的解释,而是引入了几行代码,在程序上不允许使用 5 位数报价的优势。

我完全支持该评论的作者。

有需要的人可以四舍五入到第 3 位数。但在一般情况下这样做是一个严重的错误。

精确度越高越好,不值得因为一些纯粹主观的实际用途观点而使每个人都失去精确度。

附注: 在一般情况下,SL 和 TP 设置的不是绝对值(这在任何地方都是公认的),而是相对值。这样,点数、5-符号、点数-美元和其他牵强附会的问题就会自行消失。

 

abolkhrenfx,究竟争论的是什么?让我们仔细阅读一下文章的标题:"...无论从标题还是内容来看,这篇文章都充分说明了它的目的。 听我对于初学者来说,专家的四舍五入精度并没有什么区别,主要的方法是:"我们只需要处理好EA 的编写"。就我个人而言,作为一名初学者,"四舍五入 "到 4 位数的技巧(虽然是在另一篇文章中)非常有用,揭示了编程技巧之一。随着经验的积累,高水平的专家将能够决定以何种精度进行计算/交易,而我们讨论的这篇文章丝毫不会妨碍他们。 这篇文章丝毫没有妨碍您:)。其他人也一样:"当他们成长到你的水平时,他们会自己想办法"。

我想再次提请您注意:文章的作者并没有把他对这个问题的看法强加于人,也没有讨论使用 4 位或 5 位数字的价值。作者只是帮助初学者使用某些编程技巧掌握 MQL5 编程的初始步骤。