Cualquier pregunta de los recién llegados sobre MQL4 y MQL5, ayuda y discusión sobre algoritmos y códigos - página 1444

 

Podrías hacer esto: la parte inmutable del nombre delante, luego "RED-LINE", luego la parte modificable del nombre.

Ahora el prefijo sería: la parte inmutable del nombre más "RED-LINE".

 
Aleksei Stepanenko:

Podrías hacer esto: la parte inmutable del nombre delante, luego "RED-LINE", luego la parte modificable del nombre.

Ahora el prefijo sería: la parte inmutable del nombre más "RED-LINE".

Allí, lo que está delante también es cambiable. hasta ahora la cuestión es exactamente lo que estáen el medio del nombre.

 
Andrey Sokolov:

Lo que está en el frente también cambia. La cuestión es exactamente lo que está en elmedio del título.

No puedes burlarte de alguien que intenta ayudarte...

¿Dónde se crean los objetos? ¿Cómo se forma el nombre del objeto?

 
Alexey Viktorov:

No puedes burlarte de alguien que intenta ayudarte...

OK

 

Pregunta sobreiMAOnArray()

Hay un código, ¿cómo aplicarlo en mql5?

   double buff[1];
   for(i = 0; i < counter; i++)
      Array[i] = 2.0 * ma(i, val) - ma(i, a);
   for(i = 0; i < counter - a; i++)
     // buf_3[i] = iMAOnArray(Array, 0, period, 0, MODE_SMMA, i); // Оригинал mql4
      buf_3[i] = iMA(NULL, 0, period, 0, MODE_SMMA, PRICE_LOW); ???
      CopyBuffer(10,0,i,1,buff); ???
      buf_3[i] = buff[0];
 

Hola.

Me podéis decir cómo hacer una "ventana" en el EA donde se pueda introducir un determinado precio para que el EA pueda trabajar con él después. (Ver imagen)

Archivos adjuntos:
GBPUSDM5.png  35 kb
 
SanAlex:

Aquí hay una manera -- encontrada aquíhttps://www.mql5.com/en/articles/81

Lo he leído, es demasiado pesado y no está optimizado

 
SanAlex:

Aquí hay una manera -- encontrada aquíhttps://www.mql5.com/en/articles/81

No es la mejor manera

 
Vitaly Muzichenko:

Pregunta sobreiMAOnArray()

Hay un código, ¿cómo aplicarlo en mql5?

   double buff[1];
   for(i = 0; i < counter; i++)
      Array[i] = 2.0 * ma(i, val) - ma(i, a);
   for(i = 0; i < counter - a; i++)
     // buf_3[i] = iMAOnArray(Array, 0, period, 0, MODE_SMMA, i); // Оригинал mql4
      buf_3[i] = iMA(NULL, 0, period, 0, MODE_SMMA, PRICE_LOW); ???
      CopyBuffer(10,0,i,1,buff); ???
      buf_3[i] = buff[0];

Array[] debe ser un buffer (si es un indicador)

Ahora busca en el paquete estándar: \MQL5\Include\MovingAverages.mqh - hay un cálculo en el buffer tal-MAOnBuffer()

 
Artyom Trishkin:

Array[] debe ser un buffer (si es un indicador)

Ahora echa un vistazo al paquete estándar: \MQL5\Include\MovingAverages.mqh - hay un cálculo en el buffer tal-MAOnBuffer()

Gracias.

Lo he intentado y me da error, algo estoy haciendo mal:

  double buff[];
   for(i = 0; i < counter; i++)
      Array_1[i] = 2.0 * ma_1(i, val_1) - ma_1(i, a);
   for(i = 0; i < counter - a; i++) {
      // buf_3[i] = iMAOnArray(Array_1, 0, period, 0, MODE_SMMA, i);
      SmoothedMAOnBuffer(rates_total, prev_calculated, i, period, Array_1, buff);
      buf_3[i] = buff[0];
   }
....

//+------------------------------------------------------------------+
int SmoothedMAOnBuffer(const int rates_total,const int prev_calculated,const int begin,const int period,const double& price[],double& buffer[])
{
//--- check period
   if(period<=1 || period>(rates_total-begin))
      return(0);
//--- save as_series flags
   bool as_series_price=ArrayGetAsSeries(price);
   bool as_series_buffer=ArrayGetAsSeries(buffer);
   ArraySetAsSeries(price,false);
   ArraySetAsSeries(buffer,false);
//--- calculate start position
   int start_position;
   if(prev_calculated==0) { // first calculation or number of bars was changed
      //--- set empty value for first bars
      start_position=period+begin;
      for(int i=0; i<start_position-1; i++)
         buffer[i]=0.0; // array out of range (188,16)
      //--- calculate first visible value
      double first_value=0;
      for(int i=begin; i<start_position; i++)
         first_value+=price[i];
      buffer[start_position-1]=first_value/period;
   } else
      start_position=prev_calculated-1;
//--- main loop
   for(int i=start_position; i<rates_total; i++)
      buffer[i]=(buffer[i-1]*(period-1)+price[i])/period;
//--- restore as_series flags
   ArraySetAsSeries(price,as_series_price);
   ArraySetAsSeries(buffer,as_series_buffer);
//---
   return(rates_total);
}
//+------------------------------------------------------------------+
Razón de la queja: