Professional Documents
Culture Documents
SCRIPT
SCRIPT
Qu es un script de MQL4?
El script es un programa que se ejecuta una vez para ejecutar una accin y
se eliminar inmediatamente despus de la ejecucin.
A diferencia de los asesores expertos que se llamarn cada vez que un
nuevo tick llega, el script
se ejecutar slo una vez.
Y a diferencia de los indicadores que tienen la capacidad para dibujar lneas
en el grfico, el script no tiene acceso a funciones del indicador.
En resumen, el script es un asesor experto que puede ejecutar slo una vez.
Vamos a crear nuestro primer script!
Wizards otra vez!
Con la ayuda del asistente para nuevo programa vamos a crear la columna
vertebral de nuestro script. Llega al asistente para nuevo programa,
elijiendo Nuevo en el men Archivo o haciendo clic en las teclas CTRL + N
(Figura 1).
Vamos a crear un script, as que elige el programa Script en el asistente y
haga clic en siguiente.
Esto abrir el segundo paso del asistente (Figura 2).
Rellene los campos Nombre, Autor y enlace con lo que se ve en la figura 2 (o
lo que quieras). A continuacin, haz clic en Finalizar.
Figure 2 Step 2
TakeProfit=250;
StopLoss=35;
//+------------------------------------------------------------------+
//| script program start function
|
//+------------------------------------------------------------------+
int start()
{
//---int total,cnt,err;
total = OrdersTotal();
for(cnt=0;cnt<total;cnt++)
{
OrderSelect(cnt, SELECT_BY_POS, MODE_TRADES);
if(OrderType()==OP_BUY)
// long position is opened
{
OrderModify(OrderTicket(),OrderOpenPrice(
), Bid-Point*StopLoss,Bid+Point*TakeProfit,0,Green);
err=GetLastError();
Print("error(",err,"): ",ErrorDescription(err));
Sleep(1000);
}
if(OrderType()==OP_SELL)
{
OrderModify(OrderTicket(),OrderOpenPrice(),Ask+Point*StopLos
s, Ask-Point*TakeProfit,0,Red);
err=GetLastError();
Print("error(",err,"): ",ErrorDescription(err));
Sleep(1000);
}
}
//---return(0);
}
//+------------------------------------------------------------------+
#include <stdlib.mqh>
TakeProfit=250;
StopLoss=35;
Aqu hemos declarado dos variables extern que el usuario puede establecer
desde la ventana de entradas del script (Figura 2) o puede dejar los valores
por defecto.
Vamos a utilizar estas variables en nuestra funcin start() para establecer los
valores de takeprofit y stoploss de todas las rdenes ya abiertas.
int start()
{
//---int total,cnt,err;
total = OrdersTotal();
....
}
Estamos dentro de la funcin start() que se llamar slo una vez al adjuntar
el script al grfico.
Hemos declarado tres variables enteras usando un mtodo de declaracin de
lnea nica. Luego asignamos el valor devuelto por la funcin OrdersTotal a la
variable total.
Como recordars la funcin OrdersTotal devuelve el nmero de rdenes
abiertas y pendientes.
for(cnt=0;cnt<total;cnt++)
{
....
}
if(OrderType()==OP_BUY)
{
....
}
OP_BUY,
OP_SELL,
OP_BUYLIMIT,
OP_BUYSTOP,
OP_SELLLIMIT
OP_SELLSTOP.
En lo anterior se chequea si el tipo de orden es una orden de compra o no.
Si se trata de una orden de compra, el cdigo dentro del bloque se ejecutar.
OrderModify(OrderTicket(),OrderOpenPrice(),
Bid-Point*StopLoss,Bid+Point*TakeProfit,0,Green);
Para ejecutar el script simplemente apuntalo con el ratn y haga doble clic en
l, o haga clic en el botn izquierdo del ratn y un men como se muestra en
la figura 4 aparece a continuacin, seleccione Ejecutar en el grfico.
La ventana de entrada (Figura 3) aparecer y usted puede establecer nuevos
valores para Stoploss y TakeProfit o dejar los valores por defecto.
Script_I (No funciona)
BUYv2 (Funciona)
11