Qualquer pergunta de novato, de modo a não desorganizar o fórum. Profissionais, não passem por aqui. Em nenhum lugar sem você - 6. - página 137

 

E então ele também precisará fazer a saída de mensagens não por comentários, mas por objetos, e de uma forma maior...

Uma pessoa nunca aprenderá a pensar de tal maneira.

 
artmedia70:
Basta ter em mente que a variável é reinicializada no reinício. Portanto, esta abordagem é aceitável para um testador, mas não para o comércio real.


Obrigado pela informação, o que fazer então? Devo apenas escrever o valor na GV ???? Ou existe alguma outra opção para o comércio real...

 
ALXIMIKS:

Obrigado pela informação, o que devo fazer então? Marque o valor em GV ??? Ou existe alguma outra opção para real...
Esqueça as bandeiras globais. Eu não sei por que você precisa de bandeiras e o que elas indicam. É por isso que é difícil aconselhar em relação à sua situação.
 
Zolotai:
Pessoal, vocês poderiam sugerir um indicador? É baseado em dois slides. E quando atravessa, dá a direção como flechas. Não consigo encontrá-lo, obrigado.
i-PSI@MA_Signal a partir daqui.
 
ALXIMIKS:

Bom dia, se não for muito difícil, por favor, avise um novato:

1) Como declarar um array de tamanho igual ao valor de alguma variável? (se i=7 declarar array duplo Muss[7] e assim por diante);

já respondido

2) Por que uma matriz em uma função do usuário é considerada declarada e utilizada adequadamente se a condição é sempre falsa?

enquanto (falso){

Alerta("aaaaaaaaaaaa" );

estático duplo Buf_max [9000000];

Buf_min duplo estático [9000000];}

porque foi declarado como estático. Na MQL, todas as variáveis estáticas são inicializadas antes de chamar a função init()

3) Existe uma diferença em uma função do usuário e, em geral, entre uma matriz simples e uma matriz estática?

uma matriz simples será rubricada na primeira vez que você entrar na função onde ela é declarada. Entretanto, na saída, se você o redimensionou antes, o novo valor não será redefinido e, na próxima vez que a função for chamada, a matriz terá o mesmo tamanho que deixamos da última vez.

Ou seja, de modo geral, a diferença entre simples e estático está apenas no momento da inicialização.

 
O que pode ser feito no erro "1"-->(nenhum erro, mas resultado desconhecido) ?
 

Tenho escrito aqui uma função para apagar ordens pendentes. Mas, por alguma razão, não os elimina. Aqui está o código:

void DeletePendingOrders()
{
    int NumberOfTry = 0,
        err,
        ticket;

   for (int i=OrdersTotal()-1; i>=0; i--)
   {
      if (!OrderSelect(i, SELECT_BY_POS,MODE_TRADES)) continue;
      if (OrderMagicNumber() != i_magic) continue;
      if (OrderSymbol() != Symbol()) continue;
      if (OrderType() > 1)
      {
         ticket = OrderTicket();
      
         while (NumberOfTry < 3)
         {
            while (!IsTradeAllowed()) Sleep(5000);
      
            if (OrderDelete(ticket, Red))
                NumberOfTry = 3;
            else
                err = GetLastError();
      
            if (err > 0)
            { 
              Print(NumberOfTry," #",ticket," Error modifing order: (", err , ") ");
              Sleep(5000); RefreshRates(); NumberOfTry++;
            }
         }
      }
   }
}

Por que não funciona corretamente? Entendo que pode ser reescrito de forma diferente, mas quero entender por que este código não cumpre seu propósito.

 
hoz:

Tenho escrito aqui uma função para apagar ordens pendentes. Mas, por alguma razão, não os elimina. Aqui está o código:

Por que não funciona corretamente? Entendo que pode ser reescrito de forma diferente, mas quero entender porque este código não funciona como pretendido.

Eu inseriria uma linha, de modo a não alterar o código em particular:

            while (!IsTradeAllowed()) Sleep(5000);
            err=0;
            if (OrderDelete(ticket, Red))
                NumberOfTry = 3;
            else
                err = GetLastError();
      
            if (err > 0)
 
Sepulca:

Eu teria inserido uma linha para não alterar o código em particular:


E o que isso nos dará? Ainda sem ordens fechadas e sem erros.

O código foi alterado:

void DeletePendingOrders()
{
    int NumberOfTry = 0,
        err,
        ticket;

   for (int i=OrdersTotal()-1; i>=0; i--)
   {
      if (!OrderSelect(i, SELECT_BY_POS, MODE_TRADES)) continue;
      if (OrderMagicNumber() != i_magic) continue;
      if (OrderSymbol() != Symbol()) continue;
      if (OrderType() > 1)
      {
         ticket = OrderTicket();
      
         while (NumberOfTry < 3)
         {
            while (!IsTradeAllowed()) Sleep(5000);
                err = 0;
              Print("IsTradeAllowed() = ", IsTradeAllowed());
              Print("err = ", err);

            if (OrderDelete(ticket, Red))
            {
                NumberOfTry = 3;
                Print("NumberOfTry", NumberOfTry);
            }
            else
            {
                err = GetLastError();
                Print("err = ", err);
            }
      
            if (err > 0)
            { 
              Print(NumberOfTry," #",ticket," Error modifing order: (", err , ") ");
              Sleep(5000); RefreshRates(); NumberOfTry++;
            }
         }
      }
   }
}

A parte direita do livro de bordo:

2013.09.11 22:24:19     2012.01.02 08:05  Perevorot EURUSD,M5: modify #10 sell stop 0.01 EURUSD at 1.29279 sl: 0.00000 tp: 1.29179 ok
2013.09.11 22:24:19     2012.01.02 08:05  Perevorot EURUSD,M5: open #10 sell stop 0.01 EURUSD at 1.29279 ok
2013.09.11 22:24:19     2012.01.02 08:02  Perevorot EURUSD,M5: Ôóíêöèÿ DeletePendingOrders çàâåðøåíà
2013.09.11 22:24:19     2012.01.02 08:02  Perevorot EURUSD,M5: NumberOfTry3
2013.09.11 22:24:19     2012.01.02 08:02  Perevorot EURUSD,M5: delete #9 sell stop 0.64 EURUSD at 1.29279 sl: 0.00000 tp: 1.29179 ok
2013.09.11 22:24:19     2012.01.02 08:02  Perevorot EURUSD,M5: err = 0
2013.09.11 22:24:19     2012.01.02 08:02  Perevorot EURUSD,M5: IsTradeAllowed() = 1
2013.09.11 22:24:19     2012.01.02 08:02  Perevorot EURUSD,M5: Ôóíêöèÿ ClosePosBySortLots çàêðûëà âñå ðûíî÷íûå îðäåðà
2013.09.11 22:24:19     2012.01.02 08:02  Perevorot EURUSD,M5: close #3 sell 0.01 EURUSD at 1.29303 tp: 1.29203 at price 1.29487
2013.09.11 22:24:19     2012.01.02 08:02  Perevorot EURUSD,M5: close #4 buy 0.02 EURUSD at 1.29403 tp: 1.29503 at price 1.29480
2013.09.11 22:24:19     2012.01.02 08:02  Perevorot EURUSD,M5: close #5 sell 0.04 EURUSD at 1.29286 tp: 1.29186 at price 1.29487
2013.09.11 22:24:19     2012.01.02 08:02  Perevorot EURUSD,M5: close #6 buy 0.08 EURUSD at 1.29386 tp: 1.29486 at price 1.29480
Acontece que o pedido é eliminado. Mas uma. Havia outro, outro, outro. Mas não foi apagado. Mas o ciclo é para todas as encomendas.
 

Observe sua variável NumberOfTry

deve ser fixado em zero para cada bilhete, caso contrário será fixado em 3 ou mais e outras condições não se aplicarão a todos os bilhetes.

apenas um irá satisfazer a condição