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

 

En general, no hay que mirar hacia atrás, sino hacia delante.

Por ejemplo: buscar el "mínimo" desde el inicio de la vela anterior (que tiene el número "1") durante las 100 velas siguientes.

 
lynxntech #:

todo se puede hacer, la pregunta era a los que midieron el trabajo real, y mejor a los desarrolladores, que sabe lo que tienen en sus planes allí

No quiero experimentar, hay muchas otras tareas.

Correcto. No es un negocio real en .........

 
Alexey Viktorov #:

Así es. No es asunto del rey en .........

¿quizás deberíamos cerrar el hilo de Preguntas de principiantes? Alexei, si no quieres ayudar, por favor no te metas, hay demasiadas quejas tuyas.

Me interesaba una respuesta profesional para tener una idea de como funciona la plataforma.

 
Alexey Belyakov #:

Buenas noches, queridos programadores.

Ayúdenme a resolver un problema simple. Hay un código de MQL4. Quiero adaptarlo a 5. Es decir, debe funcionar de manera similar en MQL5.




Mi variante, obviamente, no funciona, por alguna razón hay un montón de errores):

Aparentemente, desconoces por completo la programación. Es por eso que cualquier consejo que te den, no tendrás éxito hasta ahora .

Pero no obstante... intenta entender la función

int  CopyHigh(
   string           symbol_name,      // имя символа
   ENUM_TIMEFRAMES  timeframe,        // период
   int              start_pos,        // откуда начнем 
   int              count,            // сколько копируем
   double           high_array[]      // массив для копирования максимальных цен
   );

y la función de trabajar con arrays

int  ArrayMaximum(
   const void&   array[],             // массив для поиска
   int           start=0,             // с какого индекса начинаем поиск
   int           count=WHOLE_ARRAY    // количество проверяемых
   );

Hay otras variantes de resolver este problema.

 
Alexey Belyakov #:

Buenas noches, queridos programadores.

Ayúdenme a resolver un problema simple. Hay un código de MQL4. Quiero adaptarlo a 5. Es decir, debe funcionar de manera similar en MQL5.




Mi variante, obviamente, no funciona, por alguna razón hay un montón de errores):

CopyRates() en lugar de un montón de indicadores y ediciones de código será mínimo, el código seguirá siendo compacto y legible.

//Введем внешнюю переменную, чтобы иметь возможность изменить количество сканируемых свечей.
extern int Window=30;
 
void OnStart()
{
   //Вводим переменные.
   double Highest=DBL_MIN;// 
   double Lowest=DBL_MAX; // 
   MqlRates rates[];
   //Сканируем 30 свечей и обновляем значения самых высоких и самых низких цен.
   if (CopyRates(_Symbol,_Period,30,rates)!=30) {
      Alert("copyRates failed");
      return;
   }
   for(int i=0; i<=Window; i++) {
      if(rates[i].low<Lowest) Lowest=rates[i].low;
      if(rates[i].high>Highest) Highest=rates[i].high;  
   }
 
   //Выводим результат.
   Alert("Самая высокая цена ",Highest," - Самая низкая цена ",Lowest);
}

En realidad, también debe añadir una comprobación de las comillas curvas

 
Maxim Kuznetsov #:

CopyRates() en lugar de un montón de indicadores y las ediciones de código serán mínimas, el código seguirá siendo compacto y legible.

En realidad, también debe añadir una comprobación de las comillas curvas

Maxim, ¿no se presenta CopyRates como si tuviera todas las funciones de un símbolo?

más barato que haya funciones individuales

 
lynxntech #:

Maxim, ¿no se presenta CopyRates como la obtención de todas las características del personaje?

más barato que haya rasgos individuales

ahí 1) según palabras de los desarrolladores copia virtual, es decir, si es posible no se transfieren datos, se transfieren referencias internas 2) incluso con copia completa es más rápido que CopyBuffer para iHigh,iLow por separado (1 llamada en vez de 2, que seguirán yendo a las mismas estructuras terminales).

y por último, lo principal: al portar, es muy importante que el código sea lo más parecido posible al original, incluso visualmente. Debes estar absolutamente seguro de que (el código) hace exactamente lo mismo que el original. Y las pequeñas optimizaciones se hacen después, y sólo cuando son realmente críticas.

 
Maxim Kuznetsov #:

hay 1) según los desarrolladores copia virtual, es decir, si es posible no se transfieren datos, se transfieren referencias internas 2) incluso con copia completa es más rápido que CopyBuffer para iHigh,iLow por separado (1 llamada en lugar de 2, que seguirán yendo a las mismas estructuras terminales).

y por último, lo principal: al portar, es muy importante que el código sea lo más parecido posible al original, incluso visualmente. Debes estar absolutamente seguro de que (el código) hace exactamente lo mismo que el original. Y las pequeñas optimizaciones se hacen después, y sólo cuando son realmente críticas.

Es un eterno problema al que los desarrolladores no quieren dar respuesta.

que es más barato conseguir todo de una vez, o dos partes necesarias.

a mi última pregunta, en otro hilo tampoco dijeron nada, al parecer están ocupados con otra cosa. o más bien ni ellos mismos lo saben. y no hay nadie que lo averigüe.

 
lynxntech #:

es un problema perenne al que los desarrolladores no quieren dar respuesta.

que es más barato conseguir todo de una vez, o las 2 partes necesarias

tampoco dijeron nada sobre mi última pregunta en otro hilo, al parecer están ocupados con otra cosa. o más bien ni ellos mismos lo saben. y no hay nadie para averiguarlo.

Última pregunta - ¿ se trata de acceder a GlobalVariables ?

Es una operación muy "cara", así que cuanto menos frecuente mejor. Es mejor guardar los datos entre OnDeinit y OnInit mediante archivos y SQLite.

 
Maxim Kuznetsov #:

La pregunta anterior se refiere al acceso a GlobalVariables ?

Es una operación muy "cara", así que cuanto menos frecuente mejor. Es mejor guardar los datos entre OnDeinit y OnInit a través de archivos y SQLite.

Maxim, ¿cuándo has comprobado las variables globales del terminal?

Insisto demasiado, quizás no deberías usarlas, pero ¿por qué pueden ser tan lentas? 1kb de texto no es para nada un problema.

este mismo matiz era una pregunta a los desarrolladores, pero no hay nadie para decir como funciona todo. solo pueden banear rapidamente.

Razón de la queja: