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

 
Artyom Trishkin:
Así que comprueba el número de posiciones abiertas en la vela cero M15. Si ya tienes una posición y está abierta en una vela nula M15, entonces no abras más.
No sé mucho de programación, pero este módulo se ocupa de esto
b=0;
    for (i=OrdersTotal()-1;i>=0;i--)  
       {
        RefreshRates();
        if(OrderSelect (i, SELECT_BY_POS, MODE_TRADES) == true) a = 0;
        if (OrderSymbol() == Symbol() && OrderMagicNumber() == Magic) b++;
       }
Pero el problema es que cuando la orden se cierra por SL o TP, la siguiente señal en M15 la abrirá de nuevo.
 
customer03:
No soy muy bueno programando, pero este módulo lo hace
b=0;
       }
Pero el problema es que cuando la orden se cierra por SL o TP la siguiente señal en M15 la abrirá de nuevo.

Intenta hacer un control para una nueva barra en H1

b=0;
    for (i=OrdersTotal()-1;i>=0;i--)  
       {
        RefreshRates();
        if(OrderSelect (i, SELECT_BY_POS, MODE_TRADES) == true) a = 0;
        if (OrderSymbol() == Symbol() && OrderMagicNumber() == Magic) b++;
       }

      
if(  stM1 <= 20 && stM0 > 20  && stH0 > 70  && b==0   && opp != iTime(_Symbol,PERIOD_H1,0)) // покупка
      {
       opp = iTime(_Symbol,PERIOD_H1,0);

    RefreshRates();
    op = Ask;
 
Vitaly Muzichenko:

Prueba un nuevo control de barra en H1

b=0;
    for (i=OrdersTotal()-1;i>=0;i--)  
       {
        RefreshRates();
        if(OrderSelect (i, SELECT_BY_POS, MODE_TRADES) == true) a = 0;
        if (OrderSymbol() == Symbol() && OrderMagicNumber() == Magic) b++;
       }

      
if(  stM1 <= 20 && stM0 > 20  && stH0 > 70  && b==0   && opp != iTime(_Symbol,PERIOD_H1,0)) // покупка
      {
       opp = iTime(_Symbol,PERIOD_H1,0);

    RefreshRates();
    op = Ask;
Lo intenté, pero no hubo cambios.
 
customer03:
No soy muy bueno programando, pero este módulo lo hace
b=0;
    for (i=OrdersTotal()-1;i>=0;i--)  
       {
        RefreshRates();
        if(OrderSelect (i, SELECT_BY_POS, MODE_TRADES) == true) a = 0;
        if (OrderSymbol() == Symbol() && OrderMagicNumber() == Magic) b++;
       }
Pero cuando la orden se cierra por SL o TP, la siguiente señal en M15 la abrirá de nuevo.

No, definitivamente no es eso lo que hace este trozo de código.

Tiene que comprobar que la barra de apertura de la posición en el periodo M15 no es igual a cero - entonces puede abrir una posición:

if(iBarShift(Symbol(),PERIOD_M15,OrderOpenTime())!=0)
  {
   // код открытия позиции
  }
 

Hola, ayúdame con las clases, ¿qué estoy haciendo mal?

clase ASD
{
privado:
// Las variables y funciones disponibles sólo dentro de la clase se encuentran aquí
int c (int m_a,int m_b)
{ int m_d = m_a+m_b;}

público:
void d (int a,int b )
{
m_a=a+b;
}
// Las variables y funciones disponibles fuera de la clase se encuentran aquí
};
 
Vikon:

Hola, ayúdame con las clases, ¿qué estoy haciendo mal?

clase ASD
{
privado:
// Las variables y funciones disponibles sólo dentro de la clase se encuentran aquí
int c (int m_a,int m_b)
{ int m_d = m_a+m_b;}

público:
void d (int a,int b )
{
m_a=a+b;
}
// Las variables y funciones disponibles fuera de la clase se encuentran aquí
};
Empiece por leer el artículo.
 
Artyom Trishkin:
Empiece por leer el artículo.

Lo leo, pero no lo entiendo bien.

Esto es lo que tengo:

clase:

class ASD

  {

private:

   // Здесь располагаются переменные и функции, доступные только внутри класса

   int c(int m_a,int m_b)

     {
      m_a=a+b; m_b=a-b;

      int m_d=m_a+m_b;

      d=m_d;

      return(c(m_a,m_b));
     }

public:

   int               a;

   int               b;

   int               d;

  };

guión:

#include <ASD.mqh>


ASD ar;
//+------------------------------------------------------------------+

//| Script program start function                                    |

//+------------------------------------------------------------------+

void OnStart()

  {

   ar.a=1;

   ar.b=3;

   Alert(ar.d);

  }
//+------------------------------------------------------------------+

La alerta da cero. ¿Qué pasa?

 
Vikon:

Lo leo, pero no lo entiendo bien.

Esto es lo que tengo:

clase:


La alerta da cero. ¿Qué pasa?

¿Es difícil insertar el código a través del botón SRC?

He insertado el código correcto para usted.

 
Vikon:

Lo leo, pero no lo entiendo bien.

Esto es lo que tengo:

clase:

class ASD

  {

private:

   // Здесь располагаются переменные и функции, доступные только внутри класса

   int c(int m_a,int m_b)

     {
      m_a=a+b; m_b=a-b;

      int m_d=m_a+m_b;

      d=m_d;

      return(c(m_a,m_b));
     }

public:

   int               a;

   int               b;

   int               d;

  };

guión:

#include <ASD.mqh>


ASD ar;
//+------------------------------------------------------------------+

//| Script program start function                                    |

//+------------------------------------------------------------------+

void OnStart()

  {

   ar.a=1;

   ar.b=3;

   Alert(ar.d);

  }
//+------------------------------------------------------------------+

La alerta da cero. ¿Qué pasa?

Dentro de la clase, haga las impresiones a los valores. Y luego mira en el registro lo que se imprimirá cuando ejecutes el script ;)
 
Artyom Trishkin:
Dentro de la clase, haga las impresiones de los valores. Y luego mira en el registro lo que se imprimirá cuando el script se ejecute ;)
Las impresiones sólo se pueden insertar dentro de una función, pero cómo llamar a esta función para que la impresión o la alerta funcionen no lo entiendo. ¿Puedes ayudarme arreglando mi código con tres simples variables? Hago todo como se describe en el artículo, pero el editor no lo acepta o falta algo, en todo caso un muro, por eso pido ayuda. Gracias por SKC.
Razón de la queja: