Hot Keys en MT5

 

Buenas tardes a todos. 

Alguien sabrá cómo configurar MT5 para operar en compra o venta desde el teclado? Entiendo que esto se llama Hot Keys. Quiero operar un Scalping de 2 minutos y no me sirve entrar en Nueva Orden - Comprar - Aceptar. 

Muchas gracias por su apoyo.

 

Adjunto los dos SCRIPTS para orden de compra, venta y cierre de posicion, los SCRIPS los puedes editar para configurar la cantidad de la orden. 

Debes añadir los scrips a MT5 y luego configurar HotKeys para ejecutarlo desde el teclado, de esa manera colocaras ordenes directamente desde el teclado. 

ORDEN DE VENTA: 

// SCRIPT para ejecutar orden de VENTA. (configurar atajo de teclado para ejecutar el script)

// ENTRADAS DEL SCRIPT: INGRESAR LOS DATOS PARA CONFIGURAR la orden (solo cambiar los parametros de entrada).


     // GESTION FRACCIONARIA 
int riesgo = 10;           // Tamaño de orden proporcional respecto al apalancamiento y patrimonio. 
int valorlote = 100000;    // Valor del lote segun broker/cuenta.
int leverage = 100;        // Apalancamiento de la cuenta.
      // GESTION FIJA 
bool lotfijo = false;      // "false": El tamaño de la orden es automatico dependiendo del tamaño de la cuenta y riesgo elegido,, "true": El tamaño es fijo. 
double sizelotfijo= 0.1;   // Tamano de la orden para gestion fija. 

// finalización de parametros.

void OnStart()
{
if(lotfijo==false)
 {

double lots;

lots = (((((AccountInfoDouble(ACCOUNT_BALANCE))*leverage)/100)*riesgo)/valorlote);

double lots2;

lots2 = (DoubleToString(lots,2));

   MqlTradeRequest request={0};
   MqlTradeResult  result={0};

   request.action   =TRADE_ACTION_DEAL;                     
   request.symbol   =Symbol();                             
   request.volume   =lots2;                               
   request.type     =ORDER_TYPE_SELL;   
   request.type_filling =ORDER_FILLING_IOC;                     
   request.price    =SymbolInfoDouble(Symbol(),SYMBOL_ASK);
   request.deviation=5;                                     

   if(!OrderSend(request,result))
      PrintFormat("OrderSend error %d",GetLastError());     

   PrintFormat("retcode=%u  deal=%I64u  order=%I64u",result.retcode,result.deal,result.order);
  }
 else
   {

   MqlTradeRequest request={0};
   MqlTradeResult  result={0};

   request.action   =TRADE_ACTION_DEAL;                     
   request.symbol   =Symbol();                             
   request.volume   =sizelotfijo;                               
   request.type     =ORDER_TYPE_SELL;   
   request.type_filling =ORDER_FILLING_IOC;                     
   request.price    =SymbolInfoDouble(Symbol(),SYMBOL_ASK);
   request.deviation=5;                                     

   if(!OrderSend(request,result))
      PrintFormat("OrderSend error %d",GetLastError());     

   PrintFormat("retcode=%u  deal=%I64u  order=%I64u",result.retcode,result.deal,result.order);
   }
}
  

ORDEN DE COMPRA:

// SCRIPT para ejecutar orden de COMPRA. (configurar atajo de teclado para ejecutar el script)

// ENTRADAS DEL SCRIPT: INGRESAR LOS DATOS PARA CONFIGURAR la orden (solo cambiar los parametros de entrada).


     // GESTION FRACCIONARIA 
int riesgo = 10;           // Tamaño de orden proporcional respecto al apalancamiento y patrimonio. 
int valorlote = 100000;    // Valor del lote segun broker/cuenta.
int leverage = 100;        // Apalancamiento de la cuenta.
      // GESTION FIJA 
bool lotfijo = false;      // "false": El tamaño de la orden es automatico dependiendo del tamaño de la cuenta y riesgo elegido,, "true": El tamaño es fijo. 
double sizelotfijo= 0.1;   // Tamano de la orden para gestion fija. 

// finalización de parametros.

void OnStart()
{
if(lotfijo==false)
 {

double lots;

lots = (((((AccountInfoDouble(ACCOUNT_BALANCE))*leverage)/100)*riesgo)/valorlote);

double lots2;

lots2 = (DoubleToString(lots,2));

   MqlTradeRequest request={0};
   MqlTradeResult  result={0};

   request.action   =TRADE_ACTION_DEAL;                     
   request.symbol   =Symbol();                             
   request.volume   =lots2;                               
   request.type     =ORDER_TYPE_BUY;   
   request.type_filling =ORDER_FILLING_IOC;                     
   request.price    =SymbolInfoDouble(Symbol(),SYMBOL_ASK);
   request.deviation=5;                                     

   if(!OrderSend(request,result))
      PrintFormat("OrderSend error %d",GetLastError());     

   PrintFormat("retcode=%u  deal=%I64u  order=%I64u",result.retcode,result.deal,result.order);
  }
 else
   {

   MqlTradeRequest request={0};
   MqlTradeResult  result={0};

   request.action   =TRADE_ACTION_DEAL;                     
   request.symbol   =Symbol();                             
   request.volume   =sizelotfijo;                               
   request.type     =ORDER_TYPE_BUY;   
   request.type_filling =ORDER_FILLING_IOC;                     
   request.price    =SymbolInfoDouble(Symbol(),SYMBOL_ASK);
   request.deviation=5;                                     

   if(!OrderSend(request,result))
      PrintFormat("OrderSend error %d",GetLastError());     

   PrintFormat("retcode=%u  deal=%I64u  order=%I64u",result.retcode,result.deal,result.order);
   }
}
  

CIERRE:

#include <Trade\Trade.mqh>

CTrade trade;

void OnStart()
  {

   trade.PositionClose(Symbol());
  }
Archivos adjuntos:
compra.ex5  13 kb
venta.ex5  12 kb
close.ex5  53 kb
 
sjmotos:

Adjunto los dos SCRIPTS para orden de compra, venta y cierre de posicion, los SCRIPS los puedes editar para configurar la cantidad de la orden. 

Debes añadir los scrips a MT5 y luego configurar HotKeys para ejecutarlo desde el teclado, de esa manera colocaras ordenes directamente desde el teclado. 

ORDEN DE VENTA: 

ORDEN DE COMPRA:

CIERRE:



Compañero mil gracias.


Debo confesar que no se NADA de programación. 


¿Me pudiera ayudar con todo esto? ¿Cómo configuro, dónde entro, qué debo transcribir, etc?


Se lo agradecería tanto.

 
// ENTRADAS DEL SCRIPT: INGRESAR LOS DATOS PARA CONFIGURAR la orden (solo cambiar los parametros de entrada).


     // GESTION FRACCIONARIA 
int riesgo = 10;           // Tamaño de orden proporcional respecto al apalancamiento y patrimonio. 
int valorlote = 100000;    // Valor del lote segun broker/cuenta.
int leverage = 100;        // Apalancamiento de la cuenta.
      // GESTION FIJA 
bool lotfijo = false;      // "false": El tamaño de la orden es automatico dependiendo del tamaño de la cuenta y riesgo elegido,, "true": El tamaño es fijo. 
double sizelotfijo= 0.1;   // Tamano de la orden para gestion fija. 

// finalización de parametros.

De nada, ya lo tenia hecho ya que lo necesité hace mucho tiempo. 

Lo que debes editar es lo que ahora se marcara con "XX" (sin comillas): (SOLO DEBES EDITAR LO QUE ESTA CON "XX", no debes borrar ";"), ni editar nada mas. 

     // GESTION FRACCIONARIA 
int riesgo = XX;           // Tamaño de orden proporcional respecto al apalancamiento y patrimonio. 
int valorlote = XX;    // Valor del lote segun broker/cuenta.
int leverage = XX;        // Apalancamiento de la cuenta.
      // GESTION FIJA 
bool lotfijo = XX;      // "false": El tamaño de la orden es automatico dependiendo del tamaño de la cuenta y riesgo elegido,, "true": El tamaño es fijo. 
double sizelotfijo= XX;   // Tamano de la orden para gestion fija. 

El "riesgo" es el tamaño de la orden (fracción) respecto al apalancamiento de la cuenta y el balance, se calcula automáticamente respecto al balance de la cuenta, si quieres que la orden sea siempre del mismo tamaño debes dejar en "true" el "lotfijo" y ingresar el tamaño de orden en "sizelotfijo" (en formato de  lotes, 0.01, 0.1, 0.15, 2.2, etc)

Los scrips los puedes editar con el Metaeditor de MT5, cabe mencionar que el script debe ser editado correctamente, debes ingresar los datos correctos de tu cuenta o sino la orden sera calculada de manear INCORRECTA, primero cuenta demo para que veas como cambia respecto a la configuración. 

 

Apreta Alt+t y te sale el cartel de compra venta con un click! 

Tambien desde Herramientas > opciones > operaciones podes habilitar el trading con un click donde no te pide confirmación!


Saludos

 

mil gracias amigo , todo este tiempo me ha funcionado perfecto. Solo una pregunta: tanto en mi orden de compra como de venta me permite agregar tres operaciones máximo con 0,09 de lotaje, pero si quiero entrar con un lotaje de 0,10 o mayor en mas de dos operaciones ya no me deja. solo me permite abrir dos operaciones. Es como si hubiese alguna restricción para la cantidad de entradas después de 0,10 de lotaje. estoy practicando en una cuenta de $1.000 con un apalancamiento de 100.

para explicarme mejor este es un ejemplo:

en la divisa del usd/chf, yo quiero comprar 5 lotes , cada uno de 0,10. Pero en la practica real solo me deja comprar un maximo de  2 lotes. 

Me podrías ayudar por favor a configurarlo. Por mas que he intentado no he podido.

(adjunto imagen)

Archivos adjuntos:
fghj5.jpg  194 kb
 
Muy buen material, excelente
 

Buenas. excelente material gracias!!. Tengo un problemilla, a ver si pueden ayudarme.

No puedo hacerlo andar en el broker de Deriv, en el activo Volatiliity 50. Trate de modificar el lotaje de Metaeditor y me salta error en al compliar sobre como los ingreso. ( no tengo conocimientos de programacion)

Yo necesitaría poder hacer compras o ventas desde el teclado en este orden de lotaje : 20,60,100,140,180,220,260,300 etc...

Y poder hacer un cierre total de todas las posiciones.

Desde ya, muchas gracias por su ayuda!

Razón de la queja: