//+------------------------------------------------------------------+//| AddChartIndicatorAdd.mq5 |//| Copyright 2020, MetaQuotes Software Corp. |//| https://www.mql5.com |//+------------------------------------------------------------------+#property copyright"Copyright 2020, MetaQuotes Software Corp."#property link"https://www.mql5.com"#property version"1.00"#property script_show_inputs//---inputstring Inpshort_name = "Obj LeM Brain"; // INDICATOR_SHORTNAMEinputstring Inpshort_name0 = "Examples/MACD"; // INDICATOR_SHORTNAME//---int indicator_handle=INVALID_HANDLE;
int indicator_handle0=INVALID_HANDLE;
//+------------------------------------------------------------------+//| Script program start function |//+------------------------------------------------------------------+voidOnStart()
{
//---
AddIndicator();
AddIndicator0();
}
//+------------------------------------------------------------------+//| Функция проверки и добавления индикатора на график |//+------------------------------------------------------------------+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__," Создаем индикатор MACD");
indicator_handle=iCustom(_Symbol,_Period,Inpshort_name);
if(indicator_handle==INVALID_HANDLE)
{
Print("Не удалось создать индикатор MACD. Код ошибки ",GetLastError());
}
}
//--- сбросим код ошибкиResetLastError();
//--- накладываем индикатор на графикPrint(__FUNCTION__," Добавляем индикатор MACD на график");
Print("MACD построен на ",_Symbol,"/",EnumToString(_Period));
//--- получим номер нового подокна, в которое добавим индикатор MACDint subwindow=(int)ChartGetInteger(0,0);
PrintFormat("Добавляем индикатор MACD на окно %d графика",subwindow);
if(!ChartIndicatorAdd(0,subwindow,indicator_handle))
{
PrintFormat("Не удалось добавить индикатор MACD на окно %d графика. Код ошибки %d",
subwindow,GetLastError());
}
//--- добавление индикатора на график прошло успешноreturn(true);
}
//+------------------------------------------------------------------+//| Функция проверки и добавления индикатора на график |//+------------------------------------------------------------------+bool AddIndicator0()
{
//--- выводимое сообщение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_handle0==INVALID_HANDLE)
{
Print(__FUNCTION__," Создаем индикатор MACD");
indicator_handle0=iCustom(_Symbol,_Period,Inpshort_name0);
if(indicator_handle0==INVALID_HANDLE)
{
Print("Не удалось создать индикатор MACD. Код ошибки ",GetLastError());
}
}
//--- сбросим код ошибкиResetLastError();
//--- накладываем индикатор на графикPrint(__FUNCTION__," Добавляем индикатор MACD на график");
Print("MACD построен на ",_Symbol,"/",EnumToString(_Period));
//--- получим номер нового подокна, в которое добавим индикатор MACDint subwindow=(int)ChartGetInteger(0,CHART_WINDOWS_TOTAL);
PrintFormat("Добавляем индикатор MACD на окно %d графика",subwindow);
if(!ChartIndicatorAdd(0,subwindow,indicator_handle0))
{
PrintFormat("Не удалось добавить индикатор MACD на окно %d графика. Код ошибки %d",
subwindow,GetLastError());
}
//--- добавление индикатора на график прошло успешноreturn(true);
}
//+------------------------------------------------------------------+
指标--Obj LeM大脑--可改编为专家工具指令.mq5
对于一个指标,你还需要2个指标 - LeMan_BrainTrend1Sig - 和 - LeManTrend指标 - 没有它们将无法工作- Obj LeM Brain -
-----------------------------------------------------------
增加水平线的距离,从点
我们需要添加另一个函数--当水平线 被触发时,这在许多指标中都存在,不仅要删除水平线,还要删除绘制水平线的指标本身。
另一个要添加的功能--当水平线 被触发时,许多指标中都有这个功能,不仅要删除水平线,还要删除绘制水平线的指标本身。
新增功能
指标--Obj LeM大脑--可改编为专家工具指令.mq5
对于一个指标,你还需要2个指标 - LeMan_BrainTrend1Sig - 和 - LeManTrend指标 - 没有它们将无法工作- Obj LeM Brain -
-----------------------------------------------------------
增加水平线的距离,从点
转出和减去 ,向内改变水平线
---------------------------------------------------------
这个指标不需要写在专家顾问中--只需要从这个指标中得到水平线。应该在专家顾问中写明删除指标
你不需要使用它-
在这里--删除指标--这样指标的横线就不会重复命令了
还有一个功能将被添加到专家中,从信号中设置图表中的指标
我搞不清楚我需要这个函数的什么。
我想我已经找到了一个选项,我只需要在代码中写上这样的动作,如图所示
我搞不清楚我需要这个函数的什么。
我想我已经找到了一个选项,我只需要在代码中写上这样的动作,如图所示
我把这个功能添加到实用程序命令中("实用程序命令")#属性版本 "1.004"
在底部,该功能的设置
趋势线或水平线的名称 - 设置指标
指标名称 - 你想在图表上安装哪个指标
指标的水平线或趋势线的名称
--------------------------,其工作原则应该是
----------------------- 该指标将移动水平线(蓝色) - 如果它突破,它将在卖出中打开,并删除该指标,并设置一条黄线,这将被另一个指标拾起,并将该线移动到指标的紫色水平 - 在 ,水平 黄线,将再次设置该指标
当我排出一个存款时,我就开始戳。
我还以为你会说些聪明话。