Hot Keys en MT5

Para añadir comentario, por favor Autorícese o regístrese
Yennaro Claudio
25
Yennaro Claudio  

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.

sjmotos
102
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: 

// 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
Yennaro Claudio
25
Yennaro Claudio  
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.

sjmotos
102
sjmotos  
// 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. 

Nicolazbal
7
Nicolazbal  

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

Carlos Devia
22
Carlos Devia  

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
josemendoza80
8
josemendoza80  
Muy buen material, excelente
Para añadir comentario, por favor Autorícese o regístrese