Quaisquer perguntas de recém-chegados sobre MQL4 e MQL5, ajuda e discussão sobre algoritmos e códigos - página 92

 
Artyom Trishkin:
Portanto, verifique o número de posições em aberto na vela M15 zero. Se você já tem uma posição e ela está aberta em uma vela nula M15, então não abra mais.
Eu não sei muito sobre programação, mas este módulo lida com isto
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++;
       }
Mas a questão é que quando o pedido for fechado por SL ou TP, o próximo sinal em M15 o abrirá novamente.
 
customer03:
Eu não sou muito bom em programação, mas este módulo o faz
b=0;
       }
Mas a questão é que quando o pedido for fechado por SL ou TP, o próximo sinal em M15 será aberto novamente.

Tente fazer um controle para um novo bar no 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:

Experimente um novo controle de barra no 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;
Tentei, mas não houve mudança.
 
customer03:
Eu não sou muito bom em programação, mas este módulo faz isso
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++;
       }
Mas quando o pedido for fechado por SL ou TP, o próximo sinal em M15 o abrirá novamente.

Não, definitivamente não é isso que este pedaço de código faz.

Você precisa verificar se a barra de abertura de posição no período M15 não é igual a zero - então você pode abrir uma posição:

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

Olá! Ajude-me com as aulas, o que estou fazendo de errado?

classe ASD
{
privado:
// As variáveis e funções disponíveis somente dentro da classe estão localizadas aqui
int c (int m_a,int m_b)
{ int m_d = m_a+m_b;}

público:
vazio d (int a,int b )
{
m_a=a+b;
}
// As variáveis e funções disponíveis fora da classe estão localizadas aqui
};
 
Vikon:

Olá! Ajude-me com as aulas, o que estou fazendo de errado?

classe ASD
{
privado:
// As variáveis e funções disponíveis somente dentro da classe estão localizadas aqui
int c (int m_a,int m_b)
{ int m_d = m_a+m_b;}

público:
vazio d (int a,int b )
{
m_a=a+b;
}
// As variáveis e funções disponíveis fora da classe estão localizadas aqui
};
Comece lendo o artigo.
 
Artyom Trishkin:
Comece lendo o artigo.

Eu o leio, mas não o entendo direito.

Eis o que eu recebo:

classe:

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;

  };

roteiro:

#include <ASD.mqh>


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

//| Script program start function                                    |

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

void OnStart()

  {

   ar.a=1;

   ar.b=3;

   Alert(ar.d);

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

O alerta dá zero. O que está errado?

 
Vikon:

Eu o leio, mas não o entendo direito.

Eis o que eu recebo:

classe:


O alerta dá zero. O que há de errado com isso?

É difícil inserir o código através do botão SRC?

Eu inseri o código correto para você.

 
Vikon:

Eu o leio, mas não o entendo direito.

Eis o que eu recebo:

classe:

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;

  };

roteiro:

#include <ASD.mqh>


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

//| Script program start function                                    |

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

void OnStart()

  {

   ar.a=1;

   ar.b=3;

   Alert(ar.d);

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

O alerta dá zero. O que está errado?

Dentro da classe, faça impressões a valores. E depois veja no registro o que será impresso quando você executar o roteiro ;)
 
Artyom Trishkin:
Dentro da classe, faça impressões com os valores. E depois veja no registro o que será impresso quando o roteiro for executado ;)
As impressões só podem ser inseridas dentro de uma função, mas como chamar esta função para fazer a impressão ou alerta funcionar eu não entendo. Você pode ajudar consertando meu código com três variáveis simples???? Eu faço tudo como descrito no artigo, mas o editor não aceita ou falta alguma coisa, em qualquer caso uma parede, é por isso que estou pedindo ajuda. Obrigado por SKC.
Razão: