Programando en mt5

Foro dedicado a todo lo relacionado con la versión 5 de la plataforma de Metaquotes.
Responder
Avatar de Usuario
Gamelu
Mensajes: 787
Registrado: 21 May 2009 16:49

Programando en mt5

Mensaje por Gamelu »

Sabeis como se utiliza el iClose en mt5? me da error un código que intentaba pasar a este lenguaje.

en mt4 lo tengo asi:
if(iClose(0,0,0)- iOpen(0,0,0)>0)


No se si tengo que utilizar el CopyClose en mt5.

A ver si alguien me hecha un cable, saludos.
Última edición por Gamelu el 28 Feb 2017 10:32, editado 1 vez en total.
Avatar de Usuario
Gamelu
Mensajes: 787
Registrado: 21 May 2009 16:49

Re: iclose en mt5

Mensaje por Gamelu »

Código: Seleccionar todo

double CurrentClose, PreviousClose1, PreviousClose2;
double myClose;
CopyClose(_Symbol, _Period, 0, 10, myClose); 
ArraySetAsSeries(myClose,true);
CurrentClose = myClose[0]; // current bar close.
PreviousClose1 = myClose[1]; // equals bar close 1 bar back from current bar.
PreviousClose2 = myClose[2]; // equals bar close 2 bars back from current bar.

Código: Seleccionar todo

MqlRates rates[];
   ArraySetAsSeries(rates,true);
   int copied=CopyRates(Symbol(),Period(),0,Bars(Symbol(),Period()),rates); // Copied all datas
   double pr0_close= rates[0].close;
   double pr1_close= rates[1].close;        // rates[1].high,rates[1].open for high
   datetime t1 = rates[1].time;

Avatar de Usuario
Gamelu
Mensajes: 787
Registrado: 21 May 2009 16:49

Re: iclose en mt5

Mensaje por Gamelu »

Avatar de Usuario
X-Trader
Administrador
Mensajes: 12781
Registrado: 06 Sep 2004 10:18
Contactar:

Re: iclose en mt5

Mensaje por X-Trader »

Ya veo, pues sí que lo han complicado con respecto a MQL4 ¿no?

Saludos,
X-Trader
"Los sistemas de trading pueden funcionar en ciertas condiciones de mercado todo el tiempo, en todas las condiciones de mercado en algún momento del tiempo, pero nunca en todas las condiciones de mercado todo el tiempo."
Avatar de Usuario
Gamelu
Mensajes: 787
Registrado: 21 May 2009 16:49

Re: iclose en mt5

Mensaje por Gamelu »

Pues si, aun no lo he probado pero hay que pasarle todo el array de precios, con lo fácil que era antes, no se por que habran cambiado tanto la forma de hacerlo.

Hasta para hacer un Hour() me las estoy viendo.


Saludos.

Avatar de Usuario
Gamelu
Mensajes: 787
Registrado: 21 May 2009 16:49

Re: iclose en mt5

Mensaje por Gamelu »

Una curiosidad es que los arrays de precios se copian a la inversa por defecto:

Close[5]=",myClose[0],
Close[4]=",myClose[1],
Close[3]=",myClose[2],
Close[2]=",myClose[3],
Close[1]=",myClose[4],
Close[0]=",myClose[5]

Para corregir esto se utiliza la función:

ArraySetAsSeries(myClose,true);

//quedaría asi:

Close[5]=",myClose[5],
Close[4]=",myClose[4],
Close[3]=",myClose[3],
Close[2]=",myClose[2],
Close[1]=",myClose[1],
Close[0]=",myClose[0]
Adjuntos
Sin ArraySetAsSeries.mq5
(1.91 KiB) Descargado 286 veces
ArraySetAsSeries.mq5
(1.91 KiB) Descargado 268 veces
Avatar de Usuario
Gamelu
Mensajes: 787
Registrado: 21 May 2009 16:49

Re: Programando en mt5

Mensaje por Gamelu »

Manejo del tiempo, horas, mes,año etc
Información adquirida de https://www.mql5.com/es/articles/599

Código: Seleccionar todo

datetime    tm=TimeCurrent();
MqlDateTime stm;
TimeToStruct(tm,stm);
//--- mostrar componentes de la fecha
Alert("Año: "        +(string)stm.year);
Alert("Mes: "      +(string)stm.mon);
Alert("Día: "      +(string)stm.day);
Alert("Hora: "        +(string)stm.hour);
Alert("Minuto: "     +(string)stm.min);
Alert("Segundo: "    +(string)stm.sec);
Alert("Día de la semana: "+(string)stm.day_of_week);
Alert("Día del año: "  +(string)stm.day_of_year);
Adjuntos
Componentes de fecha y hora.mq5
(3.6 KiB) Descargado 243 veces
Avatar de Usuario
Gamelu
Mensajes: 787
Registrado: 21 May 2009 16:49

Re: Programando en mt5

Mensaje por Gamelu »

Para hacer una bars, lo mas simple que se me ha ocurrido:


Código: Seleccionar todo

MqlRates rates[];
   ArraySetAsSeries(rates,true);
   CopyRates(Symbol(),Period(),0,Bars(Symbol(),Period()),rates); // Copied all datas
int bars;
bars= ArraySize(rates); 
Comment("Barras:",bars);
:lol:
Avatar de Usuario
X-Trader
Administrador
Mensajes: 12781
Registrado: 06 Sep 2004 10:18
Contactar:

Re: Programando en mt5

Mensaje por X-Trader »

Joder, pues me parece que le van a dar por saco al Metatrader 5! :twisted:

Saludos,
X-Trader
"Los sistemas de trading pueden funcionar en ciertas condiciones de mercado todo el tiempo, en todas las condiciones de mercado en algún momento del tiempo, pero nunca en todas las condiciones de mercado todo el tiempo."
Avatar de Usuario
Gamelu
Mensajes: 787
Registrado: 21 May 2009 16:49

Re: Programando en mt5

Mensaje por Gamelu »

Es como si hubieran hecho un downgrade de mql4 a mql5 acojonante.
OscarLA
Mensajes: 161
Registrado: 11 Nov 2015 23:58

Re: iclose en mt5

Mensaje por OscarLA »

Gamelu escribió:Una curiosidad es que los arrays de precios se copian a la inversa por defecto:

Close[5]=",myClose[0],
Close[4]=",myClose[1],
Close[3]=",myClose[2],
Close[2]=",myClose[3],
Close[1]=",myClose[4],
Close[0]=",myClose[5]

Para corregir esto se utiliza la función:

ArraySetAsSeries(myClose,true);

//quedaría asi:

Close[5]=",myClose[5],
Close[4]=",myClose[4],
Close[3]=",myClose[3],
Close[2]=",myClose[2],
Close[1]=",myClose[1],
Close[0]=",myClose[0]

¿Pero no se había de utilizar el CopyClose ???
Avatar de Usuario
Gamelu
Mensajes: 787
Registrado: 21 May 2009 16:49

Re: Programando en mt5

Mensaje por Gamelu »

Si hay que utilizar el CopyClose , pero los datos de este se pasan a un Array, en este caso pasamos 10 barras.
double myClose[];
CopyClose(_Symbol, _Period, 0, 10, myClose);


Una vez los tienes en el array, en este caso le hemos llamado myClose, los puedes consultar por ejemplo, myClose[1] .
Si te ha gustado este hilo del Foro, ¡compártelo en redes!


Responder

Volver a “Metatrader 5”