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

 
Alexey Viktorov: Deslizamiento al abrir y cerrar.

¡Alexey! MT5 se ha vuelto generalmente verboso hoy - duplica TP en el comentario:


 
STARIJ:

¡¡¡Gracias Alexey!!! También lo pensé, pero ¿cómo se comprueba? y ¿cómo se sabe qué es? y ¿por qué no hay cuentas reales? ¿Tal vez porque es viejo y la cuenta demo es nueva?

La diferencia entre el precio tp y el precio de cierre de la orden se divide por _Punto y se concilia con la entrada en el comentario de la orden. Así es exactamente como lo hemos descubierto. La coincidencia aleatoria no puede durar indefinidamente y de forma estable. Supongo que en la cuenta real no hay esos deslices. Aunque antes los tenía. Lo estaba calculando en la cuenta real. Al principio me di cuenta de que el cierre estaba en tp y el precio de cierre no estaba resaltado en verde.

 

Hola, ¿puede ayudarme, por favor?

Quiero, en todo momento, saber el número de la barra donde está la flecha del indicador.

En el ejemplo, se intenta llenar el buffer si la flecha está en la décima barra.

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[])
  {
//---
   if(rates_total<2) return(0);
   int limit=rates_total-prev_calculated;
   if(limit>1)
     {
      limit=rates_total-2;
      ArrayInitialize(BufferUP,EMPTY_VALUE);
      ArrayInitialize(BufferDN,EMPTY_VALUE);
     }
   for(int i=limit; i>=0; i--)
     {
      for(int il=i+1;il<=i+300;il++)
        {
         if(NormalizeDouble(iCustom(NULL,0,"Arrow v.3",0,il),Digits)!=EMPTY_VALUE
            )
           {
            num_buy=il;
            break;
           }
        }
      //
      if(num_buy==10)
        {
         BufferUP[i+1]=low[i+1]-distance*MyPoint;

        }

      for(int il=i+1;il<=i+300;il++)
        {
         if(NormalizeDouble(iCustom(NULL,0,"Arrow v.3",1,il),Digits)!=EMPTY_VALUE
            )
           {
            num_sell=il;
            break;
           }
        }
      if(num_sell==10)
        {
         BufferDN[i+1]=high[i+1]+distance*MyPoint;
         
         
        }

      Comment(num_buy,"num_sell",num_sell);
     }
//--- return value of prev_calculated for next call

   return(rates_total);
  }

¿En qué se equivoca?

 
mila.com: Hola, ¿puede ayudarme, por favor?
Quiero saber en todo momento el número de la barra donde está la flecha del indicador.
En el ejemplo, he intentado llenar el buffer si la flecha está en la décima barra.
¿En qué se equivoca?

Normalmente, cuando lo compruebo, lo ejecuto y veo el resultado. Esto es sólo una parte del código. Todo es muy pequeño aquí, es difícil de ver - en mi editor es más grande

if(NormalizeDouble(iCustom(NULL,0,"Arrow v.3",0,il),Digits)!=EMPTY_VALUE)
{
    num_buy=il;
    break;  // Это выход из цикла. Остальные бары лишаются чести быть просмотренными. Ошибка здесь?
}
 

Hola, podríais aconsejar cómo hacer que un indicador guarde los datos en un archivo

en lugar del indicador RSI Rango porcentual de Williams


//| función de inicio experto |

//+------------------------------------------------------------------+

int inicio()

{

//----

int iRSI;

iRSI=FileOpen("Archivo.txt", FILE_CSV|FILE_WRITE, '\t');

//------------------------------------------------//

//-------------------------------------------------//

if(iRSI>0)

{

FileWrite(iRSI, [0]);

FileClose(iRSI);

}

//----

return(0);

}

 
STARIJ:

Aquí todo es muy pequeño,

Hay una opción en el navegador para cambiar la escala )

STARIJ:
Ошибка здесь?


Desgraciadamente, este no es el único error.

El valor correcto se muestra en el comentario, de la barra actual, ahora num_buy 9

¿Por qué no hay ninguna condición en la historia?

if(num_buy==10)

Lo he comprobado, en el EA abre una posición cuando la flecha está en la barra 10

for(int il=1;il<=300;il++)
        { 
        if(NormalizeDouble(iCustom(NULL,0,"Arrow v.3",0,il),Digits)!=EMPTY_VALUE)
            
           {
            num_buy=il;
            break;
           }
        }
        if(num_buy==10)
           {
            B_OrderSend();
           }

¿Cómo puedo colocar un punto en el indicador cuando la flecha está en la barra 10?

 
mila.com:

En el navegador hay una opción para cambiar la escala )


Desgraciadamente, este no es el único error.

El comentario muestra el valor correcto, de la barra actual, ahora num_buy 9

¿Por qué no hay ninguna condición en la historia?

Lo he comprobado; en el EA abre una posición cuando la flecha está en la barra 10

¿Cómo puedo colocar un punto en el indicador cuando la flecha está en la barra 10?

Se interrumpe el bucle en cuanto se ve el primer valor del indicador que no está en blanco. Por eso no llega a 10.

 
Artyom Trishkin:

Por lo tanto, aquí se rompe el bucle en cuanto se encuentra el primer valor del indicador no vacío. Por eso no llega a diez.

He eliminado una pausa del indicador; como recomienda STARIJ

todavía ningún punto en el gráfico, y en el comentario escribe los números de la tercera y cuarta flechas, pero la primera y la segunda (más cercano a la fecha actual) no ve.

 
mila.com:

En el indicador he eliminado la pausa; como recomienda STARIJ

todavía no hay ningún punto en el gráfico

Pero lo dejaste en el Asesor Experto. ¿Y qué hace? Encuentra el primer punto del indicador y... romper

 
Artyom Trishkin:

Pero el concejal se quedó atrás. ¿Y qué hace? Encuentra el primer punto del indicador y... romper

Hice el Asesor Experto para comprobar la posibilidad, se abre correctamente, pero en el indicador no ve los valores de los dos buffers de indicadores más cercanos "Arrow v.3" en absoluto