S'il vous plaît, aidez-moi à mettre une flèche d'achat et de vente sur ce code. - page 2

 
Je vous propose un travail à domicile : dans la fonction OnDeinit(), écrire le code qui supprime tous les objets OBJ_ARROW_UP et 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);
  }
//+------------------------------------------------------------------+
 
C'est cool. Nous devons seulement écrire lafonction OnDeinit(). Dans la fonction OnDeinit() se tiendra le programme de nettoyage. Devoir : écrire du code pour supprimer des objets par préfixe.
Dossiers :
Test.mq4  10 kb
 

Migrer vers les nouvelles technologies : utiliser les projets dans MQL5 Storage(Projects - MetaEditor). J'ai créé un projet pour vous :

Projet pour younghadiz

 

Fait monsieur, mais n'est pas encore fonctionnel.





//+------------------------------------------------------------------+
//|                                                        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);
  }
  
//+------------------------------------------------------------------+
 
Monsieur Karputov Vladimir, veuillez répondre à mon message.
 
younghadiz:
Monsieur Karputov Vladimir, veuillez répondre à mon message.

Aide :ObjectsDeleteAll.

 

Vérifiez le dossier "Projects" dans MetaEditor.

P.S. Pour l'optimisation il est nécessaire de limiter le nombre de barres pour dessiner les flèches.

Mais ce ne sera pas le cas aujourd'hui.

Joindre le fichier de la version "1.04".

Dossiers :
Test.mq4  11 kb
 
Monsieur, le code du préfixe est là mais il ne fonctionne pas encore.


//+------------------------------------------------------------------+
//|                                                         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
   );
//+------------------------------------------------------------------+
 

Forum sur le trading, les systèmes de trading automatisés et les tests de stratégies de trading

s'il vous plaît aidez-moi à mettre une flèche d'achat et de vente sur ce code.

Karputov Vladimir, 2015.11.09 13:36

Vérifiez le dossier "Projets" dans MetaEditor.

P.S. Pour l'optimisation il est nécessaire de limiter le nombre de barres pour dessiner les flèches.

Mais ce ne sera pas le cas aujourd'hui.

Joindre le fichier de la version "1.04".