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

 

¿por qué el compilador da una advertencia en esta línea?

datetime time_setup=OrderGetInteger(ORDER_TIME_SETUP);
possible loss of data due to type conversion    
 
¿Puedes darme una pista? Al restar un número, obtengo 3e-5. ¿Cómo puedo hacer que parezca 0,00003? Gracias.
 
awsomdino:

¿Por qué el compilador da una advertencia en esta línea?

Porque XxxxGetInteger devuelve long (entero con signo), mientras que datetime es un entero sin signo y un tipo distinto. Deberíamos especificar

datetime timeProperty = (datetime)XxxGetInteger(...)

 
prom18:
Dígame. Al restar, obtengo un número 3e-5. ¿Cómo puedo hacer que parezca 0,00003? Gracias.

¿Dónde lo consigues?

 

¡Hola!

La función OnCalculate devuelve periódicamente 0

prev_calculated = 0

Creo que es porque el gráfico se está rellenando con citas de un recurso de terceros. Sin embargo, no parece que el gráfico se esté sobrescribiendo.

¿Cómo puedo sobrescribir los nuevos datos en estas condiciones sin reescribir los datos antiguos?

Sólo creo un indicador con algunos cálculos, no estoy tratando de cargar las cotizaciones.

void filter(const int rates_total,const int prev_calculated)
  {
 
   int start=prev_calculated;
//--- если значения индикатора уже были рассчитаны на предыдущем тике, то работаем на последнем баре
   if(prev_calculated>0)
      start--;
//---
   for(int p=2; p<Pmax; p++) // отбор по периодам
      for(int b=start>rates_total-Pmax?start:rates_total-Pmax; b<rates_total; b++)
        {
 
Que se diviertan todos. Pregunta: en MT4, cuando se trabaja en el probador con cruces (pares sin quid), ¿cómo calcula el probador los resultados de las posiciones cerradas, si la cuenta, en la que se realiza la prueba, es una cuenta en dólares? Para el recálculo de los totales de las posiciones en dólares, ¿el comprobador toma el tipo de cambio de la moneda base del cruce con el dólar en el momento actual o en el momento del intervalo comprobado? Tengo la firme sospecha de que lo es en la actualidad. Si es así, ¿no es posible hacer que cuente en el momento del intervalo?
Совершение сделок - Торговые операции - Справка по MetaTrader 5
Совершение сделок - Торговые операции - Справка по MetaTrader 5
  • www.metatrader5.com
Торговая деятельность в платформе связана с формированием и отсылкой рыночных и отложенных ордеров для исполнения брокером, а также с управлением текущими позициями путем их модификации или закрытия. Платформа позволяет удобно просматривать торговую историю на счете, настраивать оповещения о событиях на рынке и многое другое. Открытие позиций...
 
Mihail Matkovskij:

En MQL4 sólo de esta manera:

Resultado:


Muchas gracias por su ayuda.

 
Mihail Matkovskij:

¿Dónde lo consigues?

Aquí mismo.

double price1=1.23450;
double price2=1.23447;
double delta=price1-price2;
Alert("Разбег ",delta);
 
prom18:

Aquí mismo.

Alert("Разбег "+DoubleToString(delta,_Digits));

o Alert(StringFormat("Spread %.5f",delta));

En general, acostúmbrate, son sólo representaciones diferentes de un mismo número. Piensa en tus maravillosos días de escuela - de ahí viene

 
Top2n:

¡Hola!

La función OnCalculate devuelve periódicamente 0

Creo que es porque el gráfico se está rellenando con citas de un recurso de terceros, aunque no parece que se esté sobrescribiendo el gráfico.

¿Cómo puedo sobrescribir los nuevos datos sin reescribir los antiguos?

Sólo creo el indicador con algunos cálculos, no estoy tratando de cargar las cotizaciones.

Declarar una variable global (no confundir con las variables globales del terminal)

 bool firstRun = false;

y hacer un recálculo completo sólo en el primer tick

// простейшее условие пересчёта
if(!firstRun) {
  // пересчёт ...
  firstRun = true;
}

Si firstRun también se reinicia junto con los parámetros de OnCalculate, el indicador se reiniciará.