Comenzaré con un include sencillito que tengo para mis programas. Yo lo suelo ejecutar al inicio de los Expert para saber la información de la cuenta y del par antes de que empiece. Es una función y devuelve el entero devuelto a su vez por el MessageBox. Ese entero me permite controlar si quiero continuar con el expert o cancelar tras ver la info.
La función controla un parámetro de entrada para elegir el mensaje con 1 ó 2 botones: 1 ó 2 botones.
msgInfoAll.mqh
Código: Seleccionar todo
//+------------------------------------------------------------------+
//| msgInfoAll.mq4 |
//| Copyright © 2008, MetaQuotes Software Corp. |
//| http://www.metaquotes.net |
//+------------------------------------------------------------------+
#property copyright "Copyright © 2008, MetaQuotes Software Corp."
#property link "http://www.metaquotes.net"
//+------------------------------------------------------------------+
//| El archivo mq4 que utilice este include debe incluir antes a |
//| WinUser32.mqh. |
//| |
//| int msgInfo(int botones=1) |
//| Entrada: int botones - 1 para botón OK (default). |
//| <> 1 para botones OK-CANCEL. |
//| Salida: |
//| Lanza un MessageBox con la información de la cuenta y del |
//| subyacente donde se ejecute el código que la llame. |
//| Devuelve el entero devuelto por la función MessageBox(). |
//+------------------------------------------------------------------+
int msgInfoAll(int botones=1){
//----
int flagButton;
if (botones==1) flagButton=MB_OK;
else flagButton=MB_OKCANCEL;
string maginCallType=StringConcatenate(" ",AccountCurrency());
if(AccountStopoutMode()==0) maginCallType=" %";
string swapType;
switch(MarketInfo(Symbol(),MODE_SWAPTYPE)){
case 0:
swapType=" points";
break;
case 1:
swapType=StringConcatenate(" ",AccountCurrency());
break;
case 2:
swapType=" by interest";
break;
default:
swapType=" in the margin currency";
break;
}
string mensaje=StringConcatenate("\nSímbolo: ",Symbol(),"\n\n");
mensaje=StringConcatenate(mensaje,"--------------------------------------
-------------------------------------------------------------------------\n");
mensaje=StringConcatenate(mensaje,"HORARIO DE MERCADO","\n");
mensaje=StringConcatenate(mensaje,"Trade disponible: ",MarketInfo(Symbol(),MODE_TRADEALLOWED),"\t\t");
mensaje=StringConcatenate(mensaje,"Apertura: ",MarketInfo(Symbol(),MODE_STARTING),"\t\t");
mensaje=StringConcatenate(mensaje,"Cierre: ",MarketInfo(Symbol(),MODE_EXPIRATION),"\n\n");
mensaje=StringConcatenate(mensaje,"------------------------------------------
---------------------------------------------------------------------\n");
mensaje=StringConcatenate(mensaje,"SWAP","\n");
mensaje=StringConcatenate(mensaje,"SwapLong: ",MarketInfo(Symbol(),MODE_SWAPLONG),"\t\t");
mensaje=StringConcatenate(mensaje,"SwapShort: ",MarketInfo(Symbol(),MODE_SWAPSHORT),"\t\t");
mensaje=StringConcatenate(mensaje,"SwapTipo: ",swapType," \n\n");
mensaje=StringConcatenate(mensaje,"-----------------------------------------
----------------------------------------------------------------------\n");
mensaje=StringConcatenate(mensaje,"LOTES","\n");
mensaje=StringConcatenate(mensaje,"Tamaño del Lote: ",MarketInfo(Symbol(),MODE_LOTSIZE),"\t");
mensaje=StringConcatenate(mensaje,"Lotes máximos: ",MarketInfo(Symbol(),MODE_MAXLOT),"\t");
mensaje=StringConcatenate(mensaje,"Lote Step: ",MarketInfo(Symbol(),MODE_LOTSTEP),"\n");
mensaje=StringConcatenate(mensaje,"Margen mínimo lote: ",MarketInfo(Symbol(),MODE_MARGINREQUIRED),"\t");
mensaje=StringConcatenate(mensaje,"Margen mínimo init: ",MarketInfo(Symbol(),MODE_MARGININIT),"\t");
mensaje=StringConcatenate(mensaje,"Margen hedged por lote: ",MarketInfo(Symbol(),MODE_MARGINHEDGED)," \n\n");
mensaje=StringConcatenate(mensaje,"---------------------------------------------
------------------------------------------------------------------\n");
mensaje=StringConcatenate(mensaje,"DISTANCIAS","\n");
mensaje=StringConcatenate(mensaje,"Distancia mínima Stop: ",MarketInfo(Symbol(),MODE_STOPLEVEL),"\t");
mensaje=StringConcatenate(mensaje,"Distancia mínima cambios: ",MarketInfo(Symbol(),MODE_FREEZELEVEL),"\n");
mensaje=StringConcatenate(mensaje,"Spread (pips): ",MarketInfo(Symbol(),MODE_SPREAD),"\t\t");
mensaje=StringConcatenate(mensaje,"Point: ",MarketInfo(Symbol(),MODE_POINT),"\t\t\t");
mensaje=StringConcatenate(mensaje,"Decimales: ",MarketInfo(Symbol(),MODE_DIGITS),"\n\n");
mensaje=StringConcatenate(mensaje,"------------------------------------------------
---------------------------------------------------------------\n");
mensaje=StringConcatenate(mensaje,"CUENTA","\n\n");
mensaje=StringConcatenate(mensaje,"Broker: ",AccountCompany(),"\n");
mensaje=StringConcatenate(mensaje,"Servidor: ",AccountServer(),"\n");
mensaje=StringConcatenate(mensaje,"Titular: ",AccountName(),"\t\t\t");
mensaje=StringConcatenate(mensaje,"Nº de cuenta: ",AccountNumber(),"\n\n");
mensaje=StringConcatenate(mensaje,"Moneda: ",AccountCurrency(),"\t\t");
mensaje=StringConcatenate(mensaje,"Margin-Call: ",AccountStopoutLevel(),maginCallType,"\t\t");
mensaje=StringConcatenate(mensaje,"Apalancamiento: 1:",AccountLeverage(),"\n\n");
mensaje=StringConcatenate(mensaje,"Balance: ",AccountBalance()," ",AccountCurrency(),"\t");
mensaje=StringConcatenate(mensaje,"Equidad: ",AccountEquity()," ",AccountCurrency(),"\t");
mensaje=StringConcatenate(mensaje,"Beneficios: ",AccountProfit()," ",AccountCurrency(),"\n");
mensaje=StringConcatenate(mensaje,"Crédito: ",AccountCredit()," ",AccountCurrency(),"\t\t");
mensaje=StringConcatenate(mensaje,"Margen: ",AccountMargin()," ",AccountCurrency(),"\t\t");
mensaje=StringConcatenate(mensaje,"Margen libre: ",AccountFreeMargin()," ",AccountCurrency(),"\n\n ");
mensaje=StringConcatenate(mensaje,"-------------------------------------------------
--------------------------------------------------------------\n\n ");
string tituloMsg = "Información General";
int checkMsg=MessageBox(mensaje,tituloMsg,flagButton|MB_ICONINFORMATION|MB_DEFBUTTON1);
//----
return(checkMsg);
}
Llamada a la función:
Código: Seleccionar todo
#include <WinUser32>
#include <msgInfoAll>
int init(){
//----
msgInfoAll(2);
//----
return(0);
}