//+------------------------------------------------------------------+//| Функция проверки и добавления индикатора на график |//+------------------------------------------------------------------+bool AddIndicator()
{
//--- выводимое сообщениеstring message;
//--- проверим на совпадение символ индикатора и символ графикаif(_Symbol!=_Symbol)
{
message="Демонстрация использования функции Demo_ChartIndicatorAdd():";
message=message+"\r\n";
message=message+"Нельзя на график добавить индикатор, рассчитанный на другом символе.";
message=message+"\r\n";
message=message+"Укажите в свойствах эксперта символ графика - "+_Symbol+".";
Alert(message);
//--- досрочный выход, не будем добавлять индикатор на графикreturnfalse;
}
//--- проверим на совпадение таймфрейм индикатора и таймфрейм графикаif(_Period!=_Period)
{
message="Нельзя на график добавить индикатор, рассчитанный на другом таймфрейме.";
message=message+"\r\n";
message=message+"Укажите в свойствах эксперта таймфрейм графика - "+EnumToString(_Period)+".";
Alert(message);
//--- досрочный выход, не будем добавлять индикатор на графикreturnfalse;
}
//--- все проверки прошли, символ и период индикатора соответствуют графикуif(indicator_handle==INVALID_HANDLE)
{
Print(__FUNCTION__," Создаем индикатор");
indicator_handle=iCustom(_Symbol,_Period,InpIndi_name);
if(indicator_handle==INVALID_HANDLE)
{
Print("Не удалось создать индикатор. Код ошибки ",GetLastError());
}
}
//--- сбросим код ошибкиResetLastError();
//--- накладываем индикатор на графикPrint(__FUNCTION__," Добавляем индикатор на график");
Print("Индикатор построен на ",_Symbol,"/",EnumToString(_Period));
//--- получим номер нового подокна, в которое добавим индикаторint subwindow=(int)ChartGetInteger(0,-1);
PrintFormat("Добавляем индикатор на окно %d графика",subwindow);
if(!ChartIndicatorAdd(0,subwindow,indicator_handle))
{
PrintFormat("Не удалось добавить индикатор на окно %d графика. Код ошибки %d",
subwindow,GetLastError());
}
//--- добавление индикатора на график прошло успешноreturn(true);
}
//+------------------------------------------------------------------+
不,我在上面解释了什么是霜冻程度。
谢谢你,Artem,我明天会研究一下。
SL和TP是订单。"水平" - 因为这些是设置这些订单的水平。你也可以把它们称为缩进或距离,单位是点。这并不意味着它们就是命令。
我愿意接受它是这样工作的,但我不明白的是,如果SL和TP是订单,那么为什么它们不在订单列表中,例如OrdersTotal() 或HistoryOrdersTotal()。
谢谢你,Artem,我明天会研究一下。
我理解,))))
1) 脚本和服务之间有什么区别?
2) 是否可以在不使用模板的情况下,在EA的任何需要的窗口上运行该指标?
1) 脚本和服务之间有什么区别?
2) 是否有可能在不使用模板的情况下,从EA的任何所需窗口运行该指标?
这里有一个函数--来自EA https://www.mql5.com/ru/docs/chart_operations/chartindicatoradd
这里是函数--来自顾问https://www.mql5.com/ru/docs/chart_operations/chartindicatoradd
谢谢你!
1) 脚本和服务之间有什么区别?
脚本被绑定到一个图表上,该服务不是
脚本是 "手动 "启动的,服务是由终端启动 的。
我不知道任何其他的区别,没有关于服务的信息
脚本被绑定到一个图表上,该服务不是
脚本是 "手动 "启动的,服务是由终端启动 的。
我不知道还有什么区别,没有关于服务的信息
我明白了吗?关闭终端后运行的指标和顾问有服务的属性,但脚本没有,也就是说,如果一个脚本、一个指标和一个顾问正在运行,终端被关闭,当打开终端时,只有指标和顾问会被加载到窗口,而脚本则不会?
我理解的对吗? 关闭终端后运行的指标和顾问有服务的属性,但脚本没有,也就是说,如果有运行的脚本、指标和顾问,终端被关闭,当你打开终端时,只有指标和顾问会被载入窗口,而不是脚本?
不
MQL中最重要的东西是 "图表"。
所有这些--指标、专家顾问和脚本--都绑定在图表上。
但是,该服务没有被约束到任何东西--它从终端开始,没有图表,也就是说,它不能像往常一样检查任何东西......那么,_符号,_数字--根本没有我们习惯使用的东西,这些数据都是由图表给出的。
对于指标和EA来说,关闭图表或整个终端没有区别,就服务而言,如果你关闭所有的图表,它将工作到你关闭终端为止。
如果你通过关闭图表来关闭EA,那么在终端重新启动后,将不会有奇迹出现--没有图表,没有EA,服务总是在你启动图表时启动的
就像这样,在我的手指上 ))))
昨天我做了一个服务的例子,https://www.mql5.com/ru/forum/170952/page173#comment_16044829
我还不知道该如何处理它们。
ZS: 如果我们谈论的是一个脚本,EA和指标 - 有什么区别,指标不能交易,但它可以绘制指标缓冲区,脚本可以做与EA相同的事情,但它工作 "一次",并卸载,所以它不卸载 - 无限循环,但仍然是终端,当你切换TFs将卸载的脚本
我无法更简单地解释它,只需翻看前几章,都在那里了
Igor Makanu:
但该服务 没有被绑定到任何东西上,它从终端开始,没有图表,也就是说,它不能像往常一样找到任何东西......以及_符号,_数字--根本没有 我们习惯使用的东西,那是图表给出的所有数据。
谁告诉你的?具体使用 _Symbol 或_Digits,不能,但很容易得到这些值。图表上的所有内容都是你能从服务中得到的。我对它们并不特别感兴趣,但鉴于最近的变化,我使用该服务来删除我讨厌的封闭位置的箭头和线条。我启动终端,运行服务,删除所有图表上的这些标记,而不去碰那些手动或由其他程序创建的标记。