MQL4、MQL5に関する初心者からの質問、アルゴリズムやコードに関するヘルプ、ディスカッションなど。 - ページ 1136

 
Artyom Trishkin:

いいえ、霜のレベルとは何か、上で説明しました。

Artemさん、ありがとうございます。明日、調べてみます。

 
Artyom Trishkin:

SLとTPはオーダーです。"Levels"-これらの注文が設定されるレベルであるため。また、インデントや距離をピップ単位で呼ぶこともあります。これは命令にはならない。

しかし、もしSLとTPが注文であるなら、なぜ注文のリスト、例えばOrdersTotal()HistoryOrdersTotal() にないのかが理解できません。

 
Fast235:

Artemさん、ありがとうございます。明日、調べてみます。

了解しました ))))


 

1)スクリプトとサービスの違いは何ですか?

2) テンプレートを使用せずに、EAから任意のウィンドウでインジケータを動作させることは可能でしょうか?

 
Alexandr Sokolov:

1)スクリプトとサービスの違いは何ですか?

2) EAからテンプレートを使用せず、任意のウィンドウでインジケータを実行することは可能でしょうか?

以下はその機能です。EA https://www.mql5.com/ru/docs/chart_operations/chartindicatoradd より。

//+------------------------------------------------------------------+
//| Функция проверки и добавления индикатора на график               |
//+------------------------------------------------------------------+
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);
      //--- досрочный выход, не будем добавлять индикатор на график
      return false;
     }
//--- проверим на совпадение таймфрейм индикатора и таймфрейм графика
   if(_Period!=_Period)
     {
      message="Нельзя на график добавить индикатор, рассчитанный на другом таймфрейме.";
      message=message+"\r\n";
      message=message+"Укажите в свойствах эксперта таймфрейм графика - "+EnumToString(_Period)+".";
      Alert(message);
      //--- досрочный выход, не будем добавлять индикатор на график
      return false;
     }
//--- все проверки прошли, символ и период индикатора соответствуют графику
   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);
  }
//+------------------------------------------------------------------+
Документация по MQL5: Операции с графиками / ChartIndicatorAdd
Документация по MQL5: Операции с графиками / ChartIndicatorAdd
  • www.mql5.com
//| Expert initialization function                                   |                                                                                       ); "Внимание! %s: Попробуем добавить индикатор MACD(%s/%s) на график %s/%s. Получим ошибку 4114"                         subwindow...
 
Alexsandr San:

この機能はこちら - アドバイザーより https://www.mql5.com/ru/docs/chart_operations/chartindicatoradd

ありがとうございました。

 
Alexandr Sokolov:

1)スクリプトとサービスの違いは何ですか?

スクリプトがチャートにバインドされている場合、サービスは利用できません。

スクリプトが「手動」で起動された場合、サービスはターミナルから起動 されます。

他の違いを知らない、サービスに関する情報がない

 
Igor Makanu:

スクリプトがチャートにバインドされている場合、サービスは利用できません。

スクリプトが「手動」で起動された場合、サービスはターミナルから起動 されます。

もう区別がつかない、サービスに関する情報がない

ターミナルを閉じた後に実行されるインジケータとアドバイザーはサービスのプロパティを持ちますが、スクリプトは持ちません。つまり、スクリプト、インジケータ、アドバイザーが実行されていてターミナルを閉じた場合、ターミナルを開くとインジケータとアドバイザーだけがウィンドウにロードされ、スクリプトはロードされないのでしょうか。

 
Valeriy Yastremskiy:

ターミナルを閉じた後に実行するインディケータとアドバイザーはサービスのプロパティを持ちますが、スクリプトは持ちません。つまり、スクリプト、インディケータ、アドバイザーが実行されていてターミナルを閉じた場合、ターミナルを開くとインディケータとアドバイザーだけがウィンドウにロードされますが、スクリプトはロードされないのでしょうか。

ノー

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を 使用 することはできませんが、それらの値を取得することは容易です。チャート上にあるものはすべて、サービスから得られるものです。特に興味はなかったのですが、最近の変化を踏まえて、嫌いなクローズドポジションの矢印や線を削除するために利用しています。ターミナルを 起動してサービスを実行し、手動や他のプログラムで作成したマークには手を付けずに、すべてのチャートのこれらのマークをすべて削除します。