object_text帮助初学者
1 页面的第 522 页 12 上一个上一个
Results 1 to 10 of 12

Thread: object_text帮助初学者

  1. #1
    会不会有人非常好地指出这一点。
    下面将把文本Opn:放在MT4当前栏的屏幕上

    但是我需要的是让文本每天都在9am吧。

    我无法找到替代CurrentTime的方法来实现它。
    或者也许有更好的方法。
    预先感谢您的帮助。

    日期时间CurrentTime;
    {
    ObjectCreate(AtOpen,OBJ_TEXT,0,0,0);
    ObjectMove(AtOpen,0,CurrentTime,High [1]);
    ObjectSetText(AtOpen,Opn:,10,Calibri,clrWhite);
    }

  2. #2

    Quote Originally Posted by ;
    会不会有人非常好地指出这一点。下面将文本Opn:放在MT4当前栏的屏幕上。但是我需要的是让文本每天在9am栏上。我无法找到替代CurrentTime的方法来实现它。或者也许有更好的方法。预先感谢您的帮助。日期时间CurrentTime; {ObjectCreate(AtOpen,OBJ_TEXT,0,0,0); ObjectMove(AtOpen,0,CurrentTime,High [1]); ObjectSetText(AtOpen,Opn:,10,Calibri,clrWhite); }
    每个图表对象都必须具有唯一的名称。以下是一个脚本示例,您可以在调试器中运行以逐步了解正在进行的操作。注意:我正在使用std库类
    https://www.mql5.com/en/docs/standar...hartobjecttext使其更容易..插入代码#property严格#include lt; ChartObjects \ ChartObjectsTxtControls.mqhgt; void OnStart(){int object_count = 0; (int i = Bars-1; igt; = 0; i--){if(TimeHour(Time#91; i#93;)== 9 TimeMinute(Time#91; i#93;)== 0) {string object_name = __objectname __ string( object_count); CChartObjectText文本; if(text.Create(0,object_name,0,Time#91; i#93;,High#91; i#93; 10 * _Point)){text.Anchor(ANCHOR_LEFT); text.Angle(90); text.Description(lt; ----- OPEN ----- lt; lt;); text.Color(clrDarkOrange); text.Font(索拉); text.FontSize(9); text.Detach(); }}}}

  3. #3
    非常感谢Nicholishen。按照您的建议,我将按照脚本工作。确实,你的帮助非常感谢。

  4. #4

    Quote Originally Posted by ;
    非常感谢Nicholishen。按照您的建议,我将按照脚本工作。确实,你的帮助非常感谢。
    你好,你有进步吗?学习代码是值得的。 Nicholishen,非常感谢这里和其他地方的OOP例子(让他们来吧!)。我一直在潜心研究并学习一些有用的东西。考虑问题:问:你只需要在图表上标记1个标记,以获得最新的匹配条?还是像Nicholishen那样有多重标记? (Nicholishen的例子是后者,你的尝试是前者,因为你只使用了一个对象名称AtOpen_Text)。问:什么时间表图表? <= H1,或者,您是否希望H4栏显示箭头? (包括9AM时间的那个)。 (最好计算包含MarkAtTime的酒吧的起始时间,然后在此Daily日志中适用于从M1到H4的所有TF图表)。问:你想显示它吗?每天早上9点?或者在包含9AM时间的酒吧开始时间? (我认为前者是最好的)。问:最近的9AM柱出现时,您最初以前一个柱高[1]的价格显示它。如果当前High [0]超过High [1],调整它会不会更好? (否则它将在9AM栏之上)。而且,一个建议是:不管你决定什么,最好的代码应该只做一次,而不是一遍又一遍地重复同样的事情。 (这个要求让代码更难写,但是值得)。 Nicholishen的快速示例运行每一个剔和每个酒吧,因此效率低下(但他绝对知道,所以我不批评!)。在他的代码中,for循环的Bars-1起点可能是一个限制,即:extern int MaxBars = 0;/0 = unlimited int limit = MathMin(Bars,Bars-prev_calculated);/其中prev_calculated使用OnCalculate(){... return(prev_calculated);在最新的编码风格; } if(limit == Bars)limit--;/防止数组超出范围if(MaxBarsgt; 0)limit = MathMin(limit,MaxBars);/for(int i = limit; igt; = 0; i--){...}第一次通过,limit = Bars-1(或者是MaxBars)。之后,通常为0,直到一个新的酒吧进入,然后它只有一个滴答。请注意,处理i == 1或i == 0可能会非常棘手。有时候我为i == 0编写了一段独特的代码,只是为了处理新条的上下文,而不是重复遍历相同的当前条。 (关于限制,我刚刚发现了一个我自己的CPU密集型程序中的一个错误,我认为它使用了限制(大多数是1或0),但是我意外地将它重置为Bars-1,而且这个错误非常缓慢,因为它,并重载我的CPU与一堆浪费的计算,修复它!)。旋转文本显示MT4错误:无论是OOP还是常规C风格代码,Fyi,您可能发现的一个问题是,由于MetaTrader4(b1090)的错误,90度角的OBJ_TEXT对象存在问题。我在价格上涨的时候观察到了这一点,所以文字将在图表的最上方标出。如果文字的任何部分不在屏幕上方或下方,则90度旋转的文字会完全消失!相反,将其更改为270度它大部分工作正常。这个垂直文本可能会在重叠图表的左/右边缘时消失,但只要您使用Chart Shift(这会在最新的酒吧的右侧创建一些空白空间;我更喜欢它) 。该错误很容易重现:手动绘制具有相当长描述的任何文本。在对象属性的“参数”选项卡中,将度数角度更改为90.0。只需向上或向下拖动文本,直到任何部分触及上边界或下边界,文本将完全消失。使它成为270,它的顶部/底部效果要好得多。使它115,它消失的所有四个边缘!使它315,它适用于所有四个边缘。我向MetaQuotes报告了这个错误。我们会看到他们需要多长时间才能解决问题。因此,在270处创建(也)箭头以及文本是一个好主意。价格之上的箭头应始终可见,即使价格创出新高。这样,如果文字由于与边缘重叠而消失,则在图表上仍然会有一个标记。

  5. #5
    嗨pips4life首先,非常感谢您花时间回复。你帮助初学者非常慷慨。我的方法不是直接学习代码,而是为了实现我的交易想法而获得足够的理解。对我来说这些理论在理论上是有限的,学习一些具体的基本程序应该是足够的。简而言之,我一般认为代码本身不是事物,而是正如俗话所说的那样让你接触事物。最终希望通过该途径更加深入地学习MQL。出于这个原因,我发现你的帖子非常有帮助,并且你提出的问题最相关,并且继续为我的交易编码,而不是学习代码来进行任何交易,如果你明白我的意思。 :我只想在9点和17点只适合一个文本标记。答:仅在一个时间范围内。答:在9和1700酒吧结束时。答:非常好的一点!谢谢。我真的需要这些文字在关闭时在9点和1700点的高点上。我完全同意,我希望这两个文本事件只发生一次。目前,我正在做无效OnTick()函数下的所有事情,所以我对此的本能反应是使用一个变量来控制天数会话,以便所有事件只能在9到1700之间运行,而另一个变量可以控制文本事件,以便每个变量在它们各自的事件首次发生时从0增加到1,并在1700时将其重置为0,以准备在第二天使用。除此之外,我现在正在研究你的for循环示例,它提供了一个更全面的解决方案。幸运的是,我不想旋转任何文字,但非常感谢您的支持。我没有发现MQL是最简单的编译器/IDE,所以没有比系统错误更令人生畏的了。我非常同意你的看法,学习代码非常值得。自己和Nicholishen给予的帮助对于像我自己一样开始的人来说是无价的,我想它也可以帮助更有经验的同时检查一些基本知识。 F1按钮没有问题,但是新手不会因为技术讲座而陷入困境。再次非常感谢你们的帮助。

  6. #6
    1附件(S)
    Quote Originally Posted by ;
    {quote},非常感谢这里和其他地方的OOP示例(让他们来吧!)
    那么,因为你问这里是一个项目的测试,我正在从图表研究/对象中创建图表配置文件,它将所有状态保存/加载到文件而不是黑客模板。这个例子提供了一些更高级的设计模式,是继承,多态和管理循环依赖的一个很好的例子。最好的潜入方式是在OnInit上设置一个断点并进入/通过它...
    https://www.histoforex.com/attachmen...5583912874.rar

  7. #7
    1附件(S)
    Quote Originally Posted by ;
    嗨pips4life首先,非常感谢您花时间回复。你帮助初学者非常慷慨。我的方法不是直接学习代码,而是为了实现我的交易想法而获得足够的理解。对我来说这些理论在理论上是有限的,学习一些具体的基本程序应该是足够的。简而言之,我一般认为代码本身不是事物,而是正如俗话所说的那样让你接触事物。最终希望通过该途径更深入地学习MQL ....
    这应该做的伎俩。
    https://www.histoforex.com/attachmen...6180098658.mq4

  8. #8
    哇谢谢你的代码Nicholishen。这么大的帮助。我认为我应该能够弄清楚过程和功能为什么/如何工作,但无法找到关于这个角色的描述。和gt;在你的线上播放#include lt; ChartObjects \ ChartObjectsTxtControls.mqhgt;请你解释一下。

  9. #9

    Quote Originally Posted by ;
    哇谢谢你的代码。这么大的帮助。我认为我应该能够弄清楚过程和功能为什么/如何工作,但无法找到关于这个角色的描述。和gt;在你的线上播放#include lt; ChartObjects \ ChartObjectsTxtControls.mqhgt;请你解释一下。
    将include指令看作复制和粘贴机制。它实际上告诉编译器抓住这个文件并将其内容粘贴到这个确切的地方。如果包含使用尖括号,那么它将从绝对路径(包含目录)访问文件,而MQL将始终是MQL \ Include文件夹。因此,如果您想查看代码,您将转至包含文件夹并打开子文件夹和文件以查看定义。您还可以使用带引号的文件包含文件,这些文件告诉编译器在相对路径中查找文件。
    http://en.cppreference.com/w/cpp/preprocessor/include

  10. #10
    我忘了补充说,从其他人的代码学习的最简单的方法是使用内置的调试器。
    https://www.metatrader5.com/en/metae...elopment/debug例如,你想要做的就是在OnInit上设置一个断点,并使用step-into按钮并一路跟随程序。如果程序使用任何库文件,调试器将自动打开这些文件并将您带到正在执行的代码行。插入的视频

发布权限

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