Contestando al comentario del señor Anonimo, manuales del metatrader no dispongo de ellos, me apoyo en las explicaciones de las funciones que trae el programa, en la subcarpeta de Dictionary, por supuesto estan en ingles.
Si te vale unos manuales rudimentarios pincha en el siguiente enlace e iras a un blog que tiene dos manuales básicos traducidos al español.
Programado en Forex.A tu otra cuestion, mira la función:
double AccountFreeMargin( )
No se si te vale para lo que tú deseas.
Te dejo el código para que lo compiles del siguiente indicador, si modificas la variable esquina puedes dibujarlo en la esquina superior, inferior, derecha o izquierda. Al final dejo un enlace desde donde te puedes bajar el indicador.
//+------------------------------------------------------------------+
//| Margen libre.mq4 |
//| Copyright © 2009, MetaQuotes Software Corp. |
//| http://www.metaquotes.net |
//+------------------------------------------------------------------+
#property copyright "Copyright © 2009, MetaQuotes Software Corp."
#property link "http://www.metaquotes.net"
#property indicator_chart_window
//+------------------------------------------------------------------+
//| Custom indicator initialization function |
//+------------------------------------------------------------------+
extern int esquina=2;
double margenlibre;
double maximaganancia;
double maximaperdida;
double inicio;
int init()
{
//---- indicators
margenlibre=AccountFreeMargin();
inicio=margenlibre;
maximaganancia=0;
maximaperdida=0;
//----
return(0);
}
//+------------------------------------------------------------------+
//| Custom indicator deinitialization function |
//+------------------------------------------------------------------+
int deinit()
{
//----
//----
return(0);
}
//+------------------------------------------------------------------+
//| Custom indicator iteration function |
//+------------------------------------------------------------------+
int start()
{
int counted_bars=IndicatorCounted();
//----
//if(Fun_NuevaBarra())
// {
if(AccountFreeMargin() >= margenlibre)
maximaganancia=MathAbs(AccountFreeMargin()-margenlibre);
if(AccountFreeMargin() <= margenlibre) maximaperdida=MathAbs(AccountFreeMargin()-margenlibre); // } ObjectDelete("LabelMargen"); ObjectCreate("LabelMargen", OBJ_LABEL, 0,0,0,0,0); ObjectSet("LabelMargen", OBJPROP_CORNER, esquina); ObjectSet("LabelMargen", OBJPROP_XDISTANCE, 70); ObjectSet("LabelMargen", OBJPROP_YDISTANCE, 10); ObjectSet("LabelMargen",OBJPROP_COLOR,Red); ObjectSetText("LabelMargen","Margen libre",10,"Arial",Red); ObjectDelete("Margenlibre"); ObjectCreate("Margenlibre", OBJ_LABEL, 0,0,0,0,0); ObjectSet("Margenlibre", OBJPROP_CORNER, esquina); ObjectSet("Margenlibre", OBJPROP_XDISTANCE, 170); ObjectSet("Margenlibre", OBJPROP_YDISTANCE, 10); ObjectSet("Margenlibre",OBJPROP_COLOR,Red); ObjectSetText("Margenlibre",DoubleToStr(AccountFreeMargin(),4),10,"Arial",Red); ObjectDelete("LabelMaximaganancia"); ObjectCreate("LabelMaximaganancia", OBJ_LABEL, 0,0,0,0,0); ObjectSet("LabelMaximaganancia", OBJPROP_CORNER, esquina); ObjectSet("LabelMaximaganancia", OBJPROP_XDISTANCE, 70); ObjectSet("LabelMaximaganancia", OBJPROP_YDISTANCE, 30); ObjectSet("LabelMaximaganancia",OBJPROP_COLOR,Red); ObjectSetText("LabelMaximaganancia","Max. ganancia",10,"Arial",Green); ObjectDelete("Maximaganancia"); ObjectCreate("Maximaganancia", OBJ_LABEL, 0,0,0,0,0); ObjectSet("Maximaganancia", OBJPROP_CORNER, esquina); ObjectSet("Maximaganancia", OBJPROP_XDISTANCE, 170); ObjectSet("Maximaganancia", OBJPROP_YDISTANCE, 30); ObjectSet("Maximaganancia",OBJPROP_COLOR,Green); ObjectSetText("Maximaganancia",DoubleToStr(maximaganancia,2) ,10,"Arial",Green); ObjectDelete("LabelMaximaperdida"); ObjectCreate("LabelMaximaperdida", OBJ_LABEL, 0,0,0,0,0); ObjectSet("LabelMaximaperdida", OBJPROP_CORNER, esquina); ObjectSet("LabelMaximaperdida", OBJPROP_XDISTANCE, 70); ObjectSet("LabelMaximaperdida", OBJPROP_YDISTANCE, 50); ObjectSet("LabelMaximaperdida",OBJPROP_COLOR,Red); ObjectSetText("LabelMaximaperdida","Max. perdida",10,"Arial",Red); ObjectDelete("Maximaperdida"); ObjectCreate("Maximaperdida", OBJ_LABEL, 0,0,0,0,0); ObjectSet("Maximaperdida", OBJPROP_CORNER, esquina); ObjectSet("Maximaperdida", OBJPROP_XDISTANCE, 170); ObjectSet("Maximaperdida", OBJPROP_YDISTANCE, 50); ObjectSet("Maximaperdida",OBJPROP_COLOR,Red); ObjectSetText("Maximaperdida",DoubleToStr(maximaperdida,4),10,"Arial",Red); ObjectDelete("Labelinicio"); ObjectCreate("Labelinicio", OBJ_LABEL, 0,0,0,0,0); ObjectSet("Labelinicio", OBJPROP_CORNER, esquina); ObjectSet("Labelinicio", OBJPROP_XDISTANCE, 70); ObjectSet("Labelinicio", OBJPROP_YDISTANCE, 70); ObjectSet("Labelinicio",OBJPROP_COLOR,Red); ObjectSetText("Labelinicio","Inicio",10,"Arial",White); ObjectDelete("Inicio"); ObjectCreate("Inicio", OBJ_LABEL, 0,0,0,0,0); ObjectSet("Inicio", OBJPROP_CORNER, esquina); ObjectSet("Inicio", OBJPROP_XDISTANCE, 170); ObjectSet("Inicio", OBJPROP_YDISTANCE, 70); ObjectSet("Inicio",OBJPROP_COLOR,Red); ObjectSetText("Inicio",DoubleToStr(inicio,2),10,"Arial",Red); //---- return(0); } //+++++++ //Funcion para calcular una nueva vela bool Fun_NuevaBarra() { bool BarraNueva; static datetime NuevaHora=0; // Deteccion nueva hora BarraNueva=false; // 0 - misma vela ; 1- vela nueva if(NuevaHora!=Time[0]) // Si el hora es cero comienza vela { NuevaHora=Time[0]; BarraNueva=true; //Alert("Barra nueva"); //Avisa de una barra nueva } return(BarraNueva) ;
}
//+------------------------------------------------------------------+
Descargar el indicador:
Saludos a todos.
Nota: Es un indicador y como tal se deberá colocar en la carpeta indicators.