Mira cómo descargar robots gratis
¡Búscanos en Telegram!
Pon "Me gusta" y sigue las noticias
¿Es interesante este script?
Deje un enlace a él, ¡qué los demás también lo valoren!
¿Le ha gustado el script?
Evalúe su trabajo en el terminal MetaTrader 5
Asesores Expertos

Money Fixed Risk - Asesor Experto para MetaTrader 5

Visualizaciones:
1461
Ranking:
(23)
Publicado:
2017.02.08 15:18
Actualizado:
2018.02.15 17:30
¿Necesita un robot o indicador basado en este código? Solicítelo en la bolsa freelance Pasar a la bolsa

Un ejemplo para calcular el tamaño del lote dependiendo del riesgo para la operación.

¿Cómo funciona eso?

Se establece el porcentaje del riesgo para la operación (parámetro % risk) y Stop Loss (parámetro StopLoss (in pips)). Así se determinan los parámetros de una posible pérdida del depósito.

Parámetros de entrada Money Fixed Risk 

El siguiente ciclo ha sido organizado para la simulación del trading:

   static long count=-21;
   if(count%980==0) // we pass 980 tics
     {
      //--- getting lot size for open long position (CMoneyFixedRisk)

El valor inicial count=-21 se establece exclusivamente para el «calentamiento» del Probador de Estrategias. Luego, se calcula el remanente de la división de la variable count por el número 980 (es un número cogido simplemente a la bola). Es decir, cada 980 ticks se realiza la entrada en el ciclo del cálculo del lote tomando en cuenta los riesgos para la operación.

Es el propio ciclo del cálculo del lote dependiendo del riesgo para la operación (cálculo para la posición Buy):

Primer paso

      //--- getting lot size for open long position (CMoneyFixedRisk)
      double check_open_long_lot=m_money.CheckOpenLong(m_symbol.Ask(),m_symbol.Bid()-ExtStopLoss);
      Print("CheckOpenLong: ",DoubleToString(check_open_long_lot,2),
            ", Balance: ",    DoubleToString(m_account.Balance(),2),
            ", Equity: ",     DoubleToString(m_account.Equity(),2),
            ", FreeMargin: ", DoubleToString(m_account.FreeMargin(),2));
      if(check_open_long_lot==0.0)
         return;

recibimos el tamaño del lote calculado para la posición Buy de acuerdo con StopLoss en la variable check_open_long_lot, usando el método CheckOpenLong de la clase CMoneyFixedRisk

      double check_open_long_lot=m_money.CheckOpenLong(m_symbol.Ask(),m_symbol.Bid()-ExtStopLoss);

En el registro de los EAs se muestran los siguientes parámetros: tamaño calculado del lote dependiendo del riesgo para la operación, balance de la cuenta comercial en el momento del cálculo, tamaño de fondos propios (Equity) en el momento del cálculo, tamaño del margen libre en el momento del cálculo:

      Print("CheckOpenLong: ",DoubleToString(check_open_long_lot,2),
            ", Balance: ",    DoubleToString(m_account.Balance(),2),
            ", Equity: ",     DoubleToString(m_account.Equity(),2),
            ", FreeMargin: ", DoubleToString(m_account.FreeMargin(),2));

Si el cálculo ha devuelto el valor "0.0", salimos:

      if(check_open_long_lot==0.0)
         return;

Segundo paso

Recibimos el tamaño del lote para la posición Buy (que se cubre con sus fondos) en la variable chek_volime_lot, usando el método CheckVolume de la clase CTrade. . Aquí enviamos los siguientes parámetros: m_symbol.Name() — nombre del símbolo, check_open_long_lot — volumen de la posición que queremos abrir (este parámetro lo hemos calculado antes): 

      //--- check volume before OrderSend to avoid "not enough money" error (CTrade)
      double chek_volime_lot=m_trade.CheckVolume(m_symbol.Name(),check_open_long_lot,m_symbol.Ask(),ORDER_TYPE_BUY);

Tercer paso

Si el método CheckVolume ha devuelto algo distinto de "0.0", entonces comprobamos la condición: tenemos fondos suficientes para la apertura de la posición del lote calculado tomando en cuanta el riesgo.

      if(chek_volime_lot!=0.0)
         if(chek_volime_lot>=check_open_long_lot)
            m_trade.Buy(chek_volime_lot,NULL,m_symbol.Ask(),m_symbol.Bid()-ExtStopLoss,m_symbol.Bid()+ExtStopLoss);
      else
         Print("CMoneyFixedRisk lot = ",DoubleToString(check_open_long_lot,2),
               ", CTrade lot = ",DoubleToString(chek_volime_lot,2));

Si hay fondos suficientes, abrimos las posiciones, si faltan, en el registro de los EAs se muestra el tamaño calculado del lote considerando el riesgo para la operación (DoubleToString(check_open_long_lot,2)) y el tamaño del lote para el que hay fondos suficientes (DoubleToString(chek_volime_lot,2)).

Ejemplo (para probar en el Probados de Estrategias, seleccione EURUSD, M1, intervalo de la prueba de 2016.11.28, depósito $3000):

Money Fixed Risk.png 

La posición Buy ha sido abierta (impresión del Registro del Probador) — el tamaño calculado del lote considerando el riesgo para la operación es de 2,23.

Money Fixed Risk (EURUSD,M1)    2016.11.28 00:03:24   CheckOpenLong: 2.23, Balance: 3000.00, Equity: 3000.00, FreeMargin: 3000.00
Trade   2016.11.28 00:03:37   instant buy 2.23 EURUSD at 1.06076 sl: 1.05942 tp: 1.06142 (1.06042 / 1.06076 / 1.06042)
Trades  2016.11.28 00:03:37   deal #2 buy 2.23 EURUSD at 1.06076 done (based on order #2)
Trade   2016.11.28 00:03:37   deal performed [#2 buy 2.23 EURUSD at 1.06076]
Trade   2016.11.28 00:03:37   order performed buy 2.23 at 1.06076 [#2 buy 2.23 EURUSD at 1.06076]
Money Fixed Risk (EURUSD,M1)    2016.11.28 00:03:37   CTrade::OrderSend: instant buy 2.23 EURUSD at 1.06076 sl: 1.05942 tp: 1.06142 [done at 1.06076]
Money Fixed Risk (EURUSD,M1)    2016.11.28 00:48:32   CheckOpenLong: 2.60, Balance: 3000.00, Equity: 2828.29, FreeMargin: 462.80
Money Fixed Risk (EURUSD,M1)    2016.11.28 00:48:32   CMoneyFixedRisk lot = 2.60, CTrade lot = 0.43

Trade   2016.11.28 00:53:15   stop loss triggered #2 buy 2.23 EURUSD 1.06076 sl: 1.05942 tp: 1.06142 [#3 sell 2.23 EURUSD at 1.05942]
Trades  2016.11.28 00:53:15   deal #3 sell 2.23 EURUSD at 1.05942 done (based on order #3)
Trade   2016.11.28 00:53:15   deal performed [#3 sell 2.23 EURUSD at 1.05942]
Trade   2016.11.28 00:53:15   order performed sell 2.23 at 1.05942 [#3 sell 2.23 EURUSD at 1.05942]
Tester  stopped by user
Tester  final balance 2701.18 USD

al entrar la segunda vez en el ciclo, ha resultado que falta dinero para la apertura de la segunda poición.

Al final, la posición fue cerrada por Stop Loss con una pérdida de 298.82:

Money Fixed Risk history

Eso casi corresponde al riesgo de 10% del depósito de 3 000.

Traducción del ruso realizada por MetaQuotes Ltd
Artículo original: https://www.mql5.com/ru/code/17199

Hercules A.T.C. 2006 Hercules A.T.C. 2006

Este Asesor Experto tradea usando la ruptura de la media móvil. Se usan los siguientes indicadores: dos iMA (Moving Average, MA), iRSI(Relative Strength Index, RSI) y dos iEnvelopes (Envelopes).

The Puncher The Puncher

Trading a base de los indicadores: iStochastic (Stochastic Oscillator) y iRSI (Relative Strength Index, RSI).

ShowImportantParams ShowImportantParams

Muestra unos importantes parámetros del símbolo y de la cuenta.

BigBarSound BigBarSound

Este Asesor Experto salta una señal o alerta de sonido cuando se supera un determinado tamaño de la vela.