Preguntas de los principiantes MQL4 MT4 MetaTrader 4 - página 88

 
Gregory Kovalenko:

Hola. ¿Cómo puedo obtener el beneficio/pérdida actual de la orden abierta actual?

Intentando

- Devuelve sólo lo positivo, el beneficio, si la posición está en déficit en este momento, la pérdida no se muestra.

P.D. En el historial de pedidosOrderProfit() también muestra menos.

¿Cómo estás tratando de obtener un beneficio, mostrar todo el código
 

con respecto a la ganancia actual en la orden (no encontró el iniciador del puesto)

double profit=OrderProfit()+OrderSwap()+OrderCommission();
 
Renat Akhtyamov:

con respecto a la ganancia actual en la orden (no encontró el iniciador del puesto)


Gracias, efectivamente había un error en la lógica del código, por eso
double profit=OrderProfit()+OrderSwap()+OrderCommission();

no funcionó.

Ahora ha surgido una pregunta interesante.

Si miro el último pedido en el historial, veo una pérdida. Me gustaría disminuir la tp y aumentar la tp del lote.

MarketInfo(Symbol(),MODE_STOPLEVEL)

¿Cómo puedo calcular qué lote se necesita, sabiendo el precio actual para abrir y el nuevo tp - para cerrar la pérdida?

 
Gregory Kovalenko:

Gracias, efectivamente había un error en la lógica del código.

no funcionó.

Ahora hay una pregunta interesante.

Miro el último pedido en el historial y veo una pérdida. Me gustaría disminuir el tp y aumentar el lote. tp - cómo calcular qué lote se necesita.

¿Cómo puedo calcular qué lote se necesita, sabiendo el precio actual para abrir y el nuevo tp - para cerrar la pérdida?

Esta pregunta es interesante, pero está relacionada con el desarrollo de la estrategia. Personalmente, paso.
 
Gregory Kovalenko:¿Cómo se calcula el lote necesario, conociendo el precio actual para abrir y el nuevo tp - para cerrar la pérdida?

Calcula cuánto de la pérdida será cubierta por una orden con un lote igual a OrderLots(). Abre una orden con un lote igual a OrderLots(), dividido por el valor obtenido.

En otras palabras, si el OrderLots() cierra 0,5 pérdidas, se abre una orden con el lote OrderLots()/0,5 = OrderLots()*2.

Si OrderLots() cierra la pérdida dos veces, utilice OrderLots() / 2

 
LRA:

Calcula cuánto de la pérdida será cubierta por una orden con un lote igual a OrderLots(). Abre una orden con un lote igual a OrderLots(), dividido por el valor obtenido.

Es más fácil calcular qué parte de la pérdida será cubierta por la orden con lote = 1. Abre una orden con lote = 1, dividida por el valor resultante.
 

Tengo una pregunta cuádruple.

todo el mundo tiene un límite de 3000 pips en la configuración del gráfico, o ¿alguien tiene alguna escala vertical trabajando en absoluto?

aquí hay una captura de pantallasjfhakslljas


 

Aplicación de "programas en bucle"

Por favor, explique los pros y los contras. ¿Es mejor que esperar un nuevo tick desde start()? ¿Aumenta la velocidad de respuesta a un nuevo tick?

start()
   {
   while(!IsStopped())
      {
      RefreshRates();
      //...
      Sleep(5);
      }
   return;
   }

 
smart_man:

Aplicación de "programas en bucle"

Por favor, explique los pros y los contras. ¿Es mejor que esperar un nuevo tick desde start()? ¿Aumenta la velocidad de respuesta a un nuevo tick?

start()
   {
   while(!IsStopped())
      {
      RefreshRates();
      //...
      Sleep(5);
      }
   return;
   }

No deberías hacerlo. Consumirá muchos recursos. ¿Y qué hay de malo en la velocidad de respuesta sin bucle?
 
smart_man Explica los pros y los contras. ¿Es mejor que esperar un nuevo tick desde start()? ¿Aumenta la velocidad de respuesta a una nueva garrapata?

   while(!IsStopped())
      {
      RefreshRates();
      //...
      Sleep(5);
      }

Un tick es un dato nuevo que viene del servidor. Y debe ser procesado inmediatamente después de su llegada. Si lo haces en bucle con un retardo de 5 ms, entonces la mayoría de los ticks llegarán concretamente durante este retardo. Así, el procesamiento se retrasará en 0 ... 5 ms.