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

 
Igor Makanu :

esto funcionará:

Lo más probable es que hayas descrito la estructura a nivel global, y allí a nivel global hayas querido asignar valores a los campos de la estructura, esto no funcionará

Gracias por la respuesta.

¿Puedes decirme, cuando escribo #define FXT_HEADER.intSize 70, por qué da un error?

 
//+------------------------------------------------------------------+
//|  Функция A/D                       |
//+------------------------------------------------------------------+
double A_D(ENUM_TIMEFRAMES tf, int shift)
  {
   double res=0;
   res=iAD(NULL,tf, shift);
   return res;
  }

//+------------------------------------------------------------------+
//|  Функция A/D  средняя                     |
//+------------------------------------------------------------------+
double A_D_moving(ENUM_TIMEFRAMES tf, int period, int shift)
  {
   double res=0;
   double a[1];
  
   
   for(int i=period-1; i>=0; i--)
     {
   ArrayResize(a,period,0);
      a[i]= A_D(tf, i);    
     }
   for(int j=shift; j>=1; j--)
     {
      res=iMAOnArray(a,0, period,0,MODE_SMA,j);
     }
   return res;
  }

¡Hola!

Intentando hacer una función de media móvil a partir de iAD(). No funcionó hasta el final. La función en la versión anterior emite el valor de la media móvil de iAD() en la barra actual. No depende del valor de la variable de desplazamiento.

Pero necesito que la variable de desplazamiento sea el índice de la barra donde la función devuelve el valor correspondiente de la Media móvil de iAD(). El error descrito fue detectado por el siguiente código insertado en OnTick():

   Comment("\n  #0= ", DoubleToString(A_D_moving(0, 20, 0)),
           "\n  ++++++++++++++",
           "\n  #1= ", DoubleToString(A_D_moving(0, 20, 1)),
           "\n  ----------------------",
           "\n  #2= ", DoubleToString(A_D_moving(0, 20, 2)));
   

Si alguien puede, por favor, aconsejar cómo solucionar el error.

 

¿Puede ayudarme con una tarea primitiva?
- el indicador tiene una comprobación del número de cuenta... si el número de cuenta no es el especificado - el indicador da un mensaje (el indicador es sólo para amigos, etc.)
- después de instalar el indicador en un gráfico - todo funciona bien ... el cheque pasa... el indicador funciona

Pero después de reiniciar el terminal - el indicador falla la prueba ... Entiendo que el código del indicador se carga antes de la conexión con el corredor? Tengo que volver a instalarlo en la carta... Esto no es una opción...
¿Pueden decirme en qué lugar debo insertar este código correctamente? Quiero poder ponerlo en el gráfico una vez, guardarlo como plantilla y todo...

 {

   if (AccountInfoInteger(ACCOUNT_LOGIN)  != 123456) {

      Alert("Если не работает: блаблабла");

      return(INIT_FAILED);

   }
 
Roman Agafonkin:

¿Sabes dónde insertar este código? Para que puedas ponerlo una vez en el gráfico, guardarlo como plantilla y ya está...

intente poner while() antes, esperando el inicio de sesión dentro de ciertos límites. no sé qué funciónAccountInfoInteger(ACCOUNT_LOGIN) da si no se ha iniciado la sesión todavía - despréndalo y péguelo en lugar de los signos de interrogación.

while (AccountInfoInteger(ACCOUNT_LOGIN)==????) Sleep (100);
 
Igor Zakharov:

Prueba con while() antes de eso, esperando a que se inicie la sesión dentro de ciertos límites. No sé qué función daAccountInfoInteger(ACCOUNT_LOGIN) si aún no se ha iniciado la sesión - imprime y pega en lugar de los signos de interrogación.

No se puede ejecutar algo largo en OnInit - el terminal puede descargar el código

en el indicador no debe resbalar para funcionar

No entiendo por qué el código fuente no funciona - o su corredor no tiene buenos servidores o el Internet es demasiado lento - por lo general este código es compartido por sus "amigos" en todos los foros )))


creo que hay que añadir una variable estática de comprobación en el cuerpo del indicador , cuando llegue un tick se conectará con el broker y la autorización, lo único que daría el primer tick al cargar el gráfico - pero se puede manejar , por cierto prev_calculated ==0 es una muy buena razón para comprobar la "licencia".

 
Empecé a enseñar a mi hija a comerciar. Ella tenía esta pregunta: "Entiendo que, por ejemplo, compre una libra, pero no entiendo cómo puedo vender una libra si no la he comprado y no la tengo". Para ser sincero, no pude explicárselo con claridad, le dije algo vago, que era una transacción no monetaria, virtual, y que no era necesario tener esas libras en stock para vender. En general, no me gustó mi propia respuesta. ¿Y cuál habría sido la respuesta correcta a tal pregunta?
 
khorosh:
Empecé a enseñar a mi hija a comerciar. Ella tenía esta pregunta: entiendo que, por ejemplo, para comprar una libra, pero no está claro cómo se puede vender una libra, si yo no lo compró y no lo tengo. Para ser honesto, no podía explicar a ella con claridad, me dijo algo vago, que se considera no en efectivo, las transacciones virtuales y tener estas libras en stock para vender, no necesariamente. En general, no me gustó mi propia respuesta. ¿Y cuál habría sido la respuesta correcta a tal pregunta?

No es necesario entender las cosas para obtener beneficios. Cuanto menos sepas,más fácil jugarás. Creo que sí.

Es genial que pueda empezar a hacerlo tan pronto) En el proceso encontrará las respuestas por sí misma (que se preguntará), si hay alguna...
 
onedollarusd:

No es necesario entender las cosas para obtener beneficios. Cuanto menos sepas, más fácil será jugar. Yo creo que sí.

Si le digo que cuando el precio ha bajado una distancia decente y se ha dado la vuelta, le da al botón de comprar, y viceversa. ¿Crees que será suficiente? )

 
Igor Makanu:

no se puede ejecutar algo largo en OnInit - el terminal puede descargar el código

en el indicador no debe funcionar

No sé por qué el código fuente no funciona - o su corredor no tiene buenos servidores o el Internet es demasiado lento - por lo general este código es compartido por sus "amigos" en todos los foros )))


creo que tengo que añadir una variable estática de comprobación en el cuerpo del indicador , cuando llegue un tick, se conectará al broker y a la autorización; lo único que veo es que el primer tick se carga en el gráfico por sí mismo - pero se puede manejar , por cierto prev_calculated ==0 es una buena ocasión para comprobar la "licencia".

He resuelto el mismo problema y he insertado el siguiente código al principio de la función OnCalculate:

 if(account_number>0)
 {
   int akk;
   akk=AccountInfoInteger(ACCOUNT_LOGIN);
   if(akk==0)return(0);
   if(akk!=account_number)
   {
     Alert("Неверный номер счёта.");
     int window=ChartWindowFind();
     ChartIndicatorDelete(0,window,MeName);
     return(0);
   }
 }              

account_number se define con #define (también es posible una variable de visibilidad global), MeName es lo mismo, pero en general es el nombre corto del indicador.

 
Yurij Kozhevnikov:

He resuelto el mismo problema insertando este código al principio de la función OnCalculate:

account_number se define con #define (se puede utilizar la variable de visibilidad global), MeName - de manera similar, pero en general es un nombre de indicador corto.

Sí, tienes un buen ejemplo, eso es lo que estoy escribiendo

pero es necesario procesar el primer inicio del indicador - el primer inicio puede o no ser una conexión, y si la licencia no ha pasado, debe descargar el indicador a la vez, como un contador y 2-3 veces sin licencia, a continuación, descargar el indicador

Razón de la queja: