Librería MQL del foro

Foro dedicado a todo lo relacionado con la versión 4 de la plataforma de Metaquotes.
Spirit
Mensajes: 4739
Registrado: 12 Jun 2008 19:49

Librería MQL del foro

Mensaje por Spirit »

Abro este hilo para que el que quiera cuelgue pequeñas aportaciones de código, enlaces a otros códigos o scripts/programas completos.

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);
}
Adjuntos
msgInfoAll.gif
Responder

Volver a “Metatrader 4”