Preguntas de los principiantes MQL5 MT5 MetaTrader 5 - página 1503

 
Sergey Voytsekhovsky #:

Aquí es donde debe empezar - En el terminal, en la cinta, en la carpeta Herramientas, hay un elemento GlobalVariables. Vamos a encontrarlo.

Como te entiendo, yo también soy un ignorante. A veces no pillo una frase o una lógica, las más sencillas. Y también estoy constantemente preguntando y leyendo. Por eso te vuelvo a llamar. Me ayudaste aquí hace poco, justo arriba - mucho, gracias.

 
psihodelit #:
Está vacío.

Así no interrumpimos nada.

Abre el código del EA cuyas lecturas te interesan. Escribiste que el otro asesor debería realizar algunas acciones dependiendo de las lecturas del primero. Por ahí deberías empezar.

En cualquier lugar conveniente para usted, preparar una línea vacía y escriba GlobalVariableCheck(), a continuación, resalte y pulse F1. Se abrirá la página con la información, no es difícil allí.

Y la esencia de la idea plasmada - Crear una variable Global en el Asesor Experto que traduce, y dejar que el que recibe lea de ella, en ciertas lecturas la condición se activará, y más adelante de acuerdo con el escenario.

 
Sergey Voytsekhovsky #:
prepara una línea vacía y escribe GlobalVariableCheck(),

No olvides borrarlo después, era sólo una forma rápida de obtener la ayuda necesaria. Quémalo después de leerlo.

 

Hola, si hay una fórmula (código) para el precio medio ponderado de la apertura de una posición en una cuenta de cobertura. Gracias.

No entiendo, ¿cuál es la fórmula para cerrar casos de operaciones opuestas?

Pср = (Open Price 1 × Lot 1 + Open Price 2 × Lot 2 + ... + Open Price X × Lot X) / (Lot 1 + Lot 2 + ... + Lot X)

Esta parece que no funciona?

 
leonerd apertura de una posición en una cuenta de cobertura. Gracias.

No entiendo, ¿cuál es la fórmula para cerrar casos de operaciones opuestas?

¿Esta no parece funcionar?

No recuerdo donde la copié, pero funciona bien.

   double NLb = 0, NLs = 0;

   long OT;
   int b = 0, s = 0;
   double PB = 0, PS = 0, OL = 0, LS = 0, LB = 0, OOP = 0;
   for(int i = 0; i < PositionsTotal(); i++)
     {
      if(_Symbol == PositionGetSymbol(i))
        {
         OL  = PositionGetDouble(POSITION_VOLUME);
         OOP = PositionGetDouble(POSITION_PRICE_OPEN);
         OT  = PositionGetInteger(POSITION_TYPE);
         if(OT == POSITION_TYPE_BUY)
           {
            PB += OOP * OL;
            LB += OL;
            b++;
           }
         if(OT == POSITION_TYPE_SELL)
           {
            PS += OOP * OL;
            LS += OL;
            s++;
           }
        }
     }
   if(LB != 0)
      NLb = PB / LB;
   if(LS != 0)
      NLs = PS / LS;

Es lo mismo que lo que has escrito, sólo que separado por direcciones de posición.

Creo que es lo que necesitas .

 
Aleksandr Slavskii #:

No recuerdo dónde lo copié, pero funciona bien.

Es lo mismo que lo que escribiste, solo que separado por direcciones de posición.

Creo que eso es lo que necesitas .

No entiendo si es lo mismo si solo tomas los cortos con volumen negativo y sumas los valores absolutos en el denominador?

Tal vez quieras añadir una comprobación de división por 0 al final.

 
leonerd #:

No entiendo si es lo mismo si solo tomas los cortos con volumen negativo y sumas los valores absolutos en el denominador?

La función calcula el precio medio por separado para la compra y por separado para la venta.

No entiendo muy bien cuál es tu cometido. No entiendo esta frase: "cerrar casos de operaciones opuestas".

leonerd #:

Sería bueno añadir una comprobación de división por 0 al final.

Hay una comprobación.

Razón de la queja: