//+------------------------------------------------------------------+//| 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 Brain - ExpertUtility Command.mq 5に適応可能です。
LeManBrainTrend1Sig - と - LeManTrend Indicator - それなしでは動作しません- Obj LeM Brain - インジケーターには、さらに2つのインジケーターが必要です。
-----------------------------------------------------------
から、水平線の距離を長くする。
ターンアウトとマイナス、変化 横線内向き
---------------------------------------------------------
このインディケータはExpert Advisorに書き込む必要はなく、このインディケータから必要なのは水平線のみです。Expert Advisorでインジケータを削除するように記述する必要があります。
使用する必要はありません。
そして、インジケータを削除し、インジケータの水平線がコマンドを繰り返さないようにします。
Expertにもう一つ機能を追加し、シグナルからChartにIndicatorを設定できるようにしました。
この機能から何が必要なのかがわからない。
私はオプションを見つけたと思う、私はちょうど絵のように、このようなアクションをコードに書く必要があります。
この機能から何が必要なのかがわからない。
私はオプションを見つけたと思う、私はちょうど絵のように、このようなアクションをコードに書く必要があります。
この機能をユーティリティコマンド("Utility Command")に追加しました #property version "1.004"
をクリックすると、この機能に関する設定が表示されます。
トレンドラインまたは水平線の名前 - インジケータを設定する。
インディケータ名 - チャートにインストールするインディケータを指定します。
指標の水平線またはトレンドラインの名前。
-------------------------- 動作原理は以下の通りです。
----------------------- インジケータは水平線(青)を移動します - これを突破すると、売りで開き、インジケータを削除し、別のインジケータが拾ってインジケータの紫のレベルにラインを移動する黄色の線を設定します - 後 、水平 黄色の線は、再びインジケータを設定します。
デポジットを抜くと、つつき始めるんです。
何か気の利いたことを言うかと思ったのに。
ユーティリティ(「ユーティリティコマンド」)にこの機能を追加 #property version "1.004"
をクリックすると、この機能に関する設定が表示されます。
トレンドラインや水平線の名前 - Indicatorをインストールする。
インディケータ名 - チャートにインストールするインディケータを指定します。
指標の水平線またはトレンドラインの名前。
-------------------------- 作業の原則は、次のとおりとする。
---------------------- インジケータは水平線(青)を移動します - これを突破すると、SELLでオープンし、インジケータを削除して黄色のラインを設定します、これは別のインジケータによってピックアップされ、インジケータの紫のレベルにラインを移動します - 後 、水平 黄色、再びインジケータを設定することになります。
機能は完全に動作します - ユーティリティは、非常に、悪くないが判明した。
しかし、この機能に加え、オープンポジションからのポイント数でインジケーターを設定する機能を追加する必要があります。