Cualquier pregunta de los recién llegados sobre MQL4 y MQL5, ayuda y discusión sobre algoritmos y códigos - página 1250

 
Artyom Trishkin :

No lo he investigado, no puedo decírtelo desgraciadamente.

Te lo explicaré. Espero que tenga sentido.

Esta es la explicación:

Estoy operando EURUSD y AUDJPY en MT5. Ambos tienen margen reservado como se muestra en la barra de herramientas de MT5. Compartiré la imagen.

Primera operación con el EURUSD:

He vendido con lote = 1. Margen obtenido = 235,31.

Ahora estoy operando en AUDJPY:

Vendí en el lote = 1. Tomé una llamada de margen = 144,24.

Y el margen total mostrado en ToolBox = 379,55.

La caja de herramientas, como puede ver, muestra el margen total utilizado por los símbolos EURUSD y AUDJPY.

Ahora llego a mi pregunta.

Quiero saber cuál es el margen del total utilizado por el EURUSD. No me salen los cálculos para esto. Sé que la respuesta debería ser = 235,31

Pero con OrderCalcMargin () obtengo respuestas diferentes. A veces la función devuelve 235,23, a veces 235,01. Pero esta es la respuesta equivocada. Quiero saber cómo puedo calcular el margen utilizado para un símbolo concreto. En mi ejemplo, dígame cómo puedo calcular el margen utilizado por EURSD o AUDJPY.

Nota:

La respuesta OrderCalcMargin () a veces da la respuesta correcta para el EURUSD. Pero si quiero calcular el margen para el AUDJPY, siempre es diferente.

Ahora, por favor, dígame si lo he entendido.

Tengo esta pregunta y he intentado explicarla a todos los del foro pero nadie la entiende. Este soy yo intentando de nuevo.

Lo intentaré de nuevo si sigue sin tener sentido.

@ Artyom Trishkin, avísame. Cuento con usted para que me dé una solución.

 
jaffer wilson:

Te lo explicaré. Espero que tenga sentido.

Esta es la explicación:

Estoy operando EURUSD y AUDJPY en MT5. Ambos tienen margen reservado como se muestra en la barra de herramientas de MT5. Compartiré la imagen.

Primera operación con el EURUSD:

He vendido con lote = 1. Margen obtenido = 235,31.

Ahora estoy operando en AUDJPY:

Vendí en el lote = 1. Tomé una llamada de margen = 144,24.

Y el margen total mostrado en ToolBox = 379,55.

La caja de herramientas, como puede ver, muestra el margen total utilizado por los símbolos EURUSD y AUDJPY.

Ahora llego a mi pregunta.

Quiero saber cuál es el margen del total utilizado por el EURUSD. No me salen los cálculos para esto. Sé que la respuesta debería ser = 235,31

Pero con OrderCalcMargin () obtengo respuestas diferentes. A veces la función devuelve 235,23, a veces 235,01. Pero esta es la respuesta equivocada. Quiero saber cómo puedo calcular el margen utilizado para un símbolo concreto. En mi ejemplo, dígame cómo puedo calcular el margen utilizado por EURSD o AUDJPY.

Nota:

La respuesta OrderCalcMargin () a veces da la respuesta correcta para el EURUSD. Pero si quiero calcular el margen para AUDJPY, siempre es diferente.

Ahora, por favor, dígame si lo he entendido.

Tengo esta pregunta y he intentado explicarla a todos los del foro, pero nadie la entiende. Este soy yo intentando de nuevo.

Lo intentaré de nuevo si sigue sin tener sentido.

@ Artyom Trishkin, avísame. Cuento con usted para que me dé una solución.

Valores muy importantes para calcular en su caso:

  1. En qué moneda está la cuenta
  2. Cuál era el tipo de cambio en el momento de abrir la posición

Por ejemplo, el AUDJPY y el USDJPY intervienen en el cálculo del margen. Cuál era el tipo de cambio AUDJPY en el momento de abrir la posición, nadie lo adivinará. Sólo se puede intentar calcular a través del margen actual. Esto se mencionó en el hilo al que te enlacé. Pero, para ser sinceros, no dice mucho al respecto, pero hay algo en los códigos.

En cada momento posterior, estos tipos cambian y, por tanto, se obtienen diferentes valores de margen. Calcule la relación entre el margen actual y el precio de apertura de la posición y aplique este coeficiente en el cálculo del margen de la posición abierta. Hay que experimentar. No recuerdo el algoritmo de cálculo exacto.

Pero no creo que nadie te dé una solución preparada.

 
Alexey Viktorov :

Valores muy importantes para el cálculo en su caso:

  1. En qué moneda está denominada la cuenta
  2. Cuál era el tipo de cambio en el momento de abrir la posición

Como ejemplo, el cálculo del margen del AUDJPY implica el AUDUSD y el USDJPY. Cuál era el tipo de cambio AUDJPY en el momento de abrir la posición, nadie lo adivinará. Sólo se puede intentar calcular a través del margen actual. Esto se mencionó en el hilo al que te enlacé. Pero, para ser sinceros, no dice mucho al respecto, pero hay algo en los códigos.

En cada momento posterior, estos tipos cambian y, por tanto, se obtienen diferentes valores de margen. Calcule la relación entre el margen actual y el precio de apertura de la posición y aplique este coeficiente en el cálculo del margen de la posición abierta. Hay que experimentar. No recuerdo el algoritmo de cálculo exacto.

Pero no creo que nadie te dé una solución ya hecha.

Sí, lo entiendo. Pero veo que la MT5 ToolBox calcula exactamente sin cambiar el margen. Entonces, ¿qué lógica utiliza la MT5 ToolBox? ¿Podría arrojar algo de luz sobre esto, por favor?

 

Pregunta sobre cómo asignar un valor a diferentes variables mediante argumentos en una función. Si hay un argumento, se puede devolver y asignar un valor, pero si hay 2, ¿qué hay que hacer?

int x,x1,x2,x3=1,x4,x5;
void OnStart()
{
x=2;
F(x,x1,x2);
Print ("x1= ",x1," x2= ",x2);
x=5 ;
F(x,x4,x5);
Print ("x4= ",x4," x5= ",x5);
return;
}

int F(int ArgX, int ArgX1, int ArgX2)
{
ArgX1=ArgX + x3;
ArgX2=ArgX - x3;
return ArgX1;
}

//результат
2020.09.09 15:10:10.561 TestS EURUSD,H1: x4= 0 x5= 0
2020.09.09 15:10:10.561 TestS EURUSD,H1: x1= 0 x2= 0
Документация по MQL5: Основы языка / Операции и выражения / Операции присваивания
Документация по MQL5: Основы языка / Операции и выражения / Операции присваивания
  • www.mql5.com
Побитовые операции производятся только с целыми числами. При выполнении операции логический сдвиг представления y вправо/влево на x бит используются младшие 5 двоичных разрядов значения x, старшие разряды отбрасываются, то есть сдвиг производится на 0-31 бит.
 

Valery, tal vez esto sirva:

void  F(int &ArgX, int &ArgX1, int &ArgX2)
 
Aleksei Stepanenko:

Valery, tal vez esto sirva:

Correcto, enlaces, appersand si no me equivoco.

2020.09.09 15:18:33.572 TestS EURUSD,H1: x4= 6x5= 4

2020.09.09 15:18:33.572 TestS EURUSD,H1: x1= 3x2= 1

Gracias)))


 
¡Eso es! Transmisión en el enlace.
 
Valeriy Yastremskiy:

Pregunta sobre cómo asignar un valor a diferentes variables mediante argumentos en una función. Si hay un argumento, se puede devolver y asignar un valor, pero si hay 2, ¿qué pasa con esto?

¿Qué es esto?

void start()

Érase una vez, hace mucho, mucho tiempo. que comían los mamuts. Y luego se lo ponen. ¿Es eso lo que creo que es?

 
Artyom Trishkin:

¿Qué es eso?

Érase una vez... los mamuts solían comer. Y luego se lo ponen. ¿Es eso lo que creo que es?

No juzgues, escribí el guión a mano. Y la comprobación estricta se salta las funciones antiguas. Por supuesto, yo no escribo mi guión de esa manera. Además, hay constructores. )))))

Corregido)
 
Colegas, buenos días a todos. Hay cinco robots con diferentes símbolos mágicos que abren posiciones en el mercado al precio de apertura de una nueva barra y todos tienen las mismas condiciones de entrada. Las salidas son diferentes.
A veces cierro las cinco posiciones manualmente.
Y entonces, cómo con un mínimo esfuerzo para organizar un algoritmo para la apertura de una nueva posición de mercado, pero no en la siguiente barra - el comercio en M1, pero en diferentes consecutivos, es decir, en 1 m1 abrió el primero que tenía tiempo, en el segundo m1 abrió uno de ellos el segundo que tenía tiempo, etc. a 5.
Es decir, creo que la pregunta se reduce a lo siguiente, como opción, ¿cómo asignar un minuto de tiempo de apertura del mercado para su posterior comparación con Minutos () f-fi estándar? Y, por supuesto, si ya hay una posición de mercado en este momento, entonces vuelve ().