Scripts: Monthly Weekly Levels

 

Monthly Weekly Levels:

El script representa en el gráfico los niveles mensuales y semanales.

Monthly Weekly Levels

Autor: Taras Slobodyanik

 
El script no compila. Dice - 'iLow' - llamada ambigua a función sobrecargada con los mismos parámetros mn1_w1_levels.mq5 113 19

 

La nueva MT5 soporta estas características por defecto, por lo que puede simplemente eliminarlos del código.

Recargado.

 
Gracias. ¡Ha funcionado!
 

Hola

por alguna razón el indicador no aparece en el navegador mt5 después de copiarlo en la carpeta de indicadores.

compilar tampoco ayuda.

¿alguna solución?

 
kehrman:

Hola

por alguna razón el indicador no aparece en el navegador mt5 después de copiarlo en la carpeta de indicadores.

compilar tampoco ayuda.

¿alguna solución?

Hola ,


He modificado este script y lo he probado. Me ha funcionado.

Archivos adjuntos:
 

Descargado el script.

Probablemente el autor no volvió a subir el código EA o alguna otra razón, pero el script del 27-03-2023 no funciona.
Después de la compilación, apareció un mensaje sobre 14 errores.

Leí los comentarios anteriores.
Comenté tres bloques de código, sobre los cuales el autor escribió que podían ser borrados.

Después de eso, apareció un error de sintaxis durante la compilación (una coma de más en la línea 220).
Quité la coma y compilé el código.
Todos los errores desaparecieron y el script funciona ahora en el gráfico.

El código corregido está más abajo:

//+------------------------------------------------------------------+
//|MN1_W1_Levels.mq4
//|© Tecciztecatl |
//+------------------------------------------------------------------+
#property copyright     "© Tecciztecatl 2016"
#property link          "113411@bk.ru"
#property version       "1.00"
#property description   "The script shows the highs and lows of weeks and months."
#property script_show_inputs
#property strict

input  int      days=200;                    //Número de días
extern string   comm0="";                    //- - -- ---- Semanas ---- -- - - - -
extern color    W1_Color=LimeGreen;          //W1 Color de las líneas
input  int      W1_Width=3;                  //W1 Ancho de línea
extern ENUM_LINE_STYLE W1_style=STYLE_SOLID; //W1 Estilo de las líneas 
extern string   comm1="";                    //- - -- ---- Meses ---- -- - - - -
extern color    MN1_Color=Orange;            //MN1 Color de las líneas
input  int      MN1_Width=3;                 //MN1 Ancho de línea
extern ENUM_LINE_STYLE MN1_style=STYLE_SOLID;//MN1 Estilo de las líneas 

enum  choice0 {Trend_Line=0,Horizontal_Line=1};
input choice0 object=Trend_Line;             //Tendencia o Línea horizontal

datetime    ArrDate[1];
double      ArrDouble[1];
MqlDateTime time;
//+------------------------------------------------------------------+
//| Función de inicio del programa de script|
//+------------------------------------------------------------------+
void OnStart()
  {
   DelObject();

   int weeks=(int)MathCeil(days/7)+1;
   if(weeks>Bars(_Symbol,PERIOD_W1)) weeks=Bars(_Symbol,PERIOD_W1)-1;
   if(weeks<0) {Alert("No historical data!"); return;}
   for(int i=weeks; i>=0; i--)
     {
      datetime w1=iTime(_Symbol,PERIOD_W1,i);
      TimeToStruct(w1,time);
      if(object==Trend_Line)
        {
         SetTrendLine("W1_High_"+(string)i+"_ln",
                      w1+86400,
                      iHigh(_Symbol,PERIOD_W1,i),
                      w1+7*86400,
                      W1_Color,
                      W1_Width,
                      W1_style,
                      0x0007ffff);
         SetTrendLine("W1_Low_"+(string)i+"_ln",
                      w1+86400,
                      iLow(_Symbol,PERIOD_W1,i),
                      w1+7*86400,
                      W1_Color,
                      W1_Width,
                      W1_style,
                      0x0007ffff);
        }
      else
        {
         SetHLine("W1_High_"+(string)i+"_ln",
                  iHigh(_Symbol,PERIOD_W1,i),
                  W1_Color,
                  W1_Width,
                  W1_style);
         SetHLine("W1_Low_"+(string)i+"_ln",
                  iLow(_Symbol,PERIOD_W1,i),
                  W1_Color,
                  W1_Width,
                  W1_style);
        }
     }

   TimeToStruct(TimeCurrent(),time);
   int month=(int)MathCeil((days-time.day)/30)+1;
   if(month>Bars(_Symbol,PERIOD_MN1)) month=Bars(_Symbol,PERIOD_MN1)-1;
   if(month<0) {Alert("No historical data!"); return;}
   for(int i=month; i>=0; i--)
     {

      datetime mn=iTime(_Symbol,PERIOD_MN1,i);
      TimeToStruct(mn,time);

      if(object==Trend_Line)
        {
         SetTrendLine("MN1_High_"+(string)i+"_ln",
                      mn,
                      iHigh(_Symbol,PERIOD_MN1,i),
                      mn+DayMonth(time.mon,mn)*86400,
                      MN1_Color,
                      MN1_Width,
                      MN1_style,
                      0x000fffff);
         SetTrendLine("MN1_Low_"+(string)i+"_ln",
                      mn,
                      iLow(_Symbol,PERIOD_MN1,i),
                      mn+DayMonth(time.mon,mn)*86400,
                      MN1_Color,
                      MN1_Width,
                      MN1_style,
                      0x000fffff);
        }
      else
        {
         SetHLine("MN1_High_"+(string)i+"_ln",
                  iHigh(_Symbol,PERIOD_MN1,i),
                  MN1_Color,
                  MN1_Width,
                  MN1_style);
         SetHLine("MN1_Low_"+(string)i+"_ln",
                  iLow(_Symbol,PERIOD_MN1,i),
                  MN1_Color,
                  MN1_Width,
                  MN1_style);
        }

     }

   ChartRedraw();
  }
//+------------------------------------------------------------------+
//||
//+------------------------------------------------------------------+
int DayMonth(int mon,datetime ttime)
  {
   int leap_year;
   TimeToStruct(ttime,time);
   switch(mon)
     {
      case  1:
      case  3:
      case  5:
      case  7:
      case  8:
      case 10:
      case 12:
         return(31);
      case  2:
         leap_year=time.year;
         if(time.year%100==0)
            leap_year/=100;
         return((leap_year%4==0)? 29 : 28);
      case  4:
      case  6:
      case  9:
      case 11:
         return(30);
     }
   return(0);
  }
//// Crear una línea
void SetTrendLine(
                  const string         name,
                  datetime             time1,
                  double               price1,
                  datetime             time2,
                  color                cvet,
                  int                  widthL,
                  ENUM_LINE_STYLE      styleL,
                  int                  hide_TF
                  )
  {
   if(ObjectFind(0,name)<0) ObjectCreate(0,name,OBJ_TREND,0,time1,price1,time2,price1);
   ObjectMove(0,name,0,time1,price1);
   ObjectMove(0,name,1,time2,price1);
   ObjectSetInteger(0,name,OBJPROP_COLOR,cvet);
   ObjectSetInteger(0,name,OBJPROP_STYLE,styleL);
   ObjectSetInteger(0,name,OBJPROP_WIDTH,widthL);
   ObjectSetInteger(0,name,OBJPROP_SELECTABLE,false);
   ObjectSetInteger(0,name,OBJPROP_SELECTED,false);
   ObjectSetInteger(0,name,OBJPROP_BACK,false);
   ObjectSetInteger(0,name,OBJPROP_ZORDER,1);
   ObjectSetInteger(0,name,OBJPROP_RAY_RIGHT,false);
   ObjectSetInteger(0,name,OBJPROP_HIDDEN,true);
   ObjectSetInteger(0,name,OBJPROP_TIMEFRAMES,hide_TF);
  }
//+------------------------------------------------------------------+
//||
//+------------------------------------------------------------------+
/*
datetime iTime(string symbol,ENUM_TIMEFRAMES timeframe,int index)
 {
 if(index<0) index=0;
 if(CopyTime(symbol,timeframe,index,1,ArrDate)>0) return(ArrDate[0]);
 else return(-1);
 }
 */
//+------------------------------------------------------------------+
//||
//+------------------------------------------------------------------+
/*
double iLow(string symbol,ENUM_TIMEFRAMES timeframe,int index)
 {
 if(index < 0) return(-1);
 if(CopyLow(symbol,timeframe,index,1,ArrDouble)>0) return(ArrDouble[0]);
 else return(-1);
 }
 */
//+------------------------------------------------------------------+
//||
//+------------------------------------------------------------------+
/*
double iHigh(string symbol,ENUM_TIMEFRAMES timeframe,int index)
 {
 if(index < 0) return(-1);
 if(CopyHigh(symbol,timeframe,index,1,ArrDouble)>0) return(ArrDouble[0]);
 else return(-1);
 }
 */
//+------------------------------------------------------------------+
//||
//+------------------------------------------------------------------+
void SetHLine(
              const string         name,
              double               price1,
              color                cvet,
              int                  widthL,
              ENUM_LINE_STYLE      styleL
              )
  {
   if(ObjectFind(0,name)<0) ObjectCreate(0,name,OBJ_HLINE,0,0,price1);
   ObjectSetDouble(0,name,OBJPROP_PRICE,price1);
   ObjectSetInteger(0,name,OBJPROP_COLOR,cvet);
   ObjectSetInteger(0,name,OBJPROP_STYLE,styleL);
   ObjectSetInteger(0,name,OBJPROP_WIDTH,widthL);
   ObjectSetInteger(0,name,OBJPROP_SELECTABLE,false);
   ObjectSetInteger(0,name,OBJPROP_SELECTED,false);
   ObjectSetInteger(0,name,OBJPROP_BACK,false);
   ObjectSetInteger(0,name,OBJPROP_ZORDER,1);
   ObjectSetInteger(0,name,OBJPROP_RAY_RIGHT,false);
   ObjectSetInteger(0,name,OBJPROP_HIDDEN,true);
  }
//+------------------------------------------------------------------+
//||
//+------------------------------------------------------------------+
void DelObject()
  {
   for(int i=ObjectsTotal(0,0,-1)-1;i>=0;i--)
     {
      string temp=ObjectName(0,i,0,-1);
      if(StringFind(temp,"_ln",0)>=0)
         ObjectDelete(0,temp);
     }
  }
//+------------------------------------------------------------------+
 
Alexandr #:

Descargado el guión.

Probablemente el autor no reupload el código EA o alguna otra razón, pero la secuencia de comandos en 27-03-2023 no funciona.
Después de la compilación, un mensaje sobre 14 errores apareció.

El archivo Zip no está actualizado, contiene la primera versión.
Todo lo demás compila sin errores (Preview y archivo .mq5).

 
Taras Slobodyanik #:

El archivo Zip no está actualizado, contiene la primera versión.
Todo lo demás compila sin errores (Vista previa y archivo .mq5).

No sabía que las actualizaciones están disponibles a través de la revisión de código.
Así que me sorprendió ver tantos errores después de la compilación.
Gracias por la aclaración.

 
Este script puede ser sólo una parte del sistema, 1, la condición if en el interior es siempre cierto, no hay más, 2, la definición de la matriz no se refleja más adelante. Personalmente, creo que, simplemente dibujar una línea mensual, línea semanal con el fin de lo que es, no se sentía ningún uso especial, pero la llamada a la función de script, la lógica del año bisiesto es todavía vale la pena aprender.