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

 
Artyom Trishkin:

IndicadorDígitos(5)

Gracias.
 

Permítanme hacer otra pregunta. Basado en el mismo indicador. Supongamos que adjuntamos el indicador al gráfico. Obtenemos el primer valor de Bid1. Entonces obtenemos el segundo valor de Bid2. Y tenemos que comparar estos dos valores. A la segunda le restamos la primera y obtenemos el número que sumamos a la primera Puja1.

Oferta1=1,11133

Oferta2=1,11135

Oferta2-Bid1=0,00002

Oferta1+0,00002=1,11135

Entiendo que el resultado es el mismo que en el indicador original.

Sólo quiero ver la implementación y entender la lógica del código.

 
Alexey Viktorov:

Tienes que desbloquearlo en las propiedades del archivo.

Gracias. :)
 
jaffer wilson :

Dos declaraciones:

Impresión: 22,33

И

Impresión: 2.00000

¿Por qué hay diferentes resultados? En C / C ++ la declaración anterior funciona bien.

¿Alguien tiene alguna idea sobre este problema?

 

Ayúdame a entender las matrices de precios en mt5. No está claro en el indicador. Los precios de salida, que están en OnCalculate:

  for(int i=10; i>=0; i--)
         PrintFormat("s- open[%d] = %d",i,open[i]);

Tengo precios extraños:

2020.01.15 20:09:51.517 ZZ_And_Moving_Averages (EURUSD,H1)      s- open[10] = 1597040639
2020.01.15 20:09:51.517 ZZ_And_Moving_Averages (EURUSD,H1)      s- open[9] = -523642413
2020.01.15 20:09:51.517 ZZ_And_Moving_Averages (EURUSD,H1)      s- open[8] = 1691873517
2020.01.15 20:09:51.517 ZZ_And_Moving_Averages (EURUSD,H1)      s- open[7] = 590987500
2020.01.15 20:09:51.517 ZZ_And_Moving_Averages (EURUSD,H1)      s- open[6] = 1583296744
2020.01.15 20:09:51.517 ZZ_And_Moving_Averages (EURUSD,H1)      s- open[5] = 115448721
2020.01.15 20:09:51.517 ZZ_And_Moving_Averages (EURUSD,H1)      s- open[4] = 360090058
2020.01.15 20:09:51.517 ZZ_And_Moving_Averages (EURUSD,H1)      s- open[3] = -1597040639
2020.01.15 20:09:51.517 ZZ_And_Moving_Averages (EURUSD,H1)      s- open[2] = -856244680
2020.01.15 20:09:51.517 ZZ_And_Moving_Averages (EURUSD,H1)      s- open[1] = 366962006
2020.01.15 20:09:51.517 ZZ_And_Moving_Averages (EURUSD,H1)      s- open[0] = -1209462791

Yo lo hago al revés, creo un array y lo copio (lo busco probando, no lo tengo claro):

double Open[];//глобальная
CopyOpen(NULL,0,0,Bars_To_Process*2,Open); //OnCalculate
 for(int i=10; i>=0; i--)
         PrintFormat("Open[%d] = %d",i,Open[i]);//OnCalculate

Y obtengo resultados similares:

2020.01.15 20:10:11.557 ZZ_And_Moving_Averages (EURUSD,H1)      Open[10] = 1356522471
2020.01.15 20:10:11.557 ZZ_And_Moving_Averages (EURUSD,H1)      Open[9] = -1708366192
2020.01.15 20:10:11.557 ZZ_And_Moving_Averages (EURUSD,H1)      Open[8] = -729800843
2020.01.15 20:10:11.557 ZZ_And_Moving_Averages (EURUSD,H1)      Open[7] = 1499458982
2020.01.15 20:10:11.557 ZZ_And_Moving_Averages (EURUSD,H1)      Open[6] = 167675523
2020.01.15 20:10:11.557 ZZ_And_Moving_Averages (EURUSD,H1)      Open[5] = -90709709
2020.01.15 20:10:11.557 ZZ_And_Moving_Averages (EURUSD,H1)      Open[4] = -321607151
2020.01.15 20:10:11.557 ZZ_And_Moving_Averages (EURUSD,H1)      Open[3] = -314735203
2020.01.15 20:10:11.557 ZZ_And_Moving_Averages (EURUSD,H1)      Open[2] = -314735203
2020.01.15 20:10:11.557 ZZ_And_Moving_Averages (EURUSD,H1)      Open[1] = 1663011337
2020.01.15 20:10:11.557 ZZ_And_Moving_Averages (EURUSD,H1)      Open[0] = -1408749273

Es aún más interesante con las fechas. Imprimo las fechas que están en OnCalculate:

for(int i=10; i>=0; i--)
         PrintFormat("s- time[%d] = %s",i,TimeToString(time[i]));

Lo entiendo:

2020.01.15 20:17:04.421 ZZ_And_Moving_Averages (EURUSD,H1)      s- time[10] = 2015.12.02 10:00
2020.01.15 20:17:04.421 ZZ_And_Moving_Averages (EURUSD,H1)      s- time[9] = 2015.12.02 09:00
2020.01.15 20:17:04.421 ZZ_And_Moving_Averages (EURUSD,H1)      s- time[8] = 2015.12.02 08:00
2020.01.15 20:17:04.421 ZZ_And_Moving_Averages (EURUSD,H1)      s- time[7] = 2015.12.02 07:00
2020.01.15 20:17:04.421 ZZ_And_Moving_Averages (EURUSD,H1)      s- time[6] = 2015.12.02 06:00
2020.01.15 20:17:04.421 ZZ_And_Moving_Averages (EURUSD,H1)      s- time[5] = 2015.12.02 05:00
2020.01.15 20:17:04.421 ZZ_And_Moving_Averages (EURUSD,H1)      s- time[4] = 2015.12.02 04:00
2020.01.15 20:17:04.421 ZZ_And_Moving_Averages (EURUSD,H1)      s- time[3] = 2015.12.02 03:00
2020.01.15 20:17:04.421 ZZ_And_Moving_Averages (EURUSD,H1)      s- time[2] = 2015.12.02 02:00
2020.01.15 20:17:04.421 ZZ_And_Moving_Averages (EURUSD,H1)      s- time[1] = 2015.12.02 01:00
2020.01.15 20:17:04.421 ZZ_And_Moving_Averages (EURUSD,H1)      s- time[0] = 2015.12.02 00:00

Y cuando lo copio:

datetime Time[];
CopyTime(NULL,0,0,Bars_To_Process*2,Time);
for(int i=10; i>=0; i--)
         PrintFormat("Time[%d] = %s",i,TimeToString(Time[i]));

Se imprime bien:

2020.01.15 20:20:37.686 ZZ_And_Moving_Averages (EURUSD,H1)      Time[10] = 2020.01.15 10:00
2020.01.15 20:20:37.686 ZZ_And_Moving_Averages (EURUSD,H1)      Time[9] = 2020.01.15 11:00
2020.01.15 20:20:37.686 ZZ_And_Moving_Averages (EURUSD,H1)      Time[8] = 2020.01.15 12:00
2020.01.15 20:20:37.686 ZZ_And_Moving_Averages (EURUSD,H1)      Time[7] = 2020.01.15 13:00
2020.01.15 20:20:37.686 ZZ_And_Moving_Averages (EURUSD,H1)      Time[6] = 2020.01.15 14:00
2020.01.15 20:20:37.686 ZZ_And_Moving_Averages (EURUSD,H1)      Time[5] = 2020.01.15 15:00
2020.01.15 20:20:37.686 ZZ_And_Moving_Averages (EURUSD,H1)      Time[4] = 2020.01.15 16:00
2020.01.15 20:20:37.686 ZZ_And_Moving_Averages (EURUSD,H1)      Time[3] = 2020.01.15 17:00
2020.01.15 20:20:37.686 ZZ_And_Moving_Averages (EURUSD,H1)      Time[2] = 2020.01.15 18:00
2020.01.15 20:20:37.686 ZZ_And_Moving_Averages (EURUSD,H1)      Time[1] = 2020.01.15 19:00
2020.01.15 20:20:37.686 ZZ_And_Moving_Averages (EURUSD,H1)      Time[0] = 2020.01.15 20:00

Pero no se puede llegar lejos sólo con citas. Ayúdame a entender. ¿Cómo puedo obtener los precios correctos de apertura y cierre?

 
Yevhenii Levchenko:

Ayúdame a entender las matrices de precios en mt5. No está claro en el indicador. Emitiré los precios que están en OnCalculate:

for(int i=10; i>=0; i--)
         PrintFormat("s- open[%d] = %d",i,open[i]);

Hazlo así:

for(int i=10; i>=0; i--)
{
   Print("s- open[",i,"] = ",open[i]);
}

Ha utilizado una especificación de tipo incorrecta en la salida formateada

 
Igor Makanu:

hacer esto:

Ha utilizado una especificación de tipo incorrecta en la salida formateada

¡Aaaaahhhh, mierda! ¡Muchas gracias, Igor!

Debería haber puesto %f... Lo tengo mal... y tengo que poner ArraySetAsSeries en todas partes. Es un poco raro...

 
Igor Makanu:

Por favor,

Yo no aconsejaría usar ArraySetAsSeries() si escribes el código del indicador desde cero (si lo portas desde MQL4 - otro asunto),

utilice rates_total como el número de la barra más a la derecha - 1, se acostumbrará a la lógica del indicador en MQL5 más rápido

Gracias.

No escribir desde cero... Estoy transfiriendo un indicador de mt4 a mt5
 
Oleg Bondarev:

Permítanme hacer otra pregunta. Basado en el mismo indicador. Supongamos que adjuntamos el indicador al gráfico. Obtenemos el primer valor de Bid1. Entonces obtenemos el segundo valor de Bid2. Y tenemos que comparar estos dos valores. A la segunda le restamos la primera y obtenemos el número que sumamos a la primera Puja1.

Oferta1=1,11133

Oferta2=1,11135

Oferta2-Bid1=0,00002

Oferta1+0,00002=1,11135

Entiendo que el resultado es el mismo que en el indicador original.

Sólo quiero ver la implementación y entender la lógica del código.

Ayúdame. No consigo que nada funcione por mi cuenta. Hago 2 buffers x[ ] para comparar los valores de Bid e y[ ] para graficar. Y nada.

 
Oleg Bondarev:

Necesito tu ayuda. No consigo que nada funcione por mi cuenta. Hago 2 buffers x[ ] para comparar los valores de Bid e y[ ] para graficar. Y nada.

Intenta formular la pregunta de otra manera, probablemente tu pregunta no es clara

Razón de la queja: