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

 
DanilaMactep 、開いている すべてのチャートを期間n1 に変換します。開いているすべてのチャートに、指定した名前のテンプレートを適用するようにするには、どのようにコードを書き直せばよいでしょうか。

ほら、これが役に立つよ。

ChartApplyTemplate(0,"..........tpl"))
 
Alekseu Fedotov #:

ほら、これが役に立つよ。

また、特に「才能のある人」のために、機能の説明をお願いします。
ChartApplyTemplate()
スクリプトのどこを代入すればいいのか?
 
DanilaMactep #:
特別な才能を持つ人に、スクリプトのどの箇所をどのような機能で代用すればよいのか、説明していただけませんか。

以下はそのスクリプトです。

//+------------------------------------------------------------------+
//|                                           ChartApplyTemplate.mq5 |
//|                                  Copyright 2022, MetaQuotes Ltd. |
//|                                             https://www.mql5.com |
//+------------------------------------------------------------------+
#property copyright "Copyright 2022, MetaQuotes Ltd."
#property link      "https://www.mql5.com"
#property version   "1.00"
//--- покажем окно входных параметров при запуске скрипта
#property script_show_inputs
//----
sinput string Template = "ADX"; // Имя шаблона(without '.tpl')
//----
ENUM_TIMEFRAMES TimeFrame = PERIOD_CURRENT;  //
//+------------------------------------------------------------------+
//| Script program start function                                    |
//+------------------------------------------------------------------+
void OnStart()
  {
//---
   long currChart, prevChart = ChartFirst();
   int i = 0, limit = 100;
   bool errTemplate;
   while(i < limit)
     {
      currChart = ChartNext(prevChart);
      if(TimeFrame != PERIOD_CURRENT)
        {
         ChartSetSymbolPeriod(prevChart, ChartSymbol(prevChart), TimeFrame);
        }
      errTemplate = ChartApplyTemplate(prevChart, Template + ".tpl");
      if(!errTemplate)
        {
         Print("Error ", ChartSymbol(prevChart), "-> ", GetLastError());
        }
      if(currChart < 0)
         break;
      Print(i, ChartSymbol(currChart), " ID =", currChart);
      prevChart = currChart;
      i++;
     }
  }
//+------------------------------------------------------------------+
ファイル:
 
137 Matrix #:

以下はそのスクリプトです。

コードをどうもありがとうございます。今日はもう遅いので、明日metaエディタに追加します。

 
137 Matrix #:

以下はそのスクリプトです。

こんにちは。こんな感じでスクリプトにコードを転送。
//+------------------------------------------------------------------+//+------------------------------------------------------------------+
//|                                           ChartApplyTemplate.mq5 |
//|                                  Copyright 2022, MetaQuotes Ltd. |
//|                                             https://www.mql5.com |
//+------------------------------------------------------------------+
#property copyright "АВТОР - КОПИЯ 1"
#property link      "https://vk.com/danila_mastep"
#property version   "1.00"
//--- покажем окно входных параметров при запуске скрипта
#property script_show_inputs
//----
sinput string Template = "default"; // Имя шаблона(without '.tpl')
//----
ENUM_TIMEFRAMES TimeFrame = PERIOD_CURRENT;  //
//+------------------------------------------------------------------+
//| Script program start function                                    |
//+------------------------------------------------------------------+
void OnStart()
  {
//---
   long currChart, prevChart = ChartFirst();
   int i = 0, limit = 100;
   bool errTemplate;
   while(i < limit)
     {
      currChart = ChartNext(prevChart);
      if(TimeFrame != PERIOD_CURRENT)
        {
         ChartSetSymbolPeriod(prevChart, ChartSymbol(prevChart), TimeFrame);
        }
      errTemplate = ChartApplyTemplate(prevChart, Template + ".tpl");
      if(!errTemplate)
        {
         Print("Error ", ChartSymbol(prevChart), "-> ", GetLastError());
        }
      if(currChart < 0)
         break;
      Print(i, ChartSymbol(currChart), " ID =", currChart);
      prevChart = currChart;
      i++;
     }
  }
//+------------------------------------------------------------------+

チャート上にドラッグ&ドロップして、入力パラメーターにテンプレート名を入力すると、ターミナルが反応しなくなり、何も起きません。テンプレートがすべてのチャートに適用されない :-( コードを間違ってコピーしたのか、それとも何か他の問題があるのでしょうか?テンプレートの名前を再確認しました - 私はドットtplなしで名前だけを入力します。
 
DanilaMactep #:
こんにちは。こんな感じで、スクリプトにコードを入れています。チャート上にドラッグ&ドロップして、入力パラメーターにテンプレート名を入力すると、ターミナルが反応しなくなり、何も起きません。テンプレートがすべてのチャートに適用されない :-( コードを間違ってコピーしたのか、それとも何か他の問題があるのでしょうか?テンプレートの名前を再確認しました - 私はドットtplなしで名前だけを入力します。

を入力すると、このテンプレートが開いているすべてのチャートで開かれます。

例:テンプレートをtemplateという 名前で保存し、スクリプトの設定にその テンプレートを書き込む。

 
DanilaMactep #:
こんにちは。こんな感じで、スクリプトにコードを転送しました。チャート上にドラッグ&ドロップして、入力パラメーターにテンプレート名を入力すると、ターミナルが反応しなくなり、何も起きません。テンプレートがすべてのチャートに適用されない :-( コードを間違ってコピーしたのか、それとも何か他の問題があるのでしょうか?テンプレートの名前を再確認しました - 私はドットtplなしで名前だけを入力します。

コードに一行加えるだけでよかったのです。あるいは、2つの行を1つに置き換えることもできます

string tplName = "name.tpl";
/********************Script program start function*******************/
void OnStart()
 {
  long prevChart = ChartFirst();
  while(prevChart >= 0)
   {
    //if(ChartPeriod(prevChart) != PERIOD_H1)
    //  ChartSetSymbolPeriod(prevChart, ChartSymbol(prevChart), PERIOD_H1);
    ChartApplyTemplate(prevChart, tplName);
    prevChart = ChartNext(prevChart);
   }
 }/******************************************************************/
/*****************************End program****************************/
 

こんにちは!状況は以下の通りです:私はターミナルで2つの同じチャートを開いています。片方にはロボットを、もう片方にはロボットを設置。ロボット1が開いたポジションがロボット2が置かれているチャートでも開くようにするには(可能性があるのなら)どのようにコードに書けばよいのでしょうか?それよりも、Robot-1がRobot-2とのチャート上だけでポジションを持つようにするにはどうしたらいいでしょうか?私の "知識 "では足りません。

私の "知識 "では足りません、ありがとうございました。

 
novichok2018 #:

こんにちは!状況は以下の通りです:私はターミナルで2つの同じチャートを開いています。片方にはロボットを、もう片方にはロボットを設置。ロボット1が開いたポジションをロボット2が置かれているチャートでも開くようにコードに登録するには(可能であれば)どうしたらよいでしょうか?それよりも、Robot-1がRobot-2とのチャート上だけでポジションを持つようにするにはどうしたらいいでしょうか?私の "知識 "では足りません。

私の "知識 "では足りません、ありがとうございました。

チャートが同じであれば、注文は両方に表示されます。注文はチャートではなく、シンボルによって開かれます。
 
Alexey Viktorov #:

コードに一行加えるだけでよかったのです。あるいは、2つの行を1つに置き換えることもできます

Alexey、ヒントをどうもありがとう - 行を追加し、すべてが動作しました、唯一の問題は - 今でも手動でデフォルトのテンプレートを選択すると、ターミナルがハングアップするXD)))))))) コンピュータをきれいにする時間だと思われるが、問題の兆候がある(