Iceman; pásate por
http://docs.mql4.com/ (algo de inglés) y verás que los comandos (o como se digan las instrucciones) no son muchos...
Lo único es entender algo la estructura de los "arrays", "buffers" y la del script en sí.
Si dices que sabias de Basic, no tiene porque costarte... una vez tienes el esqueleto no dejan de ser "if" y "while"; y poquita cosa más.
############################# Tutorial ultracondensado de mql4; por cu6yu4 (rima

).
Si queremos que el script (indicador o script) ( no hablaremos de experts por que el instructor está algo verde en eso; anque lo que sigue vale para todo) tenga un dato(vector) por cada barra del gráfico(u otros gráficos/historiales) deberemos utilizar un "Buffer"... éste lo que hace es almacenar en memoria dichos datos... y si se declara oportunamente, el script los tomará para graficar en pantalla.
Si parametrizamos el Buffer para que se dibuje en forma de línea, y para cada barra nos da un punto(vector unidimensional en este caso) previamente almacenado ... pues veremos en pantalla una línea o polilínea continua.
El tema reside en que debemos ir asociando cada uno de los valores que nos dan nuestras fórmulas(lo que queremos mostrar con el indicador/script) con cada posición(1 por barra) del Buffer... Es decir, al buffer hay que decirle que información debe almacenar para la barra 25, para la barra 26, etc... así con las miles...
Asociamos un dato de un barra al buffer con nombrebuffer[númerobarra]...si el buffer se llama Precio...Precio[2]=25 almacenará 25 como dato para la barra 2... pero númerodebarra debe ir cambiando para que el buffer llegue a captar el dato para todas las barras.
Antes expliquemos como se numeran las barras... la última barra (aún en formación habitualmente) es la barra 0... la penúltima la 1, etc... Esto significa que a cada nueva barra cambia la asignación de numérica... la que antes era la 3 ahora es la 4...
Si númerodebarra debe cambiar para que el buffer capte todas las barras(sus datos asociados), entonces no podemos escribir formulaciones estáticas del tipo Buffer[23]... sino Buffer[X]... donde X será una variable (previamente definida. En este caso una variable numérica)... Para ir cambiando la X y que el buffer almacene para esa barra referida, utilizamos operadores(o como se digan) cíclicos del tipo while().
Ejemplo:
-----------------------------------------------------------------
...
double BufferTrader[];
...
...
int X=5;
while(X>0)
{
BufferTrader[X]=Close[X]-Close[X+1];
X--;
}
...
-----------------------------------------------------------------
Hemos definido(sólo se ve un cacho) el buffer BufferTrader(double para datos numéricos que pudieran tener decimales) y la variable X(int para numéricos naturales)...
While se repetirá(lo encorchetado) en tanto X sea mayor de 0(siguiendo lo de su paréntesis)... el primer BufferTrader[X]=Close[X]-Close[X+1];... tendrá X=5...su valor será cierre de la barra 5 menos cierre de la barra 6...
X--; sirve para restar 1 a X... como X=X-1;... Al cambiar la X el nuevo ciclo while se efectuará con X=4... y el buffer guardará el valor para la barra 4... este valor será cierre de la barra 4 menos cierre de la barra 5...
Éste tipo de asignación vale con los buffers y con otros asuntos... como crear objetos(dibujar) en pantalla...
Y con esto y algo más ya tenemos una indicador(script no puede ser; por ilógico) que nos grafica las diferencias entre cierres... Esperen el segundo fascículo...