Errores, fallos, preguntas - página 553

 
Urain:

A continuación, haga una sugerencia en el hilo del perfil (no hay ningún error, sin embargo).

bueno... Creo que esto es un error. Según tengo entendido, si en el calendario puedo seleccionar que el final del periodo sea la fecha de hoy,
entonces se espera que el probador y el optimizador trabajen hasta el momento actual, pero esto no sucede ((
los desarrolladores son conscientes de ello y está en su mano hacer una buena plataforma. si no es así, entonces no. vamos a pensar más...

 

Leí este artículo "A Step-by-Step Guide to Writing MQL5 Expert Advisors for Beginners" https://www.mql5.com/ru/articles/100 encontré las siguientes líneas en él:


Para las cotizaciones de 3 y 5 dígitos multiplicamos los valores de Stop Loss y Take Profit por 10.

La muestra del MACD incluida en el terminal contiene la misma información:

//--- ajuste para 3 o 5 dígitos
int digits_adjust=1;
if(m_symbol.Digits()==3 || m_symbol.Digits()==5) digits_adjust=10;

m_punto_ajustado=m_símbolo.Punto()*dígitos_ajustados;

¿En qué consiste esta acción? ¿Por qué multiplicar variables por 10 con 3 y 5 decimales?

Пошаговое руководство по написанию MQL5-советников для начинающих
Пошаговое руководство по написанию MQL5-советников для начинающих
  • 2010.06.09
  • Samuel
  • www.mql5.com
Написание советников на MQL5 проще чем кажется, вы легко можете этому научиться. В этом руководстве вы познакомитесь с основными моментами, необходимыми для написания простого советника на основе конкретной торговой стратегии. Рассмотрена структура советника, использование встроенных технических индикаторов и торговых функций, вопросы отладки и тестирования советника на исторических данных.
 
progeon:

Leí este artículo "A Step-by-Step Guide to Writing MQL5 Expert Advisors for Beginners" https://www.mql5.com/ru/articles/100 encontré las siguientes líneas en él:

Para las cotizaciones de 3 y 5 dígitos multiplicamos los valores de Stop Loss y Take Profit por 10.

La muestra del MACD incluida en el terminal contiene la misma información:

//--- ajuste para 3 o 5 dígitos
int digits_adjust=1;
if(m_symbol.Digits()==3 || m_symbol.Digits()==5) digits_adjust=10;

m_punto_ajustado=m_símbolo.Punto()*dígitos_ajustados;

¿En qué consiste esta acción? ¿Por qué multiplicar variables por 10 con 3 y 5 decimales?

Es para esos amigos que están acostumbrados a contar todo en cuatro dígitos y no quieren cambiar de opinión.

Así, si fijamos 100 puntos de Stop Loss en los parámetros, obtendremos 1000 puntos en los cálculos de cinco dígitos, y 100 puntos en los de cuatro dígitos, que es lo mismo.

El número de cuatro dígitos tiene ventajas, la facilidad de volver a calcular el beneficio, 1 pip 1% de los fondos invertidos.

 
progeon:

Leí este artículo "A Step-by-Step Guide to Writing MQL5 Expert Advisors for Beginners" https://www.mql5.com/ru/articles/100 encontré las siguientes líneas en él:

Para las cotizaciones de 3 y 5 dígitos multiplicamos los valores de Stop Loss y Take Profit por 10.

La "muestra MACD" incluida en el terminal contiene la misma información:

//--- ajuste para 3 o 5 dígitos
int digits_adjust=1;
if(m_symbol.Digits()==3 || m_symbol.Digits()==5) digits_adjust=10;

m_punto_ajustado=m_símbolo.Punto()*dígitos_ajustados;

¿Qué tipo de acción es esa? ¿Por qué multiplicar una variable por 10 con 3 y 5 decimales?


Para una mejor compatibilidad con diferentes brokers (que proporcionan cotizaciones de 4 o 5 dígitos), es decir, sin necesidad de cambiar los parámetros del Asesor Experto.

Este algoritmo se basa en el hecho de que en los corredores que ofrecen cotizaciones de 4 dígitos _los dígitospueden ser 4 o 2 (normalmente en los pares con JPY),

y en 5 dígitos 5 y 3 en consecuencia.

Aunque, yo mismo estoy interesado en la seguridad de este método, porque hay herramientas con diferentesvalores de _Digits.

Personalmente lo compruebo con "EURUSD". Pero al menos hay corredores en MT4 donde el eurodólar tiene un nombre ligeramente diferente, por ejemploEURUSD_fx

o algo así.

 
crOss:
пункты 1 и 2 уходят, если фиксировать правое время на момент начала теста/оптимизации.
никто не просит актуальность до секунды... но один торговый день - это, извините, ни в какие ворота.

Urain:

Entonces tendrá que introducir no sólo el año mes fecha, sino también la hora:minutos del final.

No necesariamente, el tiempo se puede fijar de forma puramente programática cuando se ejecuta la prueba/optimización.

Sinceramente, la sugerencia me parece bastante sensata. Estoy a favor.

En este momento es irrelevante para mí, pero podría ser muy deseable pronto.

 
Urain:

Esto es para aquellas personas, que están acostumbradas a contar todo en puntos de cuatro dígitos, y no quieren reconstruir.

Así, fijando el stoploss para 100 puntos en los parámetros, obtenemos el recálculo de 1000 puntos en cinco dígitos, y 100 puntos en cuatro dígitos, que es lo mismo.

El número de cuatro dígitos tiene ventajas, es fácil recalcular el beneficio, 1 pip supone el 1% de los fondos invertidos.

Ya veo, continuemos) Otra pregunta - el mismo artículo utiliza la función NormalizeDouble al formar Stop Loss y Take Profit ¿por qué razón? Parece que no tiene sentido.

mrequest.sl = NormalizeDouble(latest_price.ask - STP*_Point,_Digits); // Stop Loss
mrequest.tp = NormalizeDouble(latest_price.ask + TKP*_Point,_Digits); // Take Profit
Документация по MQL5: Преобразование данных / NormalizeDouble
Документация по MQL5: Преобразование данных / NormalizeDouble
  • www.mql5.com
Преобразование данных / NormalizeDouble - Документация по MQL5
 
progeon:

Ya veo, sigamos) Una pregunta así - en el mismo artículo se utiliza la función NormalizeDouble al formar Stop Loss y Take Profit ¿por qué razón? Parece que no tiene sentido.

No hay ningún sinsentido. Durante el cálculo del nivel se realizan operaciones con duplicidades y el resultado no será normalizado y obtendrá recotizaciones si se pasa al servidor tal cual. Por eso el resultado del cálculo está normalizado.
 
Urain:
No tiene sentido, al calcular el nivel se realizan operaciones con dobles y el resultado no será normalizado, si lo pasas al servidor tal cual, obtendrás una recotización. Por eso el resultado del cálculo está normalizado.
Supongamos que el stoploss es 100, el punto es 0,00001. ¿Qué puede ocurrir al multiplicarlos? ¿Aparecerán los 9 en alguna parte? Por ejemplo, ¿0,0009999?
 
progeon:
Stoploss digamos 100, punto 0,00001. ¿Qué puede surgir al multiplicarlos? ¿Aparecerán los 9 en alguna parte? Por ejemplo, ¿0,0009999?
   double a=1.45861+32*_Point;
   Print(DoubleToString(a,16));

Parece que un número normal debería salir como 1,45893 pero obtenemos 1,4589300000000002

 
Renat:

Planeamos hacer una pestaña de "Seguridad" en la información del EA, que muestra el nivel de seguridad y una lista de funciones DLL llamadas.

Justo a tiempo para el lanzamiento de la tienda, trabajaremos en los archivos EX5.

Renat, hay dos preguntas más sobre las llamadas DLL en el nuevo formato EX5.

1. ¿Cómo se comportará el código cuando se desactiven las llamadas? Como ahora, ¿ni siquiera va a funcionar?

2. Si no arranca, ¿para qué sirve MQL5_DLLS_ALLOWED /TERMINAL_DLLS_ALLOWED?

Razón de la queja: