Author: Roman.
1 Views
0 Downloads
0 Favorites
Surface
ÿþ//+------------------------------------------------------------------+

//|                                                     Surface.mq4 |

//|                        Copyright 2018, MetaQuotes Software Corp. |

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

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

#property strict

#property version     "1.0"

#property copyright   "Roman."

#property description "You can support the author"

#property description "Webmoney: Z330494414179, R222585888867"

#property description " "

#property description "Thank you very much."

#property indicator_chart_window



extern int X = 250;//X

extern int Y = 250;//Y

extern int Z = 1200;//Z

extern int U = 500;//Z

extern int Step = 5;//(03

extern int XCoor = 700;//;8==0

extern int YCoor = 450;//(8@8=0



#define Function(x,y,z,u) double((MathPow(double((x - X/2)*(x - X/2)/5000.0f + (y - Y/2)*(y - Y/2)/5000.0f), double(u)/100000000.0f+1))*(double(u)/80.0f))+double(50.0f*sin(0.002*double(x-X/2)*double(x-X/2)+0.002*double(y-Y/2)*double(y-Y/2)+0.01*double(z+20))/(0.002*double(x-X/2)*double(x-X/2)+0.002*double(y-Y/2)*double(y-Y/2)+0.01+0.01*double(z+20)))



double aY,aX,aZ;



struct TwoDimVector

  {

   double            x, y;

  };



struct Vector

  {

   double            x, y, z;

   TwoDimVector          Get2D(double dDistance,double dZ)

     {

      TwoDimVector TDV;

      TDV.x = this.x * dDistance/(this.z + dZ);

      TDV.y = this.y * dDistance/(this.z + dZ);

      return TDV;

     }

  };



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

//|                                                                  |

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

class ThreeDimVector

  {

public :

   double               x,y,z;

                     ThreeDimVector()

     {

     }



                     ThreeDimVector(double _x, double _y, double _z)

     {

      this.x = _x;

      this.y = _y;

      this.z = _z;

     }



   Vector              Rotate()

     {

      double  tmpx, tmp, Cos, Sin;

      Vector Ret;



      tmpx = this.x * (Cos = MathCos(aY)) + this.z * (Sin=MathSin(aY));

      tmp = -this.x * Sin + this.z * Cos;



      Ret.z = -this.y * (Sin = MathSin(aX)) + tmp * (Cos = MathCos(aX));

      tmp = this.y  * Cos + tmp * Sin;



      Ret.x = tmpx  * (Cos=MathCos(aZ)) + tmp * (Sin=MathSin(aZ));

      Ret.y = -tmpx * Sin + tmp * Cos;

      return Ret;

     }

  };

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

//|                                                                  |

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

int fintWay = 0,uintWay = 0;

double Distance = 100;



int ShiftX=250, ShiftY=250;



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

//|                                                                  |

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

#define Dist 1200

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

//|                                                                  |

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

void Draw()

  {

   string D = "DrawMap", MasName = "::Maps";

   ObjectDelete(0,"DrawMap");

   ObjectCreate(0,D,OBJ_BITMAP_LABEL,0,0,0,0);

   ObjectSetString(0,D,OBJPROP_BMPFILE, MasName);

   ObjectSetInteger(0,D,OBJPROP_XDISTANCE, (ChartGetInteger(0,CHART_WIDTH_IN_PIXELS) - XCoor)/2);

   ObjectSetInteger(0,D,OBJPROP_YDISTANCE, (ChartGetInteger(0,CHART_HEIGHT_IN_PIXELS) - YCoor)/2);

   ObjectSetInteger(0,D,OBJPROP_BACK, false);

   uint MapSrorrage[];

   ArrayFree(MapSrorrage);

   int Size = XCoor * YCoor;

   ArrayResize(MapSrorrage, Size);



   ThreeDimVector Tempo;

   TwoDimVector NewStart = ThreeDimVector(0,150, 0).Rotate().Get2D(Distance,Dist);

   Brezenhem((int) NewStart.x + ShiftX, (int) NewStart.y + ShiftY, ShiftX, ShiftY, MapSrorrage, clrLime);



   NewStart = ThreeDimVector(150,0, 0).Rotate().Get2D(Distance,Dist);

   Brezenhem((int) NewStart.x + ShiftX, (int) NewStart.y + ShiftY, ShiftX, ShiftY, MapSrorrage, clrBlue);



   NewStart = ThreeDimVector(0,0, 150).Rotate().Get2D(Distance,Dist);

   Brezenhem((int) NewStart.x + ShiftX, (int) NewStart.y + ShiftY, ShiftX, ShiftY, MapSrorrage, clrRed);



   Brezenhem((int) 0, 0, YCoor - 1, 0, MapSrorrage, clrBlack);



   Brezenhem((int) 0, 0, 0, XCoor - 1, MapSrorrage, clrBlack);



   Brezenhem((int) YCoor - 1, 0, YCoor - 1, XCoor - 1, MapSrorrage, clrBlack);



   Brezenhem((int) 0, XCoor - 1, YCoor - 1, XCoor - 1, MapSrorrage, clrBlack);







   for(int intStop = Y - Step; intStop >= 0; intStop -=Step)

      for(int Index = X - Step; Index > 0; Index-=Step)

        {

         NewStart = ThreeDimVector(intStop,Index, Function(intStop,Index,fintWay,uintWay)).Rotate().Get2D(Distance,Dist);

         TwoDimVector          NewEnd = ThreeDimVector(intStop,Index - Step,  Function(intStop,Index - Step,fintWay,uintWay)).Rotate().Get2D(Distance,Dist);

         Brezenhem((int) NewStart.x + ShiftX, (int) NewStart.y + ShiftY, (int) NewEnd.x + ShiftX, (int) NewEnd.y + ShiftY, MapSrorrage,clrBlack);

        }



   for(int Index = X - Step; Index >= 0; Index -= Step)

      for(int intStop = Y - Step; intStop > 0; intStop -= Step)

        {

         NewStart = ThreeDimVector(intStop,Index, Function(intStop,Index,fintWay,uintWay)).Rotate().Get2D(Distance,Dist);

         TwoDimVector          NewEnd = ThreeDimVector(intStop-Step,Index, Function(intStop-Step,Index,fintWay,uintWay)).Rotate().Get2D(Distance,Dist);

         Brezenhem((int) NewStart.x + ShiftX, (int) NewStart.y + ShiftY, (int) NewEnd.x + ShiftX, (int) NewEnd.y + ShiftY, MapSrorrage, clrBlack);

        }

   ResourceFree(MasName);

   ResourceCreate(MasName,MapSrorrage,XCoor,YCoor,0,0,0,COLOR_FORMAT_ARGB_NORMALIZE);

   ChartRedraw();

  }

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



#define drPoint(Maps,x,y,Color) if(x >=0 && y >= 0 && x < YCoor  &&  y < XCoor) MapSrorrage[x*XCoor+y] = ColorToARGB(Color);





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

//|                                                                  |

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

void Brezenhem(int x2, int y2, int x1, int y1,uint & MapSrorrage[],color Color)

  {

   int deltaX = MathAbs(x2 - x1);

   int deltaY = MathAbs(y2 - y1);

   int signX = x1 < x2 ? 1 : -1;

   int signY = y1 < y2 ? 1 : -1;

   int error = deltaX - deltaY;

   drPoint(MapSrorrage,x2,y2,Color);

   while(x1 != x2 || y1 != y2)

     {

      drPoint(MapSrorrage,x1,y1,Color);

      int error2 = error * 2;

      if(error2 > -deltaY)

        {

         error -= deltaY;

         x1 += signX;

        }

      if(error2 < deltaX)

        {

         error += deltaX;

         y1 += signY;

        }

     }

  }

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

//|                                                                  |

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

int OnInit()

  {

   ChartSetInteger(0,CHART_EVENT_MOUSE_MOVE,true);

   ChartSetInteger(0,CHART_MOUSE_SCROLL,false);

   ChartSetInteger(0,CHART_COLOR_BACKGROUND,clrWhite);

   ChartSetInteger(0,CHART_COLOR_FOREGROUND,clrNONE);

   ChartSetInteger(0,CHART_COLOR_CHART_DOWN,clrMediumOrchid);

   ChartSetInteger(0,CHART_COLOR_CHART_LINE,clrNONE);

   ChartSetInteger(0,CHART_MODE,CHART_LINE);

   ChartSetInteger(0,CHART_SHOW_GRID,false);

   ChartSetInteger(0,CHART_COLOR_ASK,clrNONE);

   ChartSetInteger(0,CHART_COLOR_BID,clrNONE);

   ChartSetInteger(0,CHART_COLOR_STOP_LEVEL,clrNONE);

   ChartSetInteger(0,CHART_COLOR_BID,clrNONE);

   ChartSetInteger(0,CHART_COLOR_GRID,clrNONE);

   ChartSetInteger(0,CHART_SHOW_TRADE_LEVELS,false);



   if(GlobalVariableCheck("Angle aX"))

     {

      aX=GlobalVariableGet("Angle aX");

     }

   else

      aX=-0.46;

   if(GlobalVariableCheck("Angle aY"))

     {

      aY=GlobalVariableGet("Angle aY");

     }

   else

      aY=-1.06;

   if(GlobalVariableCheck("Angle aZ"))

     {

      aZ=GlobalVariableGet("Angle aZ");

     }

   else

      aZ=0.06;



   if(GlobalVariableCheck("Distance"))

     {

      Distance=GlobalVariableGet("Distance");

     }

   else

      Distance=2800;



   if(GlobalVariableCheck("ShiftX"))

     {

      ShiftX=(int)GlobalVariableGet("ShiftX");

     }

   else

      ShiftX=150;



   if(GlobalVariableCheck("ShiftY"))

     {

      ShiftY=(int)GlobalVariableGet("ShiftY");

     }

   else

      ShiftY=215;



//---

   EventSetMillisecondTimer(20);

   return(INIT_SUCCEEDED);

  }



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

//|                                                                  |

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

void OnTimer()

  {

   Draw();

  }



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

//|                                                                  |

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

void OnDeinit(const int reason)

  {

   GlobalVariableSet("Angle aX",aX);

   GlobalVariableSet("Angle aY",aY);

   GlobalVariableSet("Angle aZ",aZ);

   GlobalVariableSet("Distance",Distance);

   GlobalVariableSet("ShiftX",ShiftX);

   GlobalVariableSet("ShiftY",ShiftY);



  }

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

//| Custom indicator iteration function                              |

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

int OnCalculate(const int rates_total,

                const int prev_calculated,

                const datetime &time[],

                const double &open[],

                const double &high[],

                const double &low[],

                const double &close[],

                const long &tick_volume[],

                const long &volume[],

                const int &spread[])

  {

//---



//--- return value of prev_calculated for next call

   return(rates_total);

  }



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

int Command = 0;



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

//|                                                                  |

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

void OnChartEvent(const int id,

                  const long &lparam,

                  const double &dparam,

                  const string &sparam)

  {

   if(id==CHARTEVENT_MOUSE_MOVE)

     {

      int xlast=(int)lparam, ylast=(int)dparam;

      static int xmouse=0, ymouse=0;

      if(MouseLeftState((uint)sparam))

        {

         switch(Command)

           {

            case 1:

               if(xlast > xmouse)//||ylast > ymouse)

                 {

                  aX += 0.01;

                 }

               if(xlast < xmouse)//||ylast < ymouse)

                 {

                  aX -= 0.01;

                 }

               break;

            case 2:

               if(xlast > xmouse)//||ylast > ymouse)

                 {

                  aY += 0.01;

                 }

               if(xlast < xmouse)//||ylast < ymouse)

                 {

                  aY -= 0.01;

                 }

               break;

            case 3:

               if(xlast > xmouse)//||ylast > ymouse)

                 {

                  aZ += 0.01;

                 }

               if(xlast < xmouse)//||ylast < ymouse)

                 {

                  aZ -= 0.01;

                 }

               break;

            case 4:

               if(xlast > xmouse)//||ylast > ymouse)

                 {

                  Distance*=1.01;

                 }

               if(xlast < xmouse)//||ylast < ymouse)

                 {

                  Distance*=0.99;

                 }

               break;

            case 5:

               if(xlast > xmouse)//||ylast > ymouse)

                 {

                  ShiftY+=5;

                 }

               if(xlast < xmouse)//||ylast < ymouse)

                 {

                  ShiftY-=5;

                 }

               if(ylast > ymouse)//||ylast > ymouse)

                 {

                  ShiftX+=5;

                 }

               if(ylast < ymouse)//||ylast < ymouse)

                 {

                  ShiftX-=5;

                 }

               break;

           }

         xmouse = xlast;

         ymouse = ylast;

        }

     }

   if(id==CHARTEVENT_CHART_CHANGE)

     {

      DrawFin();

     }

   if(id==CHARTEVENT_KEYDOWN)

     {

      if((int)lparam==StringGetChar("1",0))

        {

         Command = 1;

         DrawFin();

        }



      if((int)lparam==StringGetChar("2",0))

        {

         Command = 2;

         DrawFin();

        }



      if((int)lparam==StringGetChar("3",0))

        {

         Command = 3;

         DrawFin();

        }



      if((int)lparam==StringGetChar("4",0))

        {

         Command = 4;

         DrawFin();

        }



      if((int)lparam==StringGetChar("5",0))

        {

         Command = 5;

         DrawFin();

        }



      if((int)lparam==192)

        {

         Command = 0;

         DrawFin();

        }



      if((int)lparam==StringGetChar("Q",0))

        {

         if(fintWay>0)

            fintWay-=Step;

         DrawFin();



        }



      if((int)lparam==StringGetChar("W",0))

        {

         fintWay+=Step;

         if(Z<fintWay)

            fintWay-=Step;

         DrawFin();

        }

      if((int)lparam==StringGetChar("A",0))

        {

         if(uintWay>0)

            uintWay-=Step;

         DrawFin();



        }



      if((int)lparam==StringGetChar("S",0))

        {

         uintWay+=Step;

         if(U<uintWay)

            uintWay-=Step;

         DrawFin();

        }

     }

  }

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

//|                                                                  |

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

bool MouseLeftState(uint state)

  {

   if((state& 1) == 1)

      return true;

   return false;

  }

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

//|                                                                  |

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

void DrawFin()

  {

   string name = "fin";

   long chart_ID=0;

      if(ObjectFind(chart_ID,name)==-1)

     {

      if(!ObjectCreate(chart_ID,name,OBJ_LABEL,0,0,0))

        {

         Print(__FUNCTION__, ": =5 C40;>AL A>740BL B5:AB>2CN <5B:C! >4 >H81:8 = ",GetLastError());

         //       return(false);

        }

     }



   ObjectSetInteger(chart_ID,name,OBJPROP_XDISTANCE,ChartGetInteger(0,CHART_WIDTH_IN_PIXELS)/2);

   ObjectSetInteger(chart_ID,name,OBJPROP_YDISTANCE,30);

//--- CAB0=>28< C3>; 3@0D8:0, >B=>A8B5;L=> :>B>@>3> 1C4CB >?@545;OBLAO :>>@48=0BK B>G:8

   ObjectSetInteger(chart_ID,name,OBJPROP_CORNER,CORNER_LEFT_LOWER);

//--- CAB0=>28< B5:AB

   ObjectSetString(chart_ID,name,OBJPROP_TEXT,"key 'A' ( - Step)   < -    U = " + IntegerToString(uintWay) + "    - >   key 'S' ( + Step)");

//--- CAB0=>28< H@8DB B5:AB0

   ObjectSetString(chart_ID,name,OBJPROP_FONT,"Arial");

//--- CAB0=>28< @07<5@ H@8DB0

   ObjectSetInteger(chart_ID,name,OBJPROP_FONTSIZE,10);



   ObjectSetInteger(chart_ID,name,OBJPROP_ANCHOR,ANCHOR_LOWER);

//--- CAB0=>28< F25B

   ObjectSetInteger(chart_ID,name,OBJPROP_COLOR,clrBlack);

//--- >B>1@078< =0 ?5@54=5< (false) 8;8 704=5< (true) ?;0=5

   ObjectSetInteger(chart_ID,name,OBJPROP_BACK,false);

//--- 2:;NG8< (true) 8;8 >B:;NG8< (false) @568< ?5@5<5I5=8O <5B:8 <KHLN

   ObjectSetInteger(chart_ID,name,OBJPROP_SELECTABLE,false);

   ObjectSetInteger(chart_ID,name,OBJPROP_SELECTED,false);

//--- A:@>5< (true) 8;8 >B>1@078< (false) 8<O 3@0D8G5A:>3> >1J5:B0 2 A?8A:5 >1J5:B>2

   ObjectSetInteger(chart_ID,name,OBJPROP_HIDDEN,false);

   name = "ufin";

   if(ObjectFind(chart_ID,name)==-1)

     {

      if(!ObjectCreate(chart_ID,name,OBJ_LABEL,0,0,0))

        {

         Print(__FUNCTION__, ": =5 C40;>AL A>740BL B5:AB>2CN <5B:C! >4 >H81:8 = ",GetLastError());

         //       return(false);

        }

     }



   ObjectSetInteger(chart_ID,name,OBJPROP_XDISTANCE,ChartGetInteger(0,CHART_WIDTH_IN_PIXELS)/2);

   ObjectSetInteger(chart_ID,name,OBJPROP_YDISTANCE,50);

//--- CAB0=>28< C3>; 3@0D8:0, >B=>A8B5;L=> :>B>@>3> 1C4CB >?@545;OBLAO :>>@48=0BK B>G:8

   ObjectSetInteger(chart_ID,name,OBJPROP_CORNER,CORNER_LEFT_LOWER);

//--- CAB0=>28< B5:AB

   ObjectSetString(chart_ID,name,OBJPROP_TEXT,"key 'Q' ( - Step)   < -    Z = " + IntegerToString(fintWay) + "    - >   key 'W' ( + Step)");

//--- CAB0=>28< H@8DB B5:AB0

   ObjectSetString(chart_ID,name,OBJPROP_FONT,"Arial");

//--- CAB0=>28< @07<5@ H@8DB0

   ObjectSetInteger(chart_ID,name,OBJPROP_FONTSIZE,10);



   ObjectSetInteger(chart_ID,name,OBJPROP_ANCHOR,ANCHOR_LOWER);

//--- CAB0=>28< F25B

   ObjectSetInteger(chart_ID,name,OBJPROP_COLOR,clrBlack);

//--- >B>1@078< =0 ?5@54=5< (false) 8;8 704=5< (true) ?;0=5

   ObjectSetInteger(chart_ID,name,OBJPROP_BACK,false);

//--- 2:;NG8< (true) 8;8 >B:;NG8< (false) @568< ?5@5<5I5=8O <5B:8 <KHLN

   ObjectSetInteger(chart_ID,name,OBJPROP_SELECTABLE,false);

   ObjectSetInteger(chart_ID,name,OBJPROP_SELECTED,false);

//--- A:@>5< (true) 8;8 >B>1@078< (false) 8<O 3@0D8G5A:>3> >1J5:B0 2 A?8A:5 >1J5:B>2

   ObjectSetInteger(chart_ID,name,OBJPROP_HIDDEN,false);



   name = "Name";



   if(ObjectFind(chart_ID,name)==-1)

     {

      if(!ObjectCreate(chart_ID,name,OBJ_LABEL,0,0,0))

        {

         Print(__FUNCTION__, ": =5 C40;>AL A>740BL B5:AB>2CN <5B:C! >4 >H81:8 = ",GetLastError());

         //       return(false);

        }

     }



   ObjectSetInteger(chart_ID,name,OBJPROP_XDISTANCE,ChartGetInteger(0,CHART_WIDTH_IN_PIXELS)/2);

   ObjectSetInteger(chart_ID,name,OBJPROP_YDISTANCE,20);

//--- CAB0=>28< C3>; 3@0D8:0, >B=>A8B5;L=> :>B>@>3> 1C4CB >?@545;OBLAO :>>@48=0BK B>G:8

   ObjectSetInteger(chart_ID,name,OBJPROP_CORNER,CORNER_LEFT_UPPER);

//--- CAB0=>28< B5:AB

   ObjectSetString(chart_ID,name,OBJPROP_TEXT,"F(x,y,z,u) = ((x*x+y*y)^u)sin(x*x+y*y+ )/(x*x+y*y+z+1)");

//--- CAB0=>28< H@8DB B5:AB0

   ObjectSetString(chart_ID,name,OBJPROP_FONT,"Arial");

//--- CAB0=>28< @07<5@ H@8DB0

   ObjectSetInteger(chart_ID,name,OBJPROP_FONTSIZE,10);



   ObjectSetInteger(chart_ID,name,OBJPROP_ANCHOR,ANCHOR_LOWER);

//--- CAB0=>28< F25B

   ObjectSetInteger(chart_ID,name,OBJPROP_COLOR,clrBlack);

//--- >B>1@078< =0 ?5@54=5< (false) 8;8 704=5< (true) ?;0=5

   ObjectSetInteger(chart_ID,name,OBJPROP_BACK,false);

//--- 2:;NG8< (true) 8;8 >B:;NG8< (false) @568< ?5@5<5I5=8O <5B:8 <KHLN

   ObjectSetInteger(chart_ID,name,OBJPROP_SELECTABLE,false);

   ObjectSetInteger(chart_ID,name,OBJPROP_SELECTED,false);

//--- A:@>5< (true) 8;8 >B>1@078< (false) 8<O 3@0D8G5A:>3> >1J5:B0 2 A?8A:5 >1J5:B>2

   ObjectSetInteger(chart_ID,name,OBJPROP_HIDDEN,false);



   name = "Message";



   if(ObjectFind(chart_ID,name)==-1)

     {

      if(!ObjectCreate(chart_ID,name,OBJ_LABEL,0,0,0))

        {

         Print(__FUNCTION__, ": =5 C40;>AL A>740BL B5:AB>2CN <5B:C! >4 >H81:8 = ",GetLastError());

         //       return(false);

        }

     }



   ObjectSetInteger(chart_ID,name,OBJPROP_XDISTANCE,ChartGetInteger(0,CHART_WIDTH_IN_PIXELS)/2);

   ObjectSetInteger(chart_ID,name,OBJPROP_YDISTANCE,40);

//--- CAB0=>28< C3>; 3@0D8:0, >B=>A8B5;L=> :>B>@>3> 1C4CB >?@545;OBLAO :>>@48=0BK B>G:8

   ObjectSetInteger(chart_ID,name,OBJPROP_CORNER,CORNER_LEFT_UPPER);

//--- CAB0=>28< B5:AB

   ObjectSetString(chart_ID,name,OBJPROP_TEXT,"Press key ` - Stop or 1-5, click and move mouse.");

//--- CAB0=>28< H@8DB B5:AB0

   ObjectSetString(chart_ID,name,OBJPROP_FONT,"Arial");

//--- CAB0=>28< @07<5@ H@8DB0

   ObjectSetInteger(chart_ID,name,OBJPROP_FONTSIZE,10);



   ObjectSetInteger(chart_ID,name,OBJPROP_ANCHOR,ANCHOR_LOWER);

//--- CAB0=>28< F25B

   ObjectSetInteger(chart_ID,name,OBJPROP_COLOR,clrBlack);

//--- >B>1@078< =0 ?5@54=5< (false) 8;8 704=5< (true) ?;0=5

   ObjectSetInteger(chart_ID,name,OBJPROP_BACK,false);

//--- 2:;NG8< (true) 8;8 >B:;NG8< (false) @568< ?5@5<5I5=8O <5B:8 <KHLN

   ObjectSetInteger(chart_ID,name,OBJPROP_SELECTABLE,false);

   ObjectSetInteger(chart_ID,name,OBJPROP_SELECTED,false);

//--- A:@>5< (true) 8;8 >B>1@078< (false) 8<O 3@0D8G5A:>3> >1J5:B0 2 A?8A:5 >1J5:B>2

   ObjectSetInteger(chart_ID,name,OBJPROP_HIDDEN,false);



   name = "Command";



   if(ObjectFind(chart_ID,name)==-1)

     {

      if(!ObjectCreate(chart_ID,name,OBJ_LABEL,0,0,0))

        {

         Print(__FUNCTION__, ": =5 C40;>AL A>740BL B5:AB>2CN <5B:C! >4 >H81:8 = ",GetLastError());

         //       return(false);

        }

     }

   ObjectSetInteger(chart_ID,name,OBJPROP_XDISTANCE,ChartGetInteger(0,CHART_WIDTH_IN_PIXELS)/2);

   ObjectSetInteger(chart_ID,name,OBJPROP_YDISTANCE,60);

//--- CAB0=>28< C3>; 3@0D8:0, >B=>A8B5;L=> :>B>@>3> 1C4CB >?@545;OBLAO :>>@48=0BK B>G:8

   ObjectSetInteger(chart_ID,name,OBJPROP_CORNER,CORNER_LEFT_UPPER);

//--- CAB0=>28< B5:AB

   ObjectSetString(chart_ID,name,OBJPROP_TEXT,"Selected Command: " +

                   (Command!=0?Command!=1?Command!=2?Command!=3?Command!=4?

                    "X ,Y Coor Move":"Distance":

                    "Rotation around the axis Z":"Rotation around the axis Y":"Rotation around the axis X":"Stop"));

//--- CAB0=>28< H@8DB B5:AB0

   ObjectSetString(chart_ID,name,OBJPROP_FONT,"Arial");

//--- CAB0=>28< @07<5@ H@8DB0

   ObjectSetInteger(chart_ID,name,OBJPROP_FONTSIZE,10);



   ObjectSetInteger(chart_ID,name,OBJPROP_ANCHOR,ANCHOR_LOWER);

//--- CAB0=>28< F25B

   ObjectSetInteger(chart_ID,name,OBJPROP_COLOR,clrBlack);

//--- >B>1@078< =0 ?5@54=5< (false) 8;8 704=5< (true) ?;0=5

   ObjectSetInteger(chart_ID,name,OBJPROP_BACK,false);

//--- 2:;NG8< (true) 8;8 >B:;NG8< (false) @568< ?5@5<5I5=8O <5B:8 <KHLN

   ObjectSetInteger(chart_ID,name,OBJPROP_SELECTABLE,false);

   ObjectSetInteger(chart_ID,name,OBJPROP_SELECTED,false);

//--- A:@>5< (true) 8;8 >B>1@078< (false) 8<O 3@0D8G5A:>3> >1J5:B0 2 A?8A:5 >1J5:B>2

   ObjectSetInteger(chart_ID,name,OBJPROP_HIDDEN,false);

  }

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



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



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

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 ---