Discusión sobre el artículo "Funciones para la Gestión de fondos en un Expert Advisor"

 

Artículo publicado Funciones para la Gestión de fondos en un Expert Advisor:

El desarrollo de estrategias de trading se basa inicialmente en la búsqueda de pautas para entrar y salir del mercado, así como en el mantenimiento de las posiciones. Si somos capaces de poner algunas pautas en forma de reglas para el trading automatizado, entonces se encargará el trader del cálculo del volumen de las posiciones, el valor de los diferenciales, así como el mantenimiento de un nivel seguro de fondos hipotecarios para garantizar las posiciones abiertas en el modo automatizado. En este artículo usaremos el lenguaje MQL5 para realizar ejemplos sencillos sobre cómo llevar a cabo estos cálculos.

Autor: MetaQuotes Software Corp.

[Eliminado]  

Oh, aquí está el MÁS delicioso en la "Sala de Lectura" apareció, vamos a leer qué y cómo ...

Especialmente de tal autor. :)

 

También me gustaría ver la función de cálculo de swaps. Hay 5 tipos de swaps, y cada uno tiene sus matices.

A veces no se llega al lugar correcto por el método científico.

He encontrado tres variantes por selección, pero todavía hay SYMBOL_SWAP_MODE_BY_INTEREST. No puedo comprobarlo porque no puedo encontrar un corredor con este método de cálculo.

Por favor - si hay una posibilidad de publicar en CodeBase la función de cálculo de swap para la moneda y el lote especificados - estaremos agradecidos.

[Eliminado]  
sergeev:

También me gustaría ver la función de cálculo de swaps. Hay 5 tipos de swaps, y cada uno tiene sus matices.

A veces no se llega al lugar correcto por el método científico.

He encontrado tres variantes por selección, pero todavía hay SYMBOL_SWAP_MODE_BY_INTEREST. No puedo comprobarlo porque no puedo encontrar un corredor con este método de cálculo.

Por favor - si hay una posibilidad de publicar en CodeBase la función de cálculo de swap para la moneda y el lote especificados - estaremos agradecidos.

+1. O mejor aún, implementar todo este cálculo en la biblioteca estándar, y vamos a ver cómo y qué hacer correctamente ...
 
Creo que lo pone en la documentación. y en mcl4 era igual solo cambiaron las formulas.
 
Если даже торговля на данном счете разрешена, то это еще не означает, что эксперт имеет право торговать. Чтобы проверить, разрешено ли торговать эксперту, пишем:

¿Cuáles son estos casos, el comercio está permitido, pero el Asesor Experto no se le permite el comercio?

¿Se trata de la prohibición del broker o de la configuración del terminal?

Por analogía con 4 : - " ...si el experto está autorizado a negociar y el flujo para las operaciones comerciales es libre..."

es decir, IsTradeAllowed = IsExpertEnabled + IsTradeContextBusy ??? ?

IsTradeAllowed - Документация на MQL4
  • docs.mql4.com
IsTradeAllowed - Документация на MQL4
 

¡Interesante y necesario artículo! Traté de comprobar las fórmulas en este artículo y esto es lo que obtuve. Tomemos EURGBP como ejemplo. La divisa de la cuenta está en dólares. El par de divisas más cercano es EURUSD, es decir, mode=true. ¿Hasta aquí todo bien? Utilizamos las fórmulas del artículo para determinar el margen necesario:

   if(direction==POSITION_TYPE_BUY)
     {
      //--- cita inversa
      if(mode)
        {
         //--- cuenta al precio de compra para la cotización inversa
         calc_price=tick.ask;
         answer=lot*lot_size*calc_price;
        }
...
if(direction==POSITION_TYPE_SELL)
     {
      //--- cita inversa
      if(mode)
        {
         //--- cuenta por precio de venta para la cotización inversa
         calc_price=tick.bid;
         answer=lot*lot_size*calc_price;
        }

Es decir, al comprar, según el artículo, el margen requerido debe ser:

COMPRA: margen = lote*tamaño_lote*tick_ask/apalancamiento

y al vender:

VENDER: margen = lote*tamaño_lote*tick_puja/apalancamiento

Codificamos estas fórmulas en un EA sencillo e intentamos vender y comprar EURUSD con fondos bajos por adelantado para que el metatrader nos diga qué margen es necesario. Al mismo tiempo emitimos nuestro margen calculado. Obtenemos estos mensajes del probador:

2010.07.06 16:34:01 Core 1 no enough money [instant sell 0.10 EURGBP at 0.82227 sl: 0.83296 tp: 0.79796]
2010.07.06 16:34:01 Core 1 PrevBalance: 10.00, PrevEquity 10.00, PrevMargin: 0.00, NewMargin: 122.91, NewFreeMargin: -112.91 - margen calculado por el probador
2010.07.06 16:34:01 Core 1 Error: no hay dinero suficiente. Margen libre = 10, margen requerido = 122.899 - margen calculado por nosotros.


2010.07.06 16:34:01 Core 1 no hay suficiente dinero [instant buy 0.10 EURGBP at 0.81247 sl: 0.80191 tp: 0.82988]
2010.07.06 16:34:01 Core 1 PrevBalance: 10.00, PrevEquity 10.00, PrevMargin: 0.00, NewMargin: 122.72, NewFreeMargin: -112.72 - margen calculado por el probador
2010.07.06 16:34:01 Core 1 Error: no hay dinero suficiente. Margen libre = 10, margen requerido = 122.737 - margen calculado por nosotros.

Hay una diferencia. Ahora cambiamos las fórmulas para calcular el margen necesario a

COMPRA: margen = lote*tamaño_lote*puja/apalancamiento

VENTA: margen = lote*tamaño_lote*tick_demanda/apalancamiento

lo que contradice el artículo. Recibimos tales mensajes del probador:

2010.07.06 16:39:49 Core 1 no enough money [instant sell 0.10 EURGBP at 0.82227 sl: 0.83296 tp: 0.79796]
2010.07.06 16:39:49 Core 1 PrevBalance: 10.00, PrevEquity 10.00, PrevMargin: 0.00, NewMargin: 122.91, NewFreeMargin: -112.91 - margen calculado por el probador
2010.07.06 16:39:49 Core 1 Error: no hay dinero suficiente. Margen libre = 10, margen requerido = 122.911 - margen calculado por nosotros

2010.07.06 16:39:49 Core 1 no hay suficiente dinero [instant buy 0.10 EURGBP at 0.81247 sl: 0.80191 tp: 0.82988]
2010.07.06 16:39:49 Core 1 PrevBalance: 10.00, PrevEquity 10.00, PrevMargin: 0.00, NewMargin: 122.72, NewFreeMargin: -112.72 - margen calculado por el probador
2010.07.06 16:39:49 Core 1 Error: no hay suficiente dinero. Margen libre = 10, margen requerido = 122.722 - margen calculado por nosotros
.

Aquí el margen calculado por el Asesor Experto utilizando el método "incorrecto" es exactamente el mismo que el margen calculado por el probador. Resulta que tanto en el comprobador como en el artículo se reordenan el bid y el ask al calcular cruces como el EURGBP. ¿Quién tiene razón: el artículo o el comprobador?

 

El artículo es bueno y útil para mí.

Tanto para la comprensión como para ahorrar tiempo. Gracias

No entiendo lo que conseguimos con esta función.

¿No debería dividirse el valor del contrato por el apalancamiento?

Документация по MQL5: Стандартные константы, перечисления и структуры / Состояние окружения / Информация об инструменте
Документация по MQL5: Стандартные константы, перечисления и структуры / Состояние окружения / Информация об инструменте
  • www.mql5.com
Стандартные константы, перечисления и структуры / Состояние окружения / Информация об инструменте - Документация по MQL5
 
SHOOTER777:

El artículo es bueno y útil para mí.

Tanto para la comprensión como para ahorrar tiempo. Gracias

No entiendo lo que conseguimos con esta función.

¿No debería dividirse el valor del contrato por el apalancamiento?

No lo entendí a la primera. Tardé una hora en averiguar por qué el resultado era 100 veces diferente del real.
 
SHOOTER777:

Si el importe del margen requerido, ¿no debería dividirse el valor del contrato por el apalancamiento?

El valor del contrato no es el importe del margen. El código divide entonces el valor por el apalancamiento para obtener el importe del margen.
 
en el par EURUSD en su demo... con fondos disponibles de 10 000 no puedo abrir con lote 10... ¿por qué? ¿por qué? y ¿cómo calcular el lote máximo posible en función de los fondos disponibles. gracias.