por favor ayúdame a poner la flecha de compra y venta en este código. - página 2

 
Sugiero que la tarea: en la función OnDeinit() para escribir el código que elimina todos los objetos OBJ_ARROW_UP y OBJ_ARROW_DOWN.
 

the same problem still persist. and i have added delete function. please help.


//+------------------------------------------------------------------+
//|                                                         Test.mq4 |
//|                        Copyright 2015, MetaQuotes Software Corp. |
//|                                             https://www.mql5.com |
//+------------------------------------------------------------------+
#property copyright "Copyright 2015, MetaQuotes Software Corp."
#property link      "https://www.mql5.com"
#property version   "1.00"
#property strict
#property indicator_chart_window
//--- input parameter
sinput bool Alerts=TRUE;
//--- input parameters of the script 
input string            InpNameUP="ArrowUp";          // Sign name UP
input string            InpNameDOWN="ArrowDown";      // Sign name DOWN
input ENUM_ARROW_ANCHOR InpAnchorUP=ANCHOR_TOP;       // Anchor type 
input ENUM_ARROW_ANCHOR InpAnchorDOWN=ANCHOR_BOTTOM;  // Anchor type 
input color             InpColorUP=clrGreen;          // Sign color UP
input color             InpColorDOWN=clrRed;          // Sign color DOWN
input ENUM_LINE_STYLE   InpStyle=STYLE_DOT;           // Border line style 
input int               InpWidth=5;                   // Sign size 
input bool              InpBack=false;                // Background sign 
input bool              InpSelection=false;           // Highlight to move 
input bool              InpHidden=true;               // Hidden in the object list 
input long              InpZOrder=0;                  // Priority for mouse click 
//+------------------------------------------------------------------+
//| Custom indicator initialization function                         |
//+------------------------------------------------------------------+
int OnInit(void)
  {
   return(INIT_SUCCEEDED);
  }
//+------------------------------------------------------------------+
//| expert start 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[])
  {
   static datetime prev;
   if(time[0]>prev) // new bar
     {
      //----
      if(Alerts)
        {
         if(close[4]>open[4] && close[3]>open[3] && close[2]>open[2] && close[1]<open[2])
           {
            string SELLSIGNAL=InpNameDOWN+(string)time[1];
            ArrowDownCreate(0,SELLSIGNAL,0,time[1],high[1],InpAnchorDOWN,InpColorDOWN,InpStyle,
                            InpWidth,InpBack,InpSelection,InpHidden);
/*if(ObjectFind(0,SELLSIGNAL)!=0)
              {
               ObjectCreate(SELLSIGNAL,OBJ_ARROW_DOWN,0,time[1],low[1]);
               ObjectSet(SELLSIGNAL,OBJPROP_WIDTH,5);
               //ObjectSet(SELLSIGNAL,OBJPROP_ARROWCODE,242);
               ObjectSet(SELLSIGNAL,OBJPROP_COLOR,clrRed);
               ObjectSetInteger(0,SELLSIGNAL,OBJPROP_ANCHOR,ANCHOR_TOP);
              }*/
           }
         else {
                  //--- delete the sign from the chart
                    ArrowUpDelete(0,InpNameDOWN);
                     ChartRedraw();
                  }
         
         
          if(close[4]<open[4] && close[3]<open[3] && close[2]<open[2] && close[1]>open[2])
           {
            string BUYSIGNAL=InpNameUP+(string)time[1];
            ArrowUpCreate(0,BUYSIGNAL,0,time[1],low[1],InpAnchorUP,InpColorUP,InpStyle,
                          InpWidth,InpBack,InpSelection,InpHidden);
/*if(ObjectFind(0,BUYSIGNAL)!=0)
                 {
                  ObjectCreate(BUYSIGNAL,OBJ_ARROW_UP,0,time[1],high[1]);
                  ObjectSet(BUYSIGNAL,OBJPROP_COLOR,clrBlue);
                  //ObjectSet(SELLSIGNAL,OBJPROP_ARROWCODE,241);
                  ObjectSet(BUYSIGNAL,OBJPROP_WIDTH,10);
                  ObjectSetInteger(0,BUYSIGNAL,OBJPROP_ANCHOR,ANCHOR_BOTTOM);
                 }*/
           }
           else {
                  //--- delete the sign from the chart
                    ArrowUpDelete(0,InpNameUP);
                     ChartRedraw();
                  }a
        }
     }
   prev=time[0];
//----
   return(rates_total);
  }
//+------------------------------------------------------------------+ 
//| Create Array Up sign                                             | 
//+------------------------------------------------------------------+ 
bool ArrowUpCreate(const long              chart_ID=0,           // chart's ID 
                   const string            name="ArrowUp",       // sign name 
                   const int               sub_window=0,         // subwindow index 
                   datetime                time=0,               // anchor point time 
                   double                  price=0,              // anchor point price 
                   const ENUM_ARROW_ANCHOR anchor=ANCHOR_BOTTOM, // anchor type 
                   const color             clr=clrRed,           // sign color 
                   const ENUM_LINE_STYLE   style=STYLE_SOLID,    // border line style 
                   const int               width=3,              // sign size 
                   const bool              back=false,           // in the background 
                   const bool              selection=true,       // highlight to move 
                   const bool              hidden=true,          // hidden in the object list 
                   const long              z_order=0)            // priority for mouse click 
  {
//--- reset the error value 
   ResetLastError();
//--- create the sign 
   if(!ObjectCreate(chart_ID,name,OBJ_ARROW_UP,sub_window,time,price))
     {
      Print(__FUNCTION__,
            ": failed to create \"Arrow Up\" sign! Error code = ",GetLastError());
      return(false);
     }
//--- set anchor type 
   ObjectSetInteger(chart_ID,name,OBJPROP_ANCHOR,anchor);
//--- set a sign color 
   ObjectSetInteger(chart_ID,name,OBJPROP_COLOR,clr);
//--- set the border line style 
   ObjectSetInteger(chart_ID,name,OBJPROP_STYLE,style);
//--- set the sign size 
   ObjectSetInteger(chart_ID,name,OBJPROP_WIDTH,width);
//--- display in the foreground (false) or background (true) 
   ObjectSetInteger(chart_ID,name,OBJPROP_BACK,back);
//--- enable (true) or disable (false) the mode of moving the sign by mouse 
//--- when creating a graphical object using ObjectCreate function, the object cannot be 
//--- highlighted and moved by default. Inside this method, selection parameter 
//--- is true by default making it possible to highlight and move the object 
   ObjectSetInteger(chart_ID,name,OBJPROP_SELECTABLE,selection);
   ObjectSetInteger(chart_ID,name,OBJPROP_SELECTED,selection);
//--- hide (true) or display (false) graphical object name in the object list 
   ObjectSetInteger(chart_ID,name,OBJPROP_HIDDEN,hidden);
//--- set the priority for receiving the event of a mouse click in the chart 
   ObjectSetInteger(chart_ID,name,OBJPROP_ZORDER,z_order);
//--- successful execution 
   return(true);
  }
//+------------------------------------------------------------------+ 
//| Create Array Down sign                                           | 
//+------------------------------------------------------------------+ 
bool ArrowDownCreate(const long              chart_ID=0,           // chart's ID 
                     const string            name="ArrowDown",     // sign name 
                     const int               sub_window=0,         // subwindow index 
                     datetime                time=0,               // anchor point time 
                     double                  price=0,              // anchor point price 
                     const ENUM_ARROW_ANCHOR anchor=ANCHOR_BOTTOM, // anchor type 
                     const color             clr=clrRed,           // sign color 
                     const ENUM_LINE_STYLE   style=STYLE_SOLID,    // border line style 
                     const int               width=3,              // sign size 
                     const bool              back=false,           // in the background 
                     const bool              selection=true,       // highlight to move 
                     const bool              hidden=true,          // hidden in the object list 
                     const long              z_order=0)            // priority for mouse click 
  {
//--- reset the error value 
   ResetLastError();
//--- create the sign 
   if(!ObjectCreate(chart_ID,name,OBJ_ARROW_DOWN,sub_window,time,price))
     {
      Print(__FUNCTION__,
            ": failed to create \"Arrow Down\" sign! Error code = ",GetLastError());
      return(false);
     }
//--- anchor type 
   ObjectSetInteger(chart_ID,name,OBJPROP_ANCHOR,anchor);
//--- set a sign color 
   ObjectSetInteger(chart_ID,name,OBJPROP_COLOR,clr);
//--- set the border line style 
   ObjectSetInteger(chart_ID,name,OBJPROP_STYLE,style);
//--- set the sign size 
   ObjectSetInteger(chart_ID,name,OBJPROP_WIDTH,width);
//--- display in the foreground (false) or background (true) 
   ObjectSetInteger(chart_ID,name,OBJPROP_BACK,back);
//--- enable (true) or disable (false) the mode of moving the sign by mouse 
//--- when creating a graphical object using ObjectCreate function, the object cannot be 
//--- highlighted and moved by default. Inside this method, selection parameter 
//--- is true by default making it possible to highlight and move the object 
   ObjectSetInteger(chart_ID,name,OBJPROP_SELECTABLE,selection);
   ObjectSetInteger(chart_ID,name,OBJPROP_SELECTED,selection);
//--- hide (true) or display (false) graphical object name in the object list 
   ObjectSetInteger(chart_ID,name,OBJPROP_HIDDEN,hidden);
//--- set the priority for receiving the event of a mouse click in the chart 
   ObjectSetInteger(chart_ID,name,OBJPROP_ZORDER,z_order);
//--- successful execution 
   return(true);
  }
//+------------------------------------------------------------------+
//| Delete Arrow Up sign                                             |
//+------------------------------------------------------------------+
bool ArrowUpDelete(const long   chart_ID=0,     // chart's ID
                   const string name="ArrowUp") // sign name
  {
//--- reset the error value
   ResetLastError();
//--- delete the sign
   if(!ObjectDelete(chart_ID,name))
     {
      Print(__FUNCTION__,
            ": failed to delete \"Arrow Up\" sign! Error code = ",GetLastError());
      return(false);
     }
//--- successful execution
   return(true);
  }
 //+------------------------------------------------------------------+
//| Delete Arrow Down sign                                           |
//+------------------------------------------------------------------+
bool ArrowDownDelete(const long   chart_ID=0,       // chart's ID
                     const string name="ArrowDown") // sign name
  {
//--- reset the error value
   ResetLastError();
//--- delete the sign
   if(!ObjectDelete(chart_ID,name))
     {
      Print(__FUNCTION__,
            ": failed to delete \"Arrow Down\" sign! Error code = ",GetLastError());
      return(false);
     }
//--- successful execution
   return(true);
  }
//+------------------------------------------------------------------+
 
Sólo tenemos que escribir lafunción OnDeinit(). En la función OnDeinit() se mantendrá el programa de limpieza. Tarea: escribir código para eliminar objetos por prefijo.
Archivos adjuntos:
Test.mq4  10 kb
 

Migrar a las nuevas tecnologías: utilizar proyectos en MQL5 Storage(Proyectos - MetaEditor). He creado un Proyecto para usted:

Proyecto para younghadiz

 

Hecho señor, pero no es función todavía.





//+------------------------------------------------------------------+
//|                                                        TEST3.mq4 |
//|                        Copyright 2015, MetaQuotes Software Corp. |
//|                                             https://www.mql5.com |
//+------------------------------------------------------------------+
#property copyright "Copyright 2015, MetaQuotes Software Corp."
#property link      "https://www.mql5.com"
#property version   "1.00"
#property strict
#property indicator_chart_window
//--- input parameter
sinput bool Alerts=TRUE;
//--- input parameters of the script 
input string            InpNameUP="ArrowUp";          // Sign name UP
input string            InpNameDOWN="ArrowDown";      // Sign name DOWN
input ENUM_ARROW_ANCHOR InpAnchorUP=ANCHOR_TOP;       // Anchor type 
input ENUM_ARROW_ANCHOR InpAnchorDOWN=ANCHOR_BOTTOM;  // Anchor type 
input color             InpColorUP=clrGreen;          // Sign color UP
input color             InpColorDOWN=clrRed;          // Sign color DOWN
input ENUM_LINE_STYLE   InpStyle=STYLE_DOT;           // Border line style 
input int               InpWidth=5;                   // Sign size 
input bool              InpBack=false;                // Background sign 
input bool              InpSelection=false;           // Highlight to move 
input bool              InpHidden=true;               // Hidden in the object list 
input long              InpZOrder=0;                  // Priority for mouse click 
//+------------------------------------------------------------------+
//| Custom indicator initialization function                         |
//+------------------------------------------------------------------+
int OnInit(void)
  {
   return(INIT_SUCCEEDED);
  }
//+------------------------------------------------------------------+
//| Indicator                                                        |
//+------------------------------------------------------------------+
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[])
  {
   static datetime prev;
   if(time[0]>prev) // new bar
     {
      //----
      if(Alerts)
        {
         if(close[4]>open[4] && close[3]>open[3] && close[2]>open[2] && close[1]<open[2])
           {
            string SELLSIGNAL=InpNameDOWN+(string)time[1];
            ArrowDownCreate(0,SELLSIGNAL,0,time[1],high[1],InpAnchorDOWN,InpColorDOWN,InpStyle,
                            InpWidth,InpBack,InpSelection,InpHidden);
           }
         else if(close[4]<open[4] && close[3]<open[3] && close[2]<open[2] && close[1]>open[2])
           {
            string BUYSIGNAL=InpNameUP+(string)time[1];
            ArrowUpCreate(0,BUYSIGNAL,0,time[1],low[1],InpAnchorUP,InpColorUP,InpStyle,
                          InpWidth,InpBack,InpSelection,InpHidden);
           }
        }
     }
   prev=time[0];
//----
   return(rates_total);
  }
//+------------------------------------------------------------------+ 
//| Create Array Up sign                                             | 
//+------------------------------------------------------------------+ 
bool ArrowUpCreate(const long              chart_ID=0,           // chart's ID 
                   const string            name="ArrowUp",       // sign name 
                   const int               sub_window=0,         // subwindow index 
                   datetime                time=0,               // anchor point time 
                   double                  price=0,              // anchor point price 
                   const ENUM_ARROW_ANCHOR anchor=ANCHOR_BOTTOM, // anchor type 
                   const color             clr=clrRed,           // sign color 
                   const ENUM_LINE_STYLE   style=STYLE_SOLID,    // border line style 
                   const int               width=3,              // sign size 
                   const bool              back=false,           // in the background 
                   const bool              selection=true,       // highlight to move 
                   const bool              hidden=true,          // hidden in the object list 
                   const long              z_order=0)            // priority for mouse click 
  {
//--- reset the error value 
   ResetLastError();
//--- create the sign 
   if(!ObjectCreate(chart_ID,name,OBJ_ARROW_UP,sub_window,time,price))
     {
      Print(__FUNCTION__,
            ": failed to create \"Arrow Up\" sign! Error code = ",GetLastError());
      return(false);
     }
//--- set anchor type 
   ObjectSetInteger(chart_ID,name,OBJPROP_ANCHOR,anchor);
//--- set a sign color 
   ObjectSetInteger(chart_ID,name,OBJPROP_COLOR,clr);
//--- set the border line style 
   ObjectSetInteger(chart_ID,name,OBJPROP_STYLE,style);
//--- set the sign size 
   ObjectSetInteger(chart_ID,name,OBJPROP_WIDTH,width);
//--- display in the foreground (false) or background (true) 
   ObjectSetInteger(chart_ID,name,OBJPROP_BACK,back);
//--- enable (true) or disable (false) the mode of moving the sign by mouse 
//--- when creating a graphical object using ObjectCreate function, the object cannot be 
//--- highlighted and moved by default. Inside this method, selection parameter 
//--- is true by default making it possible to highlight and move the object 
   ObjectSetInteger(chart_ID,name,OBJPROP_SELECTABLE,selection);
   ObjectSetInteger(chart_ID,name,OBJPROP_SELECTED,selection);
//--- hide (true) or display (false) graphical object name in the object list 
   ObjectSetInteger(chart_ID,name,OBJPROP_HIDDEN,hidden);
//--- set the priority for receiving the event of a mouse click in the chart 
   ObjectSetInteger(chart_ID,name,OBJPROP_ZORDER,z_order);
//--- successful execution 
   return(true);
  }
//+------------------------------------------------------------------+ 
//| Create Array Down sign                                           | 
//+------------------------------------------------------------------+ 
bool ArrowDownCreate(const long              chart_ID=0,           // chart's ID 
                     const string            name="ArrowDown",     // sign name 
                     const int               sub_window=0,         // subwindow index 
                     datetime                time=0,               // anchor point time 
                     double                  price=0,              // anchor point price 
                     const ENUM_ARROW_ANCHOR anchor=ANCHOR_BOTTOM, // anchor type 
                     const color             clr=clrRed,           // sign color 
                     const ENUM_LINE_STYLE   style=STYLE_SOLID,    // border line style 
                     const int               width=3,              // sign size 
                     const bool              back=false,           // in the background 
                     const bool              selection=true,       // highlight to move 
                     const bool              hidden=true,          // hidden in the object list 
                     const long              z_order=0)            // priority for mouse click 
  {
//--- reset the error value 
   ResetLastError();
//--- create the sign 
   if(!ObjectCreate(chart_ID,name,OBJ_ARROW_DOWN,sub_window,time,price))
     {
      Print(__FUNCTION__,
            ": failed to create \"Arrow Down\" sign! Error code = ",GetLastError());
      return(false);
     }
//--- anchor type 
   ObjectSetInteger(chart_ID,name,OBJPROP_ANCHOR,anchor);
//--- set a sign color 
   ObjectSetInteger(chart_ID,name,OBJPROP_COLOR,clr);
//--- set the border line style 
   ObjectSetInteger(chart_ID,name,OBJPROP_STYLE,style);
//--- set the sign size 
   ObjectSetInteger(chart_ID,name,OBJPROP_WIDTH,width);
//--- display in the foreground (false) or background (true) 
   ObjectSetInteger(chart_ID,name,OBJPROP_BACK,back);
//--- enable (true) or disable (false) the mode of moving the sign by mouse 
//--- when creating a graphical object using ObjectCreate function, the object cannot be 
//--- highlighted and moved by default. Inside this method, selection parameter 
//--- is true by default making it possible to highlight and move the object 
   ObjectSetInteger(chart_ID,name,OBJPROP_SELECTABLE,selection);
   ObjectSetInteger(chart_ID,name,OBJPROP_SELECTED,selection);
//--- hide (true) or display (false) graphical object name in the object list 
   ObjectSetInteger(chart_ID,name,OBJPROP_HIDDEN,hidden);
//--- set the priority for receiving the event of a mouse click in the chart 
   ObjectSetInteger(chart_ID,name,OBJPROP_ZORDER,z_order);
//--- successful execution 
   return(true);
  }
//+------------------------------------------------------------------+
//| Delete All Arrows                                                |
//+------------------------------------------------------------------+
bool ArrowDeleteAll(const long   chart_ID=0,// chart's ID
                    const  ENUM_OBJECT type=OBJ_ARROW_DOWN) // type of objects
  {
//--- reset the error value
   ResetLastError();
//--- delete the sign
   if(!ObjectsDeleteAll(chart_ID,-1,type))
     {
      Print(__FUNCTION__,
            ": failed to delete all ",EnumToString(type),"! Error code = ",GetLastError());
      return(false);
     }
//--- successful execution
   return(true);
  }
  
  
//--------------------------------------------------------------------
//Function: DeleteObjectsByPrefix
//Purpose:  Deletes objects with prefix of passed string
//Inputs:   Prefix (string)
//Returns:  (void)
//--------------------------------------------------------------------
  
 void ObjectsDeletePrefixed(string sPrefix) {
  for(int i=ObjectsTotal()-1; i>=0; i--) {
    if(StringFind(ObjectName(i),sPrefix)==0) ObjectDelete(ObjectName(i));
  }
}
//+------------------------------------------------------------------+
//| Custom indicator deinitialization function                       |
//+------------------------------------------------------------------+
void OnDeinit(const int reason)
  {
   ArrowDeleteAll(0,OBJ_ARROW_DOWN);
   ArrowDeleteAll(0,OBJ_ARROW_UP);
  }
  
//+------------------------------------------------------------------+
 
Sr. Karputov Vladimir, por favor, responda a mi mensaje
 
younghadiz:
Señor Karputov Vladimir, por favor, responda a mi mensaje

Ayuda:ObjectsDeleteAll.

 

Comprueba la carpeta "Proyectos" en el MetaEditor.

P.S. Para la optimización es necesario limitar el número de barras para dibujar las flechas.

Pero no será hoy.

Adjuntar archivo de la versión "1.04".

Archivos adjuntos:
Test.mq4  11 kb
 
Señor, el código del prefijo está ahí pero no funciona.


//+------------------------------------------------------------------+
//|                                                         Test.mq4 |
//|                        Copyright 2015, MetaQuotes Software Corp. |
//|                                             https://www.mql5.com |
//+------------------------------------------------------------------+
#property copyright "Copyright 2015, MetaQuotes Software Corp."
#property link      "https://www.mql5.com"
#property version   "1.00"
#property strict
#property indicator_chart_window
//--- input parameter
sinput bool Alerts=TRUE;
//--- input parameters of the script 
input string            InpNameUP="ArrowUp";          // Sign name UP
input string            InpNameDOWN="ArrowDown";      // Sign name DOWN
input ENUM_ARROW_ANCHOR InpAnchorUP=ANCHOR_TOP;       // Anchor type 
input ENUM_ARROW_ANCHOR InpAnchorDOWN=ANCHOR_BOTTOM;  // Anchor type 
input color             InpColorUP=clrGreen;          // Sign color UP
input color             InpColorDOWN=clrRed;          // Sign color DOWN
input ENUM_LINE_STYLE   InpStyle=STYLE_DOT;           // Border line style 
input int               InpWidth=5;                   // Sign size 
input bool              InpBack=false;                // Background sign 
input bool              InpSelection=false;           // Highlight to move 
input bool              InpHidden=true;               // Hidden in the object list 
input long              InpZOrder=0;                  // Priority for mouse click 
//+------------------------------------------------------------------+
//| Custom indicator initialization function                         |
//+------------------------------------------------------------------+
int OnInit(void)
  {
   return(INIT_SUCCEEDED);
  }
//+------------------------------------------------------------------+
//| Indicator                                                        |
//+------------------------------------------------------------------+
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[])
  {
   static datetime prev;
   if(time[0]>prev) // new bar
     {
      //----
      if(Alerts)
        {
         if(close[4]>open[4] && close[3]>open[3] && close[2]>open[2] && close[1]<open[2])
           {
            string SELLSIGNAL=InpNameDOWN+(string)time[1];
            ArrowDownCreate(0,SELLSIGNAL,0,time[1],high[1],InpAnchorDOWN,InpColorDOWN,InpStyle,
                            InpWidth,InpBack,InpSelection,InpHidden);
           }
         else
            { ObjectsDeleteAll(0,OBJ_ARROW_DOWN);
            
                     }
         
         
          if(close[4]<open[4] && close[3]<open[3] && close[2]<open[2] && close[1]>open[2])
           {
            string BUYSIGNAL=InpNameUP+(string)time[1];
            ArrowUpCreate(0,BUYSIGNAL,0,time[1],low[1],InpAnchorUP,InpColorUP,InpStyle,
                          InpWidth,InpBack,InpSelection,InpHidden);
           }
         else
            { ObjectsDeleteAll(0,OBJ_ARROW_UP);
            
                     }
        }
     }
   prev=time[0];
//----
   return(rates_total);
  }
//+------------------------------------------------------------------+ 
//| Create Array Up sign                                             | 
//+------------------------------------------------------------------+ 
bool ArrowUpCreate(const long              chart_ID=0,           // chart's ID 
                   const string            name="ArrowUp",       // sign name 
                   const int               sub_window=0,         // subwindow index 
                   datetime                time=0,               // anchor point time 
                   double                  price=0,              // anchor point price 
                   const ENUM_ARROW_ANCHOR anchor=ANCHOR_BOTTOM, // anchor type 
                   const color             clr=clrRed,           // sign color 
                   const ENUM_LINE_STYLE   style=STYLE_SOLID,    // border line style 
                   const int               width=3,              // sign size 
                   const bool              back=false,           // in the background 
                   const bool              selection=true,       // highlight to move 
                   const bool              hidden=true,          // hidden in the object list 
                   const long              z_order=0)            // priority for mouse click 
  {
//--- reset the error value 
   ResetLastError();
//--- create the sign 
   if(!ObjectCreate(chart_ID,name,OBJ_ARROW_UP,sub_window,time,price))
     {
      Print(__FUNCTION__,
            ": failed to create \"Arrow Up\" sign! Error code = ",GetLastError());
      return(false);
     }
//--- set anchor type 
   ObjectSetInteger(chart_ID,name,OBJPROP_ANCHOR,anchor);
//--- set a sign color 
   ObjectSetInteger(chart_ID,name,OBJPROP_COLOR,clr);
//--- set the border line style 
   ObjectSetInteger(chart_ID,name,OBJPROP_STYLE,style);
//--- set the sign size 
   ObjectSetInteger(chart_ID,name,OBJPROP_WIDTH,width);
//--- display in the foreground (false) or background (true) 
   ObjectSetInteger(chart_ID,name,OBJPROP_BACK,back);
//--- enable (true) or disable (false) the mode of moving the sign by mouse 
//--- when creating a graphical object using ObjectCreate function, the object cannot be 
//--- highlighted and moved by default. Inside this method, selection parameter 
//--- is true by default making it possible to highlight and move the object 
   ObjectSetInteger(chart_ID,name,OBJPROP_SELECTABLE,selection);
   ObjectSetInteger(chart_ID,name,OBJPROP_SELECTED,selection);
//--- hide (true) or display (false) graphical object name in the object list 
   ObjectSetInteger(chart_ID,name,OBJPROP_HIDDEN,hidden);
//--- set the priority for receiving the event of a mouse click in the chart 
   ObjectSetInteger(chart_ID,name,OBJPROP_ZORDER,z_order);
//--- successful execution 
   return(true);
  }
//+------------------------------------------------------------------+ 
//| Create Array Down sign                                           | 
//+------------------------------------------------------------------+ 
bool ArrowDownCreate(const long              chart_ID=0,           // chart's ID 
                     const string            name="ArrowDown",     // sign name 
                     const int               sub_window=0,         // subwindow index 
                     datetime                time=0,               // anchor point time 
                     double                  price=0,              // anchor point price 
                     const ENUM_ARROW_ANCHOR anchor=ANCHOR_BOTTOM, // anchor type 
                     const color             clr=clrRed,           // sign color 
                     const ENUM_LINE_STYLE   style=STYLE_SOLID,    // border line style 
                     const int               width=3,              // sign size 
                     const bool              back=false,           // in the background 
                     const bool              selection=true,       // highlight to move 
                     const bool              hidden=true,          // hidden in the object list 
                     const long              z_order=0)            // priority for mouse click 
  {
//--- reset the error value 
   ResetLastError();
//--- create the sign 
   if(!ObjectCreate(chart_ID,name,OBJ_ARROW_DOWN,sub_window,time,price))
     {
      Print(__FUNCTION__,
            ": failed to create \"Arrow Down\" sign! Error code = ",GetLastError());
      return(false);
     }
//--- anchor type 
   ObjectSetInteger(chart_ID,name,OBJPROP_ANCHOR,anchor);
//--- set a sign color 
   ObjectSetInteger(chart_ID,name,OBJPROP_COLOR,clr);
//--- set the border line style 
   ObjectSetInteger(chart_ID,name,OBJPROP_STYLE,style);
//--- set the sign size 
   ObjectSetInteger(chart_ID,name,OBJPROP_WIDTH,width);
//--- display in the foreground (false) or background (true) 
   ObjectSetInteger(chart_ID,name,OBJPROP_BACK,back);
//--- enable (true) or disable (false) the mode of moving the sign by mouse 
//--- when creating a graphical object using ObjectCreate function, the object cannot be 
//--- highlighted and moved by default. Inside this method, selection parameter 
//--- is true by default making it possible to highlight and move the object 
   ObjectSetInteger(chart_ID,name,OBJPROP_SELECTABLE,selection);
   ObjectSetInteger(chart_ID,name,OBJPROP_SELECTED,selection);
//--- hide (true) or display (false) graphical object name in the object list 
   ObjectSetInteger(chart_ID,name,OBJPROP_HIDDEN,hidden);
//--- set the priority for receiving the event of a mouse click in the chart 
   ObjectSetInteger(chart_ID,name,OBJPROP_ZORDER,z_order);
//--- successful execution 
   return(true);
  }
//+------------------------------------------------------------------+
//| Delete All Arrows                                                |
//+------------------------------------------------------------------+
bool ArrowDeleteAll(const long   chart_ID=0,// chart's ID
                    const  ENUM_OBJECT type=OBJ_ARROW_DOWN) // type of objects
  {
//--- reset the error value
   ResetLastError();
//--- delete the sign
   if(!ObjectsDeleteAll(chart_ID,-1,type))
     {
      Print(__FUNCTION__,
            ": failed to delete all ",EnumToString(type),"! Error code = ",GetLastError());
      return(false);
     }
//--- successful execution
   return(true);
  }
//+------------------------------------------------------------------+
//| Custom indicator deinitialization function                       |
//+------------------------------------------------------------------+
void OnDeinit(const int reason)
  {
   ArrowDeleteAll(0,OBJ_ARROW_DOWN);
   ArrowDeleteAll(0,OBJ_ARROW_UP);
  }
  
  
 int  ObjectsDeleteAll(
   long           chart_id,   // chart ID
   const string     prefix,   // prefix in object name
   int       sub_window=-1,   // window index
   int      object_type=-1    // object type
   );
//+------------------------------------------------------------------+
 

Foro sobre el comercio, los sistemas de comercio automatizado y la prueba de las estrategias de negociación

por favor ayudenme a poner flecha de compra y venta en este código.

Karputov Vladimir, 2015.11.09 13:36

Compruebe la carpeta "Proyectos" en MetaEditor.

P.D. Para la optimización es necesario limitar el número de barras para dibujar las flechas.

Pero no será hoy.

Adjuntar archivo de la versión "1.04".