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

 
DanilaMactep #:
私の記憶違いでなければ、それが始まりで、私の記憶ではうまくいかなかったと思います;-)

私はすでにそれをあなたに示しました - 私はそれがあなたのために動作しない理由を知りません - それは私のためにmt4とmt5の両方で動作します。

\\\\\\\\\\\\\\\\\\\\

グラフの色も変更できます

//+------------------------------------------------------------------+
//|                                       CHART_COLOR_BACKGROUND.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 color Backclr = clrWhite; // Цвет фона графика.
sinput color Foreclr = clrBlack; // Цвет осей, шкалы и строки OHLC графика.
//+------------------------------------------------------------------+
//| Script program start function                                    |
//+------------------------------------------------------------------+
void OnStart()
  {
//---
//--- переменные для идентификаторов графиков
   long currChart, prevChart = ChartFirst();
   int i = 0, limit = 100;
   bool errTemplate;
   Print("ChartFirst = ", ChartSymbol(prevChart), " ID = ", prevChart);
   while(i < limit) // у нас наверняка не больше 100 открытых графиков
     {
      currChart = ChartNext(prevChart); // на основании предыдущего получим новый график
      errTemplate = ChartBackColorSet(Backclr, prevChart);
      errTemplate = ChartForeColorSet(Foreclr, prevChart);
      if(errTemplate)
        {
         Print("Error ", ChartSymbol(prevChart), "-> ", GetLastError());
        }
      if(currChart < 0)
         break;          // достигли конца списка графиков
      Print(i, ChartSymbol(currChart), " ID =", currChart);
      prevChart = currChart; // запомним идентификатор текущего графика для ChartNext()
      i++;// не забудем увеличить счетчик
     }
  }
//+------------------------------------------------------------------+
//| Функция устанавливает цвет фона графика.                         |
//+------------------------------------------------------------------+
bool ChartBackColorSet(const color clr, const long chart_ID = 0)
  {
//--- сбросим значение ошибки
   ResetLastError();
//--- установим цвет фона графика
   if(!ChartSetInteger(chart_ID, CHART_COLOR_BACKGROUND, clr))
     {
      //--- выведем сообщение об ошибке в журнал "Эксперты"
      Print(__FUNCTION__ + ", Error Code = ", GetLastError());
      return(false);
     }
//--- успешное выполнение
   return(true);
  }
//+------------------------------------------------------------------+
//| Функция устанавливает цвет осей, шкалы и строки OHLC графика.    |
//+------------------------------------------------------------------+
bool ChartForeColorSet(const color clr, const long chart_ID = 0)
  {
//--- сбросим значение ошибки
   ResetLastError();
//--- установим цвет осей, шкалы и строки OHLC графика
   if(!ChartSetInteger(chart_ID, CHART_COLOR_FOREGROUND, clr))
     {
      //--- выведем сообщение об ошибке в журнал "Эксперты"
      Print(__FUNCTION__ + ", Error Code = ", GetLastError());
      return(false);
     }
//--- успешное выполнение
   return(true);
  }
//+------------------------------------------------------------------+
 
137 Matrix #:

私はすでにそれをあなたに示しました - 私はそれがあなたのために動作しない理由を知りません - それは私のためにmt4とmt5の両方で動作します。

\\\\\\\\\\\\\\\\\\\\

チャートの色を変更するもう一つの方法を紹介します。

不可抗力というか、ただの一筆書きというか......何か見えないかもしれない、それだけなんです。でも、本当にありがとうございました。

 
DanilaMactep #:

脳梗塞の後遺症という不可抗力もあって、どこかで何かが見えないかもしれない、ただそれだけです。でも、本当にありがとうございました。

コードに.tplを追加する必要はなく、すでに実行されています。

テンプレートの名前を入れるだけでいいんです。

 Template + ".tpl"

\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\

sinput string Template           = "ADX";          // Имя шаблона(without '.tpl')
      errTemplate = ChartApplyTemplate(prevChart, Template + ".tpl");
      if(!errTemplate)
        {
         Print("Error ", ChartSymbol(prevChart), "-> ", GetLastError());
        }
 
137 Matrix #:

を追加する必要はなく、すでに規定されているコードです。

にテンプレート名を入力するだけです。

\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\

わかったような気がする~次回は使用説明書をお願いします!半量でないとわからないので))))));-)本当にありがとうございました :-)
 
137 Matrix #:

私はすでにそれをあなたに示しました - 私はそれがあなたのために動作しない理由を知りません - それは私のためにmt4とmt5の両方で動作します。

\\\\\\\\\\\\\\\\\\\\

グラフの色も変更できます

サーシャ ドキュメントにある例やtumblrの例を使うより、もっと悪いことは考えられないんですね。また、whileループの強制終了のフラグもどこかに消えてしまっていますね。すべてにおいて......言葉がない。
 
DanilaMactep #:
このオプションは全く何もしません。チャート上でスクリプトをリリースしても何も起こりません。

論理的な否定記号をなくしてしまってすみませんでした !

void OnStart()
 {
  long prevChart = ChartFirst();
  while(prevChart >= 0 && !IsStopped())
   {
    //if(ChartPeriod(prevChart) != PERIOD_H1)
      ChartSetSymbolPeriod(prevChart, ChartSymbol(prevChart), PERIOD_H1);// или PERIOD_D1
      ChartApplyTemplate(prevChart, tplName);
    prevChart = ChartNext(prevChart);
   }
 }/******************************************************************/
/*****************************End program****************************/
 
Alexey Viktorov #:
サーシャ ドキュメントにある例やtumblrの例を使うより、もっと悪いことは考えられないんですね。あ、あとwhileループの強制終了のフラグをどっかで見失った。うーん......言葉が出ない。

たとえば、私のタスクは、自分のタスクを満たす関数を探すことであり、それが何行であろうと、自分のタスクに合っていれば、それを使うのです。

肝心なのは、この機能が私の思い通りに動くことです。

\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\

自己啓発のためにやっているのであって、それ以上ではない、純粋に自分のためにやっているのです。誰にも何も書かなくていいと思うんです。

 
137 Matrix #:

たとえば、私のタスクは、自分のタスクを満たす関数を探すことであり、それが何行であろうと、自分のタスクに合っていれば、それを使うのです。

肝心なのは、この機能が私の思い通りに動くことです。

\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\

自己啓発 のためにやっているのであって、それ以上ではない、純粋に自分のためにやって いるのです。誰かに何かを書いているわけではないと思います。

誰かにアドバイスをするとき、それは自分のためではありません。

特にこのようなミスは・・・PERIOD_CURRENTとは何か、条件での結果はどうなるのか

      if(TimeFrame != PERIOD_CURRENT)
 
Alexey Viktorov #:

誰かにアドバイスをするとき、それは自分のためではありません。

特にこのようなミスは・・・PERIOD_CURRENTとは何か、条件での結果はどうなるのか

よくわからないけど、使える!

設定で設定した期間ごとにチャートが切り替わります。

\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\

誰かが質問してきたら、その人の立場に立って、求められる結果を出すように心がけています。

お気づきでないようですが、私はこのタスクを可能な限り完了し、完成したスクリプトを掲載しました - 正しくはないかもしれませんが - その目的は達成されました。

 
Alexey Viktorov #:

誰かにアドバイスをするとき、それはもう自分のためではない。

特にこのようなミスは・・・PERIOD_CURRENTとは何か、条件での結果はどうなるのか

 if(TimeFrame != PERIOD_CURRENT)

ここではエラーは出ていません。