EA 锤识别问题
1 页面的第 522 页 12 上一个上一个
Results 1 to 10 of 13

Thread: EA 锤识别问题

  1. #1
    我希望有人可以帮助解决这个问题。我是一个非常新的编码员,正在尝试创建能够识别锤子或倒锤子的逻辑。一旦它检测到它们令我满意,我将继续为订单等创建 EA。

    该代码应该标记收盘价 = 高价或收盘价 = 低价的所有蜡烛。它标记了一些但不标记其他人。任何帮助将不胜感激。

    计算机在价格中看到的数字是否比我们看到的更多。例如,收盘价和最高价均为 1.44551;计算机可能看到 1.445519 吗?


    Quote Originally Posted by ;
    #property 版权所有 VMesquita
    #property indior_chart_window/在主图表窗口中绘制 indior
    #property indior_buffers 1
    整数限制;
    初始化()
    {
    //----
    返回(0);
    }
    int deinit()
    {
    返回(0);
    }
    内部开始()
    {
    双 O、C、H、L、O1、C1、H1、L1、O2、C2、H2、L2;
    字符串文本;
    int counted_bars=IndiorCounted();
    limit=Bars-counted_bars;
    //---- 检查可能的错误
    如果(counted_barslt;0){
    警报(没有酒吧..);
    返回(-1);
    }
    //---- 最后计算的柱将被重新计算
    for(int i=1; ilt;limit; i ) {
    TO=Open(NULL,0,i);
    C=iClose(NULL,0,i);
    H=iHigh(NULL,0,i);
    L=iLow(NULL,0,i);

    O1=iOpen(NULL,0,i-1);
    C1=iClose(NULL,0,i-1);
    H1=iHigh(NULL,0,i-1);
    L1=iLow(NULL,0,i-1);
    O2=iOpen(NULL,0,i 1);
    C2=iClose(NULL,0,i 1);
    H2=iHigh(NULL,0,i 1);
    L2=iLow(NULL,0,i 1);


    文字=;
    如果(((H-L)gt;4*(O-C))((C-L)/(0.001 H-L)gt;=0.75)((O-L)/(0.001 H-L)gt;=0.75)) text=Hang;
    如果(H==C)文本=购买;
    如果(C==L)文本=卖出;

    //如果我们发现一个特殊的 candlem 写在图表中
    如果(文字!=)
    {
    ObjectCreate(DoubleToStr(i,0) label, OBJ_TEXT, 0, Time[i], H);
    ObjectSetText(DoubleToStr(i,0) label, text, 15, Arial, Blue);
    播放声音(wait.wav);
    }
    }
    }
    代码的原始信用归功于 VMesquita...我对它的改动很小。

  2. #2
    Codemeister,是的,你确实提供了代码,我非常感谢你的时间和精力。问题出在我身上,我无法将各个部分组合在一起形成连贯的代码。当然,我敢肯定,您一直都在听说为这个或那个编写代码应该是多么容易。我将回到绘图板,试图了解各个部分需要如何流动。你知道有什么书可以让你从小处着手,然后逐渐给你所需的部分吗?我所看到的所有内容都对学习者可能不知道的信息做出了相当多的假设。 C 是最接近 MQL 的编程语言吗?

  3. #3

    Quote Originally Posted by ;
    感谢那些自学编程的人!我不敢相信这有多难。这是我最后一次尝试,但我不明白我在写什么。
    嘿 max..... 不要让它成为你的最后一次尝试..... 请记住,这个论坛上有很多人花费了多年和/或数千美元的大学资金来学习你的尝试几个月后自己学习....../--- 如果你的目标是识别烛台模式并相应地进行交易,最好将要求编码到 ea 中......它更简单、更清晰......不清楚你对锤子和倒锤子的定义是什么,所以下面的例子代表了一个看涨吞没模式......h 插入代码 bool bull() { if((Close #91;2#93;lt;打开#91;2#93 (打开#91;1#93;lt;关闭#91;2#93 (关闭#91;1#93;gt;打开#91;2#93;))返回(真);否则返回(假); }/---/--- 你也可以使用数字来满足不同的符号....插入代码 NormalizeDouble(Close#91;1#93;,Digits);

  4. #4
    首先,正如我之前告诉您的那样,您不能对内容进行硬编码并期望它能正常工作。例如,在 NormalizeDouble() 调用中,您有 5 个不适用于日元对。请改用预定义变量 Digits。我已经提供了这段代码,但没有正确使用。 bool hammer = MathAbs(High[1] - Close[1]) lt; nps*点;其余的代码对我来说是不可理解的。您需要正确缩进代码并将其放在哈希标签中。

  5. #5
    感谢那些自学编程的人!我不敢相信这有多难。这是我最后一次尝试,但我不明白我在写什么。以下不断给我错误。我的目标如下:只要收盘价在高点或低点的 0.00002(日元为 0.002)以内时,放置一个箭头并打印到日志文件。如果在高范围内,我希望它在超过 21 ema 时发出信号,反之亦然。 int start() { int counter=1; for(int i=1; ilt;=Bars; i ) NormalizeDouble(Close[1],5); NormalizeDouble (High[1],5); NormalizeDouble (低[1],5); double nps=2 bool High[1]-Close[1]lt;= nps*Point;返回(0);

  6. #6
    您需要首先通过在生成信号时放置 Print() 语句来检查您的代码。假设这不是问题,它可能在 MT4 中。当 MT4 繁忙或我的计算机负载不足时,我遇到了 Objects 问题。我还没有看到延迟的对象,它们从来没有被创建/删除/更新过。假设问题首先是编码。

  7. #7
    感谢汉诺威和 CodeMeister!我现在遇到的问题是,信号未放置在图表上的以下柱开盘时。在一种情况下,它直到 3 或 4 个小节后才显示。有什么建议么?

  8. #8

    Quote Originally Posted by ;
    nps 代表什么?
    这是以点为单位的公差(您在上一篇文章中谈到的)。对于 5 位数的 br0ker,一个点是一个点的十分之一。对于 5 位 br0ker,对于非日元货币对,Point = .00001,对于 JPY 货币对,Point = .001 因此,如果您将 nps 设置为 2 的容差,那么无论货币对如何,nps*Point 都将为 2 点,从而使您的 indy在所有对上都能正常工作。

  9. #9

  10. #10
    您应该避免在程序中对任何内容进行硬编码。不是与 .00002 进行比较,而是与 nps*Point 进行比较,其中 nps 设置为 2 或某个数字。这将使代码适用于日元对以及其他货币对,并使更改更容易进行。 bool hammer = MathAbs(High[1] - Close[1]) lt; nps*点;

发布权限

  • 您不可发布新主题
  • 您不可回复
  • 您不可发布附件
  • 您不可编辑您的帖子
  •  
  • BB代码是打开的
  • 表情符号是打开的
  • [IMG]代码是打开的
  • [视频]代码是打开的
  • HTML代码是关闭的
histoforex网站使用cookie 文字跟踪
histoforex网站使用cookie 文字跟踪,某些设定已经固定。您可以点击此处阅读我们的Cookie使用说明。 请点击右键接受我们的cookies。如果您选择继续使用histoforex网站,我们将认为您接受我们的cookies。