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

 
E_Ghazaryan:
Sí, claro =D )))) Ya se adjunta.)))

Todos estos parámetros deben aparecer después de la coma en iCustom() tras el nombre del indicador, y tras ellos dos parámetros más: número de búfer y número de barra, de los que se toman los datos. Es decir

iCustom(Symbol(), Period(), "_MTF_ADX3", 0, 500, 6, 6, 8, 14, 6, 6, 2, true, false, buffer_number, bar_number).

Todos los valores listados pueden ser establecidos por variables externas del EA y los nombres de estas variables pueden ser escritos en iCustom() en lugar de los valores codificados.

 

¿Puede decirme por qué?

doble d = 0,07;

d = NormalizarDoble(d,2);

en ambos casos d== 0,07000000000000001

¿cómo puedo dejar 2 decimales?

 
pusheax:

¿Puede decirme por qué?

doble d = 0,07;

d = NormalizarDoble(d,2);

en ambos casos d== 0,07000000000000001

¿cómo dejar 2 decimales?


Tenga en cuenta que cuando se envía a Journal utilizando Print(), un número normalizado puede contener un número mayor de decimales del que se espera. Por ejemplo,

   double a=76.671;             // нормализованное число с 3 знаками после запятой
   Print("Print(76.671)=",a);   // выведем его как есть
   Print("DoubleToString(a,8)=",DoubleToString(a,8)); // выведем с заданной точностью

se mostrará en la terminal:

  DoubleToString(a,8)=76.67100000

  Print(76.671)=76.67100000000001


Es decir, para la impresión la salida de los valores extra no es un problema.

Документация по MQL5: Преобразование данных / NormalizeDouble
Документация по MQL5: Преобразование данных / NormalizeDouble
  • www.mql5.com
Преобразование данных / NormalizeDouble - справочник по языку алгоритмического/автоматического трейдинга для MetaTrader 5
 
Karputov Vladimir:


Tenga en cuenta que el número normalizado cuando se imprime en el libro de registro utilizando Print() puede contener más decimales de los que espera. Por ejemplo,

se mostrará en la terminal:


Por lo tanto, para la impresión, la salida de valores adicionales no es un problema.

Gracias, es que cuando intento abrir una posición con el lote 0.07 me da error (pensé que era la razón), así que intentaré averiguar más.
 
pusheax:
Gracias, es que cuando intento abrir una posición con 0,07 de lote da error (creía que ese era el problema), debe ser otra cosa, lo investigaré más.
Lo primero que hay que hacer es mirar la descripción del número de error. Esto acortará la ruta de búsqueda.
 

buenas noches

He declarado un array dinámico

double all_order[][10];

He redefinido en OnInit

ArrayResize(all_order, 20);

Introduzco los datos en la función

void OR_spisok(double a0, double a1, double a2, double a3, double a4, double a5)

{

int a10=int(a0);

all_order[a10][0]=a0;

all_order[a10][1]=a1;

all_order[a10][2]=a2;

all_order[a10][3]=a3;

all_order[a10][4]=a4;

all_order[a10][5]=a5;

}

tres líneas funciona bien, en la 4 se bloquea

2015.10.09 20:13:47.908 3102 EURUSD,H1: array fuera de rango en '3102.mq4' (393,10)

393,10 es:

all_order[a10][0]=a0;

¿qué ocurre?

Se ha eliminado la línea#property strict

El script funciona, ¿puedo continuar sin esta línea?

 
pr0gre5:

buenas noches

declaró una matriz dinámica


Se ha eliminado la línea#property strict

El script funciona, ¿puedo continuar sin esta línea?

 
Artyom Trishkin:

Todos estos parámetros deben aparecer después de la coma en iCustom() tras el nombre del indicador, y tras ellos dos parámetros más: número de búfer y número de barra, de los que se toman los datos. Es decir

iCustom(Symbol(), Period(), "_MTF_ADX3", 0, 500, 6, 6, 8, 14, 6, 6, 2, true, false, buffer_number, bar_number).

Todos los valores listados pueden ser establecidos por variables externas de EA y escribir los nombres de estas variables en iCustom() en lugar de los valores codificados.

Gracias por su respuesta. Pero el hecho es que lo hice al principio, pero al recibir valores erróneos, decidí eliminar los parámetros de iCustom, para que el Asesor Experto utilice los parámetros estándar del indicador. En ambos casos, sin embargo, EA obtiene valores erróneos. Por ejemplo, Alert da 30,32362 para la línea azul, pero cuando miro el gráfico del indicador tiene 22,3320 en el mismo lugar. Y lo mismo con otras líneas.
 
E_Ghazaryan:
Gracias por la respuesta. Pero el caso es que al principio lo hice así, pero al obtener valores erróneos, decidí eliminar los parámetros de iCustom para que el EA utilizara los parámetros estándar del indicador. Sin embargo, en ambos casos, el Asesor Experto recibe valores erróneos. Por ejemplo, Alert da 30,32362 para la línea azul, pero cuando miro el gráfico del indicador tiene 22,3320 en el mismo lugar. Y lo mismo con las otras líneas.
Muéstrame el código donde tomas los datos del indicador.
 
Artyom Trishkin:
Muéstrame el código donde tomas los datos del indicador.

El código era grande. Pero para averiguar cuál es el problema, el Asesor Experto no funciona según las reglas, corté esta parte en una separada y comencé a probarla.

double Ind_Blue=iCustom(NULL, 0, "_MTF_ADX3",1,0);

double Ind_Red=iCustom(NULL, 0, "_MTF_ADX3",2,0);

Alert(" Ind_Blue= " , Ind_Blue , " Ind_Red= " , Ind_Red);

También adjunto el archivo del Asesor Experto. No quiero hacerte perder el tiempo, pero no encuentro el problema.

Y hay un indicador similar con el mismo problema (Adx mtf). Tengo un archivo mq4 para ello. Pero parece que no hay ningún problema en el código.

Archivos adjuntos:
_MTF_ADX3.ex4  5 kb
Adx_mtf.ex4  21 kb
Adx_mtf.mq4  6 kb