#include <Trade\Trade.mqh>
CTrade trade;// Объект trade в глобальной области программыintOnInit()
{
trade.SetExpertMagicNumber(123);
}
voidOnTick()
{
CTrade *trade_ptr=GetPointer(trade);// Указатель на объект trade
trade_ptr.Buy(0.1);
}
double X(double bar); // The X coordinate by the bar number. The bar number must be of type double, otherwise, the bar will be interpreted as time.double X(datetime Time); // The X coordinate by the time.double Y(double Price); // The Y coordinate by the price.double Price(int y); // Price by the Y coordinatedouble Bar(int x); // bar number by coordinate X datetime TimePos(int x); // time by coordinate X double Close(int x);
double Open(int x);
double High(int x);
double Low(int x);
void Comm(string text); // Print commentvoid TextPosition(int x,int y); // Setting the XY position for comment output in pixelsvoid TextPosition(double x,double y); // Setting the XY position for outputting comments as a percentage of the width and height of the windowvoid CurentFont(string FontName="Courier New",int size=18,int LineStep=20,color clr=clrDarkOrchid,double transp=1.0); // Set font options for comment. LineStep - step between lines. transp - transparency from 0 to 1void LineD(double x1,double y1,double x2,double y2,constuint clr); // тоже самое что и Line в CCanvas, только без глюков и с double координатамиint TextPosX; // Position X for comment textint TextPosY; // Position Y for comment textint StepTextLine; // line spacing for commentuint TextColor; // Font color for comment
Данная библиотека и класс iCanvas упростит написание программ с применением Canvas. Вот пример простого индикатора с применением данной библиотеки и его демонстрация. Обратите внимание, что в данном примере в теле индикатора отсутствует функция обработки событий OnChartEvent. Но она также может и присутствовать. Особенности данной библиотеки...
是吗?难道它不创建一个新的、独立的对象吗?
我们现在来检查一下--我将插入这样的行。
以及
和一个测试脚本。
结果。
一个对象被创建,然后是第二个对象(事实证明没有重新创建--一个新的对象被创建),BUY头寸以魔法 "0 "打开--即第二个对象 "交易 "打开它。
然后我们看到,这两个物体以相反的顺序被摧毁:首先是第二个物体(魔法为 "0"),然后是第一个物体(魔法为 "123")。
是吗?难道它不创建一个新的、独立的对象吗?
是的,它将创建一个新的CTrade 类的实例
更有甚者,在退出 void OnTick()时 将调用 CTrade 的析构器,在下一个 OnTick()时将再次调用 CTrade 的构造器。
是的,将有一个新的Trade 类的实例
如果退出 void OnTick(),将调用 CTrade 的析构器,而下一个 OnTick() 将再次调用 CTrade 的构造器。
是的,我在阿特姆的回答后立即意识到了这一点。
关于交易、自动交易系统和策略测试的论坛
学童的OOP。
Artyom Trishkin, 2019.10.08 20:23
这与变量的情况完全一样。
还有重点。
在我看来,mql的任务范围很窄,需要通过OOP来解决。在我看来,这种语言本身不过是C++中的OOP或其他什么东西。而这种OOP是以标准库的形式提供的。对这个OOP,建议增加,否则我不会说,另一个OOP。然后再走一步...说得很对,术士虽然生气,但仁者见仁智者见智,对于我的任务来说,OOP就像一个狗的转盘。而且,如果这个没有问题的问题可以用程序化的方式解决,那么通过OOP的方式设置一个问题和随后的实现有什么好处呢?
例如,从 fxsaber`a 获取 .mqh,为 MT5 和 MT4 写代码。也许有人需要它,但看看是谁。对那些不想或绝对不能掌握mql5的人来说。或者从Nikolay......我忘了他的名字,采取iCanvas。它似乎是一个有用的库,但要理解它并不容易,而且没有任何文档,甚至连一个最小的描述都没有。这不是抱怨,对不起,尼古拉,这是一个事实。因此,当我决定尝试写一个图形标签时,不参考标准库或尼古拉的库来写就比较容易。
实际上,Alexey,你可以从KB中的描述页中获得关于iCanvas的足够信息。https://www.mql5.com/ru/code/22164。 你需要仔细研究代码中的注释。所有函数的含义都可以从它们的名称中直观地看出。
但你可能是对的。我应该录制一段使用iCanvas编写一些简单但有用的指标的视频,并直观地解释这个类的一些特点。仍有一些微妙之处。
坦率地说,我不喜欢iCanvas现在的编写方式。我想把它揉成一团,扔进垃圾桶,然后用更正确的风格重写。
这个库中70%的代码是关于加快一些处理坐标和数据访问所需的常规函数的速度。
所以,如果你应用这个类,图形会比你用CCanvas "正面 "做的快。这是它的主要特点和优势。当然,形成图表、数字、评论也确实比较容易。
我还想补充一点,Alexey,CodeBase中许多出版物的目的,包括fxsaber和我的出版物,都是无私的 "只是为了分享--谁需要它,谁就能理解它"。因此,经常花时间在详细的说明上,简直是一种无奈。
特别是在论坛上,我已经发布了许多使用iCanvas的简短和说明性的例子。
在这里,举例来说。
https://www.mql5.com/ru/code/25929
https://www.mql5.com/ru/code/25113
https://www.mql5.com/ru/code/25414
https://www.mql5.com/en/code/24798
https://www.mql5.com/ru/forum/227736/page41#comment_13259627
https://www.mql5.com/ru/forum/227736/page24#comment_12836622
https://www.mql5.com/en/forum/323629#comment_13442470
https://www.mql5.com/ru/forum/321704#comment_13131995
https://www.mql5.com/ru/forum/317257/page3#comment_12341593
https://www.mql5.com/en/forum/229521/page2#comment_10258148
实际上,Alexey,你可以从KB描述页中获得关于iCanvas的足够信息。https://www.mql5.com/ru/code/22164。 你必须仔细研究代码中的注释。所 有函数的含义从它们的名称中可以直观地看出。
尼古拉,不要理会我的话。在研究编程的人中,像我这样的人太少了,如果我不是唯一的一个,那就根本不值得关注他们了。
对我来说,要学习代码中的注释,你首先要学习阿格里茨基))。
如果我有迫切的需要,我可以花时间并翻译所有的评论,尝试理解机器翻译并进行更正。 但没有这种需要。
例如,从 fxsaber`a 取出 .mqh,为 MT5 以及 MT4 写代码。也许有人需要它,但看看谁...那些不想或绝对不能掌握mql5的人。
我想我对MQL5很了解,但我对交易库有需求。我说的不是MT4风格,而是MT5的交易库,使用起来会很舒服和快速。而且这个库在实际交易中没有任何错误。
由于公共领域没有这样的库(我也不知道它是否存在),我不得不自己开发一个。为此,我必须决定,我将以一套交易功能 的形式发明什么样的工具。借用了MT4套装,作为一个相当好的套装。作为奖励,这使得不把文件写到图书馆并研究它成为可能。还有其他好东西。
因此,MQL5的知识在用户中有时处于很高的水平。