Preguntas de los principiantes MQL5 MT5 MetaTrader 5 - página 608

 

new-rena:
Ок. В каком месте? В конце месяца? Я по календарику проверял...

//+------------------------------------------------------------------+
//|                                                  WeekOfMonth.mq4 |
//|                                                         new-rena |
//|                                                                  |
//+------------------------------------------------------------------+
#property copyright "new-rena"
#property link      ""
#property version   "1.00"
#property strict
//--------------------------
double DayOfMonth,WeekOfMonth;
int DayOfWeeks,MonthOfYear,PrevMonth,Delta=0,Show=0;
//+------------------------------------------------------------------+
//| Expert initialization function                                   |
//+------------------------------------------------------------------+
int init()
  {
//--- 
PrevMonth=TimeMonth(TimeLocal());
DayOfMonth=TimeDay(TimeLocal());
if(DayOfMonth==1)
   {
      Delta=TimeDayOfWeek(TimeLocal());
      Show=1;
   }
//--- init
   return(0);
  }
//+------------------------------------------------------------------+
//| Expert deinitialization function                                 |
//+------------------------------------------------------------------+
int deinit()
  {
//--- deinit
      return(0);   
  }
//+------------------------------------------------------------------+
//| Expert tick function                                             |
//+------------------------------------------------------------------+
int start()
  {
//---   
MonthOfYear=TimeMonth(TimeLocal());
DayOfMonth=TimeDay(TimeLocal());
DayOfWeeks=TimeDayOfWeek(TimeLocal());
if(PrevMonth!=MonthOfYear && DayOfMonth==1)
   {
      Delta=DayOfWeeks;
      Show=1;
   }
if(Show==1)
   {
      WeekOfMonth=MathCeil((DayOfMonth+Delta)/7);      
      Print("DayOfMonth N "+DoubleToStr(DayOfMonth,0));
      Print("WeekOfMonth N "+DoubleToStr(WeekOfMonth,0));
   }

PrevMonth=MonthOfYear;
//--- start
      return(0);   
  }
//+------------------------------------------------------------------+

no es divertido
 
pako:
no es divertido.

¿Pensaste en responder así durante 30 minutos?

Eso no es una respuesta. Sé más específico, Paco.

Sabes que no es nada divertido, pero la historia no dice nada al respecto...

 

Cualquier probador, debe incluir las incertidumbres.

No tengo que explicártelo. 2 o 3 puntos para realizar. 0,1-1 punto de comisión. Y así sucesivamente.

Pero, de nuevo, no tiene sentido que le explique que también hay otros parámetros.

Por ejemplo, supongamos que hemos dado con una tendencia. Por ejemplo, en el EURUSD. Para el periodo de enero de este año, por ejemplo, ¡otra vez! Entonces, ¿cuánto dinero hemos ganado hasta ahora? Es fácil de calcular. ¿Pero qué? Si invertimos exactamente la misma cantidad de dinero. ¿Obtendremos exactamente el mismo beneficio en un par de días? Eso es lo que un comerciante debe soñar!!! Ahora, vamos a ir al grano. ¿Estrategia? ¿Si es posible en código máquina? Debe hacer algo similar, o cercano a la estrategia de un comerciante experimentado.

En una palabra, ¡mirar su creación! ¿Qué puedes decir? No puedo decir nada. ¡Qué mal está! Todo está muy mal. Todo está muy lejos de la verdadera dirección. Sólo estoy viendo la televisión. Estoy descansando, ¡¡¡sólo estoy descansando!!!

Pero buena suerte.

 
new-rena:

¿Pensaste en responder así durante 30 minutos?

Eso no es una respuesta. Sé más específico, Paco.

Sabes que no es nada divertido, pero la historia no dice nada al respecto...

en el carro cuenta bien :)))
 
pako:
en el carro cuenta correctamente :)))

Todavía una idea aquí y le di (so....):

if(PrevMonth!=MonthOfYear && DayOfMonth==1)    {       Delta=DayOfWeeks;       Show=1;    }

WeekOfMonth=MathCeil((DayOfMonth+Delta)/7); 

 
new-rena:

También habría que poner cuando el día 1 del mes cae en fin de semana, ya que el probador no gira los fines de semana... No vi lo del excel.

Bueno, y para rodar en la inicialización de un par de meses atrás Y para el mes actual no estaría de más, a fin de no esperar a que el final del cálculo del número de la semana un mes entero. Pero todo esto son matices ....

Eso es lo que hace que MQL4 sea tan atractivo: ¡el código es corto y claro!

Ahora mismo no tengo tiempo, pero Kim tiene todas las funciones para buscar fechas y horas, está el principio del mes y el número de la semana, en general lo he visto todo, no recuerdo donde lo he visto, pero quizás aquí: https://forum.mql4.com/ru/38949
 
Dimitri hace tiempo que te ha escrito todo sobre el tiempo, días, semanas, meses, años... ¿Está reinventando la rueda?
 

Ah. Años, meses, días o semanas. Horas... ¿15 minutos? Ah. 5 minutos de trabajo y Ah. Ah, cuánto dinero. ¿O veinte? Y luego otra vez. Ah.

 
Karputov Vladimir:

Cuando se va a añadir un indicador a la ventana principal

int OnInit() 
  { 
   
//--- Создание кнопки 
  if( !ObjectCreate( 0, "Add_Indicator", OBJ_BUTTON, 0, 0, 0 ) )
  {
  
    Print( "Кнопка 'Добавить' не создана!" );
    return( INIT_FAILED );
  }
  else
  {
    ObjectSetInteger( 0, "Add_Indicator", OBJPROP_CORNER, CORNER_RIGHT_LOWER );
    ObjectSetInteger( 0, "Add_Indicator", OBJPROP_XDISTANCE, 200 );             
    ObjectSetInteger( 0, "Add_Indicator", OBJPROP_YDISTANCE, 500 );
    ObjectSetInteger( 0, "Add_Indicator", OBJPROP_XSIZE, 80 );
    ObjectSetInteger( 0, "Add_Indicator", OBJPROP_YSIZE, 20);

      ObjectSetInteger( 0, "Add_Indicator", OBJPROP_BGCOLOR, clrWhite );
      ObjectSetInteger( 0, "Add_Indicator", OBJPROP_STATE, true );
      ObjectSetString( 0, "Add_Indicator", OBJPROP_TEXT, "Добавить" );
     
  }
    
MA_handle=iCustom(NULL,0,"Examples\\Custom Moving Average",MA_Period,MA_Shift,MA_Method,PRICE_CLOSE);
   if(MA_handle==INVALID_HANDLE)
//--- попробуем добавить индикатор на график 
 Print(__FUNCTION__,", first_start = ",first_start);
//return(INIT_FAILED);
   return(INIT_SUCCEEDED);
  } 
//+------------------------------------------------------------------+
//| Обработка события нажатия кнопок                                 |
//+------------------------------------------------------------------+
void OnChartEvent(const int id,         // идентификатор события   
                  const long& lparam,   // параметр события типа long 
                  const double& dparam, // параметр события типа double 
                  const string& sparam  // параметр события типа string 
                  )                
  {
   long b_state;
   //---
   if(id==CHARTEVENT_OBJECT_CLICK) // НАЖАТ ГРАФИЧЕСКИЙ ОБЪЕКТ       
         if ( sparam == "Add_Indicator" )// Нажата кнопка
         {
      if ( ObjectGetInteger( 0, "Add_Indicator", OBJPROP_STATE, 0, b_state ) )
      {
        if ( b_state == 1 )
        {
          first_start=false;
          ObjectSetInteger( 0, "Add_Indicator", OBJPROP_BGCOLOR,clrWhite );
          ObjectSetString( 0, "Add_Indicator", OBJPROP_TEXT, "Добавить" );
        }
   }
}
 return;
}

También tomé el código del botón de los ejemplos, .... Cómo hacer que la pulsación de un botón no sea fija, es decir, que después de ejecutar su función vuelva a su estado inicial ...

 
new-rena:
¿Necesita un panel de control personalizado que le permita añadir cualquier número de indicadores de uno o varios?

No sé cómo hacerlo más sencillo, si es necesario o no...

Lo pensaré más tarde.

Razón de la queja: