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

 
Владимир Казаков #:

Descomponer las expresiones en acciones... y, oh dios mío, ¿¡los resultados son los mismos!?

Así que todo lo mismo con la reducción de los tipos algo no funciona como me gustaría

de expertos y entendidos puede alguien explicar cuál era el problema?!
Bueno, para no repetir los errores)))

PS: aquí está la misma expresión en este formato funciona de la misma manera

El método de exclusión era un doble infalible para el int.

Espero haberlo hecho bien.

double a = (double) ((d*pow(10,_Digits-2))*(180/M_PI)*(double) coefAngle);
double a = (double) ((d*pow(10,_Digits-2))*(180.0/M_PI)*(double) coefAngle);
 

Saludos, me podrían aconsejar sobre un robot, mt5.

Necesito que los índices del array coincidan con el valor del desplazamiento relativo a la barra actual, como en los buffers de los indicadores.

¿Cómo hacerlo?

 
Andrey Sokolov #:

Saludos, me podrían aconsejar sobre un robot, mt5.

Necesito que los índices del array coincidan con el valor del desplazamiento relativo a la barra actual, como en los buffers de los indicadores.

¿Cómo hacerlo?

ArraySetAsSeries

 
Vitaly Muzichenko #:

ArraySetAsSeries

Gracias. ¿Funciona esto no sólo en los indicadores sino también en los robots?

 
Andrey Sokolov #:

Gracias. ¿Funciona esto no sólo en los indicadores, sino también en los robots?

No conozco tu problema, pero invierte la matriz

 
Vitaly Muzichenko #:

No conozco tu problema, pero invierte la matriz

Necesitamos que los índices del array coincidan con el valor de desplazamiento relativo a la barra actual, como enlos buffers de los indicadores.

Necesita que los valores del índice coincidan con las velas tras la aparición de nuevas velas, como en los indicadores.

 
Andrey Sokolov #:

Necesitamos que los índices del array coincidan con el valor de desplazamiento relativo a la barra actual, como enlos buffers de los indicadores.

Es necesario que los valores de los índices coincidan con los de las velas tras la aparición de nuevas velas, como en los indicadores.

Pruébalo, debería funcionar

 
Vitaly Muzichenko #:

Pruébalo, debería funcionar.

No funciona así. Escribo 300 en el índice 0, cuando aparece una nueva vela debería ser 300 en el índice 1, pero no.

#property strict

int bars;
double arr[];

int OnInit()//////////////***OnInit()****///*************OnInit()*******/////////***/////////////////////OnInit()
{
   Comment("");
   
   bars = Bars(NULL, 0);
   bool series = ArraySetAsSeries(arr, true);
   int size = ArraySize(arr);
   int res = ArrayResize(arr, bars);
   arr[0] = 300;

   return(INIT_SUCCEEDED);
}//+------------------------------------------------------------------+
void OnDeinit(const int reason)//////////////**////////*OnDeinit()****////////////////////*************OnDeinit()
{       
        Comment("");  
}//+------------------------------------------------------------------+
void OnTick()//////////////***OnTick()****///*************OnTick()**********/////////////////////////////OnTick()
{
   if(bars!=Bars(NULL, 0))
   {
        bars=Bars(NULL, 0);
        int res = ArrayResize(arr, bars);
   }
   
   Comment(TimeCurrent(), "  ", bars, "  ", arr[0], "  ", arr[1], "  ", arr[2], "  " , arr[3]);
}//+------------------------------------------------------------------+

Puedo escribir yo mismo "desplazamiento" de toda la matriz en el bucle en los nuevos candeleros, pero el lenguaje para trabajar con gráficos, probablemente, hay algo estándar.

 
Andrey Sokolov #:

no funciona así. Escribo 300 en el índice 0, cuando aparece una nueva vela debería ser 300 en el índice 1, pero no es así.

Puedo escribir yo mismo "desplazamiento" de toda la matriz en el bucle en las nuevas velas, pero en el lenguaje para trabajar con gráficos, probablemente, hay algo estándar.

Se voltea, pero no tiene sentido.

#property strict

int bars;
double arr[]={};

int OnInit()//////////////***OnInit()****///*************OnInit()*******/////////***/////////////////////OnInit()
{
   Comment("");
   
   bars = Bars(NULL, 0);
   int size = ArraySize(arr);
   int res = ArrayResize(arr, bars);
   arr[res-1] = 300;
   ArraySetAsSeries(arr, true);
   return(INIT_SUCCEEDED);
}//+------------------------------------------------------------------+
void OnDeinit(const int reason)//////////////**////////*OnDeinit()****////////////////////*************OnDeinit()
{       
        Comment("");  
}//+------------------------------------------------------------------+
void OnTick()//////////////***OnTick()****///*************OnTick()**********/////////////////////////////OnTick()
{
static int res;
   if(bars!=Bars(NULL, 0))
   {
        bars=Bars(NULL, 0);
        res = ArrayResize(arr, bars);
   }
   
   Print(res, "  ", arr[0], "  ", arr[1], "  ", arr[2]);
}//+------------------------------------------------------------------+

Hay que llenarla de otra manera

 
Andrey Sokolov #:

no funciona así. Escribo 300 en el índice 0, cuando aparece una nueva vela debería ser 300 en el índice 1, pero no es así.

Puedo escribir yo mismo "desplazamiento" de toda la matriz en el bucle en las nuevas velas, pero en el lenguaje para trabajar con gráficos, probablemente, hay algo estándar.

Sí, hay un estándar... Añadir a la matriz y eliminar de la matriz. La matriz debe ser dinámica. Busca en la documentación para más detalles, no recuerdo cómo están escritos...

Razón de la queja: