Test_iCanvas

Author: Copyright 2018, MetaQuotes Software Corp.
Price Data Components
Series array that contains close prices for each bar
0 Views
0 Downloads
0 Favorites
Test_iCanvas
ÿþ//+------------------------------------------------------------------+

//|                                                 Test_iCanvas.mq4 |

//|                        Copyright 2018, MetaQuotes Software Corp. |

//|                                             https://www.mql5.com |

//+------------------------------------------------------------------+

#property copyright "Copyright 2018, MetaQuotes Software Corp."

#property link      "https://www.mql5.com"

#property version   "1.00"

#property indicator_chart_window

#property strict

#include <Canvas\iCanvas.mqh>

//+------------------------------------------------------------------+

int OnInit()

  {

   EventSetMillisecondTimer(30);

   ChartSetInteger(0,CHART_CROSSHAIR_TOOL,false);  // turn off the crosshair

   return(INIT_SUCCEEDED);

  }



void OnDeinit(const int reason) {if(reason<2) {ChartSetInteger(0,CHART_CROSSHAIR_TOOL,true); ChartRedraw();}}

//+------------------------------------------------------------------+

void  OnTimer()

  {

   static int X=0;

   static int Y=0;

   if(X!=W.MouseX || Y!=W.MouseY)

     {

      Canvas.Erase(0);

      // Draw a blurry spot

      for(int ix=-20;ix<=20;ix++) for(int iy=-20;iy<=20;iy++)

        {

         double p=sqrt(ix*ix+iy*iy)/20.0;

         if(p>1) p=1;

         uchar P=(uchar)Round((1.0-p)*255.0);

         Canvas.PixelSet(W.MouseX+ix,W.MouseY+iy,ARGB(P,100,0,200));

        }

      //  Display the information block

      int Y1=(int)Canvas.Y(Canvas.Close(W.MouseX));  // Y coordinate - Close price at the location of the mouse pointer.

      Canvas.FillRectangle(W.MouseX,Y1,W.MouseX+140,Y1+67,0xA0808080);

      Canvas.TextPosition(W.MouseX+5,Y1+2);

      Canvas.CurentFont("Arial",14,16,clrWhite);

      Canvas.Comm("Close = "+DoubleToString(Canvas.Close(W.MouseX),_Digits));

      Canvas.Comm("Bar = "+DoubleToString(W.MouseBar,2));

      Canvas.Comm(TimeToString(W.MouseTime,TIME_DATE|TIME_SECONDS));

      Canvas.Comm("SubWindow = "+string(W.MouseSubWin));

      //  Crosshairs

      Canvas.LineHorizontal(0,W.Width-1,W.MouseY,~W.Color);

      Canvas.LineVertical(W.MouseX,0,W.Height-1,~W.Color);

      int Ym=(W.MouseY>W.Height/2)?(W.MouseY-16):(W.MouseY+2);

      int Xm=(W.MouseX< W.Width/2)?(W.MouseX+4):(W.MouseX-105);

      Canvas.TextOut(W.Width-50,Ym,DoubleToString(W.MousePrice,_Digits),~W.Color);

      Canvas.TextOut(Xm,W.Height-16,TimeToString(W.MouseTime,TIME_DATE|TIME_SECONDS),~W.Color);



      Canvas.Update();

      X=W.MouseX; Y=W.MouseY;

     }

  }

//+------------------------------------------------------------------+

int OnCalculate(const int rates_total,

                const int prev_calculated,

                const int begin,

                const double &price[])

  {

   return(rates_total);

  }

Comments

Markdown supported. Formatting help

Markdown Formatting Guide

Element Markdown Syntax
Heading # H1
## H2
### H3
Bold **bold text**
Italic *italicized text*
Link [title](https://www.example.com)
Image ![alt text](image.jpg)
Code `code`
Code Block ```
code block
```
Quote > blockquote
Unordered List - Item 1
- Item 2
Ordered List 1. First item
2. Second item
Horizontal Rule ---