ChartScreenShot

現在のチャートのスクリーンショットを、指定された拡張子に応じてGIF、PNG、またはBMPファイルとして保存します。このコマンドはチャートメッセージキューに追加され、以前のすべてのコマンドが処理された後にのみ実行されます。

bool  ChartScreenShot(
   long             chart_id,                   // Chart ID
   string           filename,                   // Symbol name
   int              width,                      // Width
   int              height,                     // Height
   ENUM_ALIGN_MODE  align_mode=ALIGN_RIGHT      // Alignment type
   );

パラメーター

chart_id

[in]チャートID。0は現在のチャートを意味します。

ファイル名

[入力]スクリーンショットのファイル名。63文字を超えることはできません。スクリーンショットファイルは\ Filesディレクトリに配置されます。

[in]スクリーンショットの幅(ピクセル単位)。

高さ

[in]スクリーンショットの高さ(ピクセル単位)。

align_mode = ALIGN_RIGHT

[in]狭いスクリーンショットの出力モード。ENUM_ALIGN_MODE列挙のALIGN_RIGHTは、右マージン(端からの出力)に揃えることを意味します。ALIGN_LEFTは左揃えを意味します。

戻り値

コマンドがチャートキューに追加された場合はtrueを、それ以外の場合はfalseを返します。エラーの詳細を取得するには、GetLastError()関数を使用します。

注意

特定の位置からチャートのスクリーンショットを撮る必要がある場合、最初にChartNavigate()関数を使用してグラフを配置する必要があります。スクリーンショットの水平方向のサイズがグラフウィンドウよりも小さい場合、align_modeの設定に応じて、グラフウィンドウの右側または左側が出力されます。

例:

#property description “The Expert Advisor demonstrates how to create a series of screenshots of the current”
#property description “chart using the ChartScreenShot() function. For convenience, the file name is”
#property description “shown on the chart. The height and width of images is defined through macros.”
//—
#define        WIDTH  800     // Image width to call ChartScreenShot()
#define        HEIGHT 600     // Image height to call ChartScreenShot()
//— input parameters
input int      pictures=5;    // The number of images in the series
int            mode=-1;       // -1 denotes a shift to the right edge of the chart, 1 – to the left
int            bars_shift=300;// The number of bars when scrolling the chart using ChartNavigate()
//+——————————————————————+
//| Expert initialization function                                   |
//+——————————————————————+
void OnInit()
  {
//— Disable chart autoscroll
   ChartSetInteger(0,CHART_AUTOSCROLL,false);
//— Set the shift of the right edge of the chart
   ChartSetInteger(0,CHART_SHIFT,true);
//— Show a candlestick chart
   ChartSetInteger(0,CHART_MODE,CHART_CANDLES);
//—
   Print(“Preparation of the Expert Advisor is completed”);
  }
//+——————————————————————+
//| Expert tick function                                             |
//+——————————————————————+
void OnTick()
  {
//—
  }
//+——————————————————————+
//| ChartEvent function                                              |
//+——————————————————————+
void OnChartEvent(const int id,
                  const long &lparam,
                  const double &dparam,
                  const string &sparam)
  {
//— Show the name of the function, call time and event identifier
   Print(__FUNCTION__,TimeCurrent(),”   id=”,id,”   mode=”,mode);
//— Handle the CHARTEVENT_CLICK event (“A mouse click on the chart”)
   if(id==CHARTEVENT_CLICK)
     {
      //— Initial shift from the chart edge
      int pos=0;
      //— Operation with the left chart edge
      if(mode>0)
        {
         //— Scroll the chart to the left edge
         ChartNavigate(0,CHART_BEGIN,pos);
         for(int i=0;i<pictures;i++)
           {
            //— Prepare a text to show on the chart and a file name
            string name=“ChartScreenShot”+“CHART_BEGIN”+string(pos)+“.gif”;
            //— Show the name on the chart as a comment
            Comment(name);
            //— Save the chart screenshot in a file in the terminal_directory\MQL4\Files\
            if(ChartScreenShot(0,name,WIDTH,HEIGHT,ALIGN_LEFT))
               Print(“We’ve saved the screenshot “,name);
            //—
            pos+=bars_shift;
            //— Give the user time to look at the new part of the chart
            Sleep(3000);
            //— Scroll the chart from the current position bars_shift bars to the right
            ChartNavigate(0,CHART_CURRENT_POS,bars_shift);
           }
         //— Change the mode to the opposite
         mode*=-1;
        }
      else // Operation with the right chart edge
        {
         //— Scroll the chart to the right edge
         ChartNavigate(0,CHART_END,pos);
         for(int i=0;i<pictures;i++)
           {
            //— Prepare a text to show on the chart and a file name
            string name=“ChartScreenShot”+“CHART_END”+string(pos)+“.gif”;
            //— Show the name on the chart as a comment
            Comment(name);
            //— Save the chart screenshot in a file in the terminal_directory\MQL4\Files\
            if(ChartScreenShot(0,name,WIDTH,HEIGHT,ALIGN_RIGHT))
               Print(“We’ve saved the screenshot “,name);
            //—
            pos+=bars_shift;
            //— Give the user time to look at the new part of the chart
            Sleep(3000);
            //— Scroll the chart from the current position bars_shift bars to the right
            ChartNavigate(0,CHART_CURRENT_POS,-bars_shift);
           }
         //— Change the mode to the opposite
         mode*=-1;
        }
     }  // End of CHARTEVENT_CLICK event handling
//— End of the OnChartEvent() handler  
  }

Leave a Reply

Your email address will not be published. Required fields are marked *

CAPTCHA


You may use these HTML tags and attributes: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code class="" title="" data-url=""> <del datetime=""> <em> <i> <q cite=""> <s> <strike> <strong> <pre class="" title="" data-url=""> <span class="" title="" data-url="">