Ayuda para actualizar a MetaTrader 5 sin pérdidas - página 15

 
Valmars:

...

Valery, dime qué significa esta sección de código en calc.mq5:

...

if(StringSubstr(Symbol(), 3, 3)=="CAD") { xxx=1.2175;   }
if(StringSubstr(Symbol(), 3, 3)=="JPY") { xxx=91.425;   }
if(StringSubstr(Symbol(), 3, 3)=="CHF") { xxx=1.1631;   }
if(StringSubstr(Symbol(), 3, 3)=="AUD") { xxx=1/0.6800; }
if(StringSubstr(Symbol(), 3, 3)=="NZD") { xxx=1/0.54;   }
if(StringSubstr(Symbol(), 3, 3)=="GPB") { xxx=1/1.49;   }
if(StringSubstr(Symbol(), 3, 3)=="EUR") { xxx=1/1.3015; }

...

Es decir, ¿por qué se asignan valores fijos a la variable xxx?

---

Y otra pregunta. La ayuda contiene información incompleta sobre el cálculo de beneficios en Forex, ¿no es así? Significa que sólo se da la fórmula de las cotizaciones inversas(XXXUSD) para calcular el beneficio.

Identificador

Descripción

Fórmula

SYMBOL_CALC_MODE_FOREX

Modo Forex - cálculo de beneficios y márgenes para Forex

Margen: Lotes*Tamaño_del_contrato/Levante

Beneficio: (precio_cerrado-precio_abierto)*Tamaño_del_contrato*Lotes

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

Y otra pregunta. ¿Resulta que la ayuda está incompleta con información sobre el cálculo de beneficios en Forex? Significa que la fórmula para el cálculo de beneficios sólo se presenta para las cotizaciones inversas(XXXUSD).

Sí, parece que tienes razón. Hasta ahora, puede leer sobre el cálculo de beneficios en el artículo "El ABC del comercio de divisas".
Азбука торговли валютами - Статьи по MQL4
  • www.mql5.com
Азбука торговли валютами - Статьи по MQL4: особенности автоматических торговых стратегий
 
Rosh:
Sí, parece que tienes razón. Por ahora, puede leer sobre el cálculo de beneficios en el artículo "El ABC del comercio de divisas".

Gracias. Este artículo debería ser marcado como una hoja de trucos, porque no puedo mantener todo en mi cabeza. Mejor aún, si se añade una tabla en la ayuda, para que todo esté centralizado. :)

---

Y los valores fijos (en una cabeza fresca es necesario mirar :) ) así que he entendido para un caso si no había datos. Pero estos valores deben corregirse siempre en función de los tipos de cambio. Por eso es mejor emitir el mensaje de que no hay datos, en lugar de valores erróneos.

 
tol64: Y entendí los valores fijos (cuando están frescos en la cabeza :) ) en caso de que no hubiera datos. Pero estos valores deben corregirse en todo momento en función del tipo de cambio de una u otra moneda. Por eso es mejor mostrar un mensaje de que no hay datos, en lugar de valores incorrectos.

Sí, tienes toda la razón. Hice lo mismo que el autor, era demasiado vago, no tenía tiempo... Para los tipos de cambio cruzados en MT4 tiene que seleccionar explícitamente en la ventana "Market Watch" los símbolos de ambas monedas expresados en USD, es decir. Por ejemplo, para el NZDJPY tiene que seleccionar el USDJPY y el NZDUSD. El autor hace un descargo de responsabilidad sobre este punto en el preámbulo:

"Para XXXYYY cruza el correspondiente

Pares principales USDYYY o XXXUSD (por ejemplo para GPBJPY en la ventana de revisión del mercado debe estar abierta

El USDJPY debe estar abierto)".

En MT5 es mejor dejar esto al propio indicador.

 

Piligrim:

Valery (Valmars), ¿crees que tiene sentido en términos de complejidad de reempaquetado ofrecerte rehacer este indicador en MQL5 también? El anterior, traducido por usted, funciona muy bien.

No se puede modificar este indicador para MT5, porque MT5 no tiene (ni tendrá nunca) gráficos independientes. ¿Cómo funciona el indicador en MT4? Crea un gráfico independiente con un periodo no estándar, con la llegada de una nueva cotización lo guarda en el archivo .hst de este periodo no estándar. Y luego abres este gráfico. En cada tick, el indicador lo actualiza (redibuja) con la ayuda del dll del indicador. Como resultado, se ve un gráfico con un periodo no estándar actualizado en tiempo real.

En MT5 incluso el formato de los archivos PERIOD.hc (en el que se construyen los gráficos para los períodos estándar) no ha sido abierto por los desarrolladores, probablemente, porque no pueden construir gráficos "a la izquierda". Puede ver la polémica sobre los gráficos con un periodo arbitrario aquí.

 
Valmars:

Sí, tienes toda la razón. Hice lo mismo que el autor, era demasiado vago, no tenía tiempo... Para los tipos de cambio cruzados en MT4 tiene que seleccionar explícitamente en la ventana "Market Watch" los símbolos de ambas monedas expresados en USD, es decir. Por ejemplo, para el NZDJPY tiene que seleccionar el USDJPY y el NZDUSD. El autor incluye un descargo de responsabilidad al respecto en el preámbulo:

"Para los cruces XXXYYY, el correspondiente

pares principales USDYYY o XXXUSD (por ejemplo para GPBJPY en la ventana de Market Watch debe

estar abierto USDJPY)".

En MT5 es mejor dejar esto al propio indicador.

Entonces, ¿en lugar de esa lista con valores fijos serviría este código? :

bool flgExit=false;
string arrSymbols[7]={ "CAD","JPY","CHF","AUD","NZD","GBP","EUR" };
//---
for(int i=ArraySize(arrSymbols)-1; i>=0; i--)
  {
   if(flgExit) { break; }
   //---
   if(StringSubstr(Symbol(),3,3)==arrSymbols[i])
     {
      for(int j=SymbolsTotal(false)-1; j>=0; j--)
        {
         if(SymbolName(j,false)=="USD"+arrSymbols[i]+"")
           {
            SymbolSelect("USD"+arrSymbols[i]+"",true);
            //---
            if((xxx=SymbolInfoDouble(SymbolName(j,true),SYMBOL_BID))<=0)
              {
               Comment("Ошибка ("+IntegerToString(GetLastError())+") при получении данных по символу "+SymbolName(j,true)+""); return(0);
              }
            else { flgExit=true; break; }
           }
       }
   }
}
 
Valmars:

Este indicador no se puede convertir a MT5, ya que MT5 no tiene (ni tendrá) gráficos autónomos. ¿Cómo funciona el indicador en MT4? Crea un gráfico independiente con un periodo no estándar, con la llegada de una nueva cotización lo guarda en el archivo .hst de este periodo no estándar. Y luego abres este gráfico. En cada tick, el indicador lo actualiza (redibuja) con la ayuda del dll del indicador. Como resultado, verá un gráfico con un periodo no estándar actualizado en tiempo real.

En MT5 incluso el formato de los archivos PERIOD.hc (los gráficos para los periodos estándar se construyen utilizando) ni siquiera fue revelado por los desarrolladores, probablemente porque no permiten hacer ningún gráfico "a la izquierda". Puede ver la polémica sobre los gráficos con un periodo arbitrario aquí.

En cualquier caso, ¡gracias, Valery! Para mí, como no programador, es mucho más preferible una consulta profesional comprensible en cuanto a la búsqueda de posibles soluciones a algún problema que escapa a mi competencia.

 
tol64:

Entonces, en lugar de esa lista de valores fijos, este código funcionaría bien? :

Sí, ejecútalo también para el segundo carácter de la cruz y ponlo en el inite.

 
Valmars:
Sí, hazlo también para el segundo carácter cruzado y ponlo en el inite.

Valery, si tienes un momento libre, echa un vistazo a la versión corregida. ¿Se hace correctamente ahora teniendo en cuenta todo lo comentado anteriormente? Gracias.


Archivos adjuntos:
 
tol64:

...

Actualizado el archivo anterior(calcriskprofit.mq5). Se ha corregido la errata. En lugar de GBP era GPB. :)
Razón de la queja: