Arrays en Metatrader.

Foro dedicado a todo lo relacionado con la versión 4 de la plataforma de Metaquotes.
Responder
Avatar de Usuario
YsEkU
Mensajes: 179
Registrado: 02 Ene 2007 23:24

Arrays en Metatrader.

Mensaje por YsEkU »

Saludos hermanos.

Alguien puede explicarme como introducir valores en un array en metatrader.

Pongo primero el codigo de prueba y luego las preguntas
://+------------------------------------------------------------------+
//| prueba.mq4 |
//| Copyright © 2007, MetaQuotes Software Corp. |
//| http://www.metaquotes.net |
//+------------------------------------------------------------------+
#property copyright "YsEkU"
#property link "https://www.x-trader.net"

#property indicator_separate_window
#property indicator_buffers 1
#property indicator_color1 Red
//---- buffers
double ExtMapBuffer1[];
//+------------------------------------------------------------------+
//| Custom indicator initialization function |
//+------------------------------------------------------------------+
int init()
{
//---- indicators
SetIndexStyle(0,DRAW_LINE,0,1);
SetIndexBuffer(0,ExtMapBuffer1);
//----
return(0);
}
//+------------------------------------------------------------------+
//| Custom indicator deinitialization function |
//+------------------------------------------------------------------+
int deinit()
{
//----

//----
return(0);
}
//+------------------------------------------------------------------+
//| Custom indicator iteration function |
//+------------------------------------------------------------------+
int start()
{
int counted_bars=IndicatorCounted();
//----
int a=2;
int b=3;
int c= a+b;

ExtMapBuffer1[0]=c;

//----
return(0);
}
//+------------------------------------------------------------------+
Última edición por YsEkU el 01 Feb 2007 11:58, editado 1 vez en total.

Avatar de Usuario
YsEkU
Mensajes: 179
Registrado: 02 Ene 2007 23:24

Mensaje por YsEkU »

El programa es sencillo, asigna valores a las variables (a,b,c) y asigna el valor de c al buffer-array del indicador, ExtMapBuffer1.

Es una prueba para ver como va, en teoria devuelve un valor constante de 5. Se resume en:

int a=2;
int b=3;
int c= a+b;

ExtMapBuffer1[0]=c;

Lo compilo y me sale la pantalla en negro.

Creo que el problema esta aqui, en el valor [0] del indice del array:

ExtMapBuffer1[0]=c;

Pero no se, que valor corresponde a la barra actual en el array (he supuesto que es 0 más que nada por similitud con el visual chart, no se si me explico, no sé si asigna 0 a la posición actual, o va llevando un contador por cada barra)



Mirando en la ayuda, viene esto.


A group of functions to work with arrays.

Arrays are allowed to be maximum four-dimensional. Each dimension is indexed from 0 to dimension size-1. In a particular case of a one-dimensional array of 50 elements, calling of the first element will appear as array[0], of the last one - as array[49].
He probado con esto y tampoco me rula

int a=2;
int b=3;
int c= a + b;

ExtMapBuffer1[Bars-1]=c;

Alguien me hecha un cable?
Gracias anticipadas
Avatar de Usuario
YsEkU
Mensajes: 179
Registrado: 02 Ene 2007 23:24

Mensaje por YsEkU »

Bueno, como nadie se anima me respondo yo mismo jejeje, asi aprendemos todos.

La parte clave del codigo es definir la función pos, que nos devuelve la posición de la barra actual y simplifica mucho todo.
Esta función deberia aparecer en el Asistente, ahorraria dolores de cabeza peeeeero.... jejeje


int counted_bars=IndicatorCounted();
int pos=Bars-counted_bars-1;
//-- dependiendo de si el computo es por tick o a barra pasada
//-- int pos=Bars-counted_bars; así sería por tick


//----
double a=3.54;
while(pos>=0)
{
ExtMapBuffer1[pos]=a;
pos --;
}
el codigo de prueba asigna al buffer el valor constante 3,54 y POR FIN me lo dibuja...

La parte esencial que deberia ir al comienzo de cada programa, (con su busqueda de errores) sería:

int start()
{
if(Bars<=10) return(0);
int counted_bars=IndicatorCounted();
//---- check for possible errors
if(counted_bars<0>0) counted_bars--;
int pos=Bars-counted_bars-1;
//----
while(pos>=0)
{
//---AQUI VA EL CODIGO DEL PROGRAMA
pos --;
}
Bueno, espero que a alguien le sirva, llevo todo el dia rallado con este lenguaje, mirando mil tutoriales en ingles y en ninguno me aclaraba nada sobre los arrays, al final, despues de destripar mil indicadores, ya consigo que se dibuje que era lo mas dificil... jeje y lo mejor, ya se como rula...
Avatar de Usuario
nstrader
Mensajes: 257
Registrado: 24 Mar 2007 19:33

Mensaje por nstrader »

Un saludo YsEkU, llego un poco tarde, pero en fin, veo que aprendes resolviendo errores que es como mejor se aprende, estoy trabajando en la programación de la estrategia de scalp, que requiere una programación muy compleja, espero tus comentarios:

http://x-trader.net/phpBB2/viewtopic.ph ... &start=210

Un saludo
Si te ha gustado este hilo del Foro, ¡compártelo en redes!


Responder

Volver a “Metatrader 4”