//+------------------------------------------------------------------+//| Функция проверки и добавления индикатора на график |//+------------------------------------------------------------------+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はオーダーです。"Levels"-これらの注文が設定されるレベルであるため。また、インデントや距離をピップ単位で呼ぶこともあります。これは命令にはならない。
しかし、もし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で最も重要なのは「チャート」です。
インジケーター、Expert Advisor、スクリプトなど、すべてチャートにバインドされています
しかし、このサービスは何にも縛られていません。ターミナルから始まり、チャートもありません。つまり、いつものように何もチェックできないのです......。さて、_Symbol, _Digits - 私たちが使い慣れたものは全くなく、このデータはすべてチャートで与えられます。
インジケーターやEAにとって、チャートを閉じるか端末を全て閉じるかの違いはなく、サービスとしては、全てのチャートを閉じれば、端末を閉じるまで動作するようになっている
チャートを閉じてEAを終了させると、ターミナル再起動後、チャートもEAもなく、チャートを起動すると必ずサービスが開始されるというミラクルが発生します
こんな感じです、指の上 ))))
昨日はサービスの例として、https://www.mql5.com/ru/forum/170952/page173#comment_16044829。
どうしたらいいのか、まだわからないんです。
ZS:私たちは、スクリプト、EAと指標の話をしている場合 - 違いは何ですか、指標は取引することはできませんが、それは指標のバッファを描画することができ、スクリプトはEAと同じことを行うことができますが、それは "一度 "とアンロードしないように動作 -無限ループ、しかしまだターミナルは、あなたがTFを切り替えるときに原稿がアンロードされます。
これ以上簡単に説明することはできませんが、最初の章を読んでみてください。
Igor Makanu:
が、サービスは 何にも縛られず、ターミナルから始まり、チャートもない、つまりいつものように何も 調べられない......。シンボルや桁数など、普段使い慣れたものはなく、すべてチャートで与えられたデータです。
誰がそんなこと言ったんだ?具体的に_Symbolや _Digitsを 使用 することはできませんが、それらの値を取得することは容易です。チャート上にあるものはすべて、サービスから得られるものです。特に興味はなかったのですが、最近の変化を踏まえて、嫌いなクローズドポジションの矢印や線を削除するために利用しています。ターミナルを 起動してサービスを実行し、手動や他のプログラムで作成したマークには手を付けずに、すべてのチャートのこれらのマークをすべて削除します。