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

 
Tretyakov Rostyslav #:

Y no me he fijado en el elefante))) ¿A qué cree que equivale el precio de cierre de una orden abierta?

Intenta hacerlo así.

Otra pregunta

¿Cómo se calcula el beneficio en puntos - es este OrderProfit * Punto?

 
Mihail Matkovskij #:

Entonces SymbolInfoDouble

¿Por qué no de inmediato?

 
Alexander Avksentyev #:

Otra pregunta

¿El cálculo del beneficio en pips es un OrderProfit * Point?

OrderProfit Devuelve el valor de la ganancia neta, (aquellos en la moneda del depósito)
Point-
Tamaño del punto del instrumento actual en la moneda de cotización

Todo a partir de la referencia

 
Andrey Sokolov #:

OrderProfit Devuelve el valor de la ganancia neta, (aquellos en la moneda del depósito)
Point - Tamaño actual del punto del instrumento en la moneda de cotización

Todo a partir de la referencia

Estoy de acuerdo, he leído la referencia.

He multiplicado el beneficio por el Punto y he obtenido 0,00001 o menos.

 
Alexander Avksentyev #:

Estoy de acuerdo, he leído la referencia.

Multiplicó el beneficio por Punto y obtuvo 0,00001 o menos.

Es una cosa extraña

 
Alexander Avksentyev #:

Otra pregunta

¿Es el cálculo del beneficio en pips un OrderProfit * Point .

El precio puede pasar de 20 pips y dar 50$ de beneficio.

Puede pasar en 5 puntos, pero el beneficio será de 80 dólares

Esto es igual para cada símbolo, con el franco el beneficio será mayor que con el canadiense en el mismo paso en pips

 
Artyom Trishkin #:

¿Por qué no de inmediato?

Escribí un ejemplo sencillo en línea. Ni siquiera entré en el editor. Alexander es un programador novato y no necesita ninguna complejidad adicional. Echa un vistazo a su código arriba. Pero si estamos hablando de desarrollar un robot multisímbolo, puedes usar SymbolInfoDouble. ¿Quién se lo impide?

 
Mihail Matkovskij #:

La función SymbolInfoTick escribe los datos de los ticks en una estructura especialMqlTick, de cuyos campos se pueden recuperar.

gracias a

 

Se planteó otra cuestión

Hice la inscripción en la esquina

//+-----------------------------------------------------------------------------------------------+
int OnInit()
  {
Start          = TimeCurrent();
MaxMartinLot   = Lot*MathPow(1.4,OrdersClose);
MaxMartinLot2  = Lot*MathPow(K_Martin2,OrdersClose2);
AC             = StringConcatenate(" ", AccountCurrency());
int Y          = 20;
DrawLABEL("lab_Take",1,5,Y,clrLime,"LOT: "); 
return(INIT_SUCCEEDED);
  }
//+-----------------------------------------------------------------------------------------------+
void OnDeinit(const int reason)
  {

  }
//+-----------------------------------------------------------------------------------------------+
void OnTick()
  {
// Получим значение индикатора
   dMA = iMA(Symbol(), 0,PeriodMA, MovingShift, MODE_SMA, PRICE_CLOSE, 0); // MODE_SMA - простое усреднение , значение 0. PRICE_CLOSE- цена закрытия, значение 0.

// Если нет открытых ордеров, то входим в условие
      if(CountOrders()==0)
     {
// Если появился сигнал на покупку, то откроем ордер на покупку
      if(bSignalBuy() == true)
         vOrderOpenBuy();

// Если появился сигнал на продажу, то откроем ордер на продажу
      if(bSignalSell() == true)
         vOrderOpenSell();
     }
       DrawLABEL("lab_Take",1,5,0,Color(),StringConcatenate("LOT: ",DoubleToStr(LOT(),2)));  
  }

en la línea amarilla da este aviso:

posible pérdida de datos debido a la conversión de tipos

Parece que los he mezclado.

todo funciona

si no hay transacción, sólo hay un color encendido

si hay un acuerdo abierto - se ilumina de otro color

Color() lo establece así:

double Color()
  {
   double CL =clrRed;
   if(CountOrders()==0) CL =clrYellow;
   return(CL);
  }
Por favor, compruébalo.
 
законопослушный гражданин posible pérdida de datos debido a la conversión de tipos

Parece que los he mezclado.

todo funciona

si no hay transacción, sólo hay un color encendido

si hay un acuerdo abierto - se ilumina de otro color

Color() lo establece así:

Por favor, compruébalo.

La función Color debería devolver color, no doble.

color Color()
  {
   color CL = clrRed;
   if(CountOrders() == 0) 
     CL = clrYellow;
   return(CL);
  }

El enlace que el motor del sitio añadió también sería útil para estudiar.