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

 
first_may:
Existe uma função de exemplo para trabalhar com datas, ou seja, para determinar a diferença entre duas datas, ela é maior que zero ou não?

e o que é uma data no seu entendimento e na compreensão da MQL ?
 

Pessoal, ajudem-me a entender o código. A tarefa principal é eliminar uma ordem pendente quando um certo nível é alcançado.

if (OrdersTotal()!=0 && Bid == Delete_Level)
   {
   for (int i=1; i<=OrdersTotal(); i++) //Cycle for all orders..
      { 
         if(OrderSelect(i-1,SELECT_BY_POS)==true)//If there is the next one
            { 
               if(OrderType()>1) 
                  {
                  if(OrderDelete(OrderTicket())==true)
                  {
                  Alert ("Ордера удалены");
                  }
                  }
            } 
      }
   }

O nível Delete_Level é determinado pela posição de MA 30 em 3 barras até o momento atual.

double MA3 = iMA(NULL, 0, MA_Period_2, 0, MODE_SMA, PRICE_CLOSE, 2); //определение уровня MA

double Delete_Level = MA3;// Определение значения переменной

Mas o pedido não é excluído neste Nível_De_eliminação. Ajude-me a entender qual é o meu erro.

 
onde chega o algoritmo? Imprima o código e confira-o.
 
O que você quer dizer com "para onde vai o algoritmo"?
 
vovan-gogan:
O que você quer dizer com "para onde vai o algoritmo"?

Você diz que não é apagado, o que significa que não vai para OrderDelete.

Então a questão é: para onde vai? Que condição a está bloqueando?

 
sergeev:

Você diz que ela não é apagada, o que significa que não chega à OrderDelete.

A questão é onde ela chega? Que condição a bloqueia?


Eu entendo a lógica. Vou tentar consertá-lo agora.
 

Algo se esclareceu. Mas ainda não se sabe como resolvê-lo. Usando o Alerta, eu acho que a condição

if (OrdersTotal()!=0 && Bid == Delete_Level)

não está satisfeito. Apenas "if(OrderTotal()!=0" separadamente sim, mas não junto com "Bid == Delete_Level". Qual é a razão para isto? Por que quando o Delete_Level é alcançado, a ordem pendente não é excluída. Por favor, sugira algo ou sugira uma solução alternativa para excluir uma ordem pendente quando ela chegar ao nível Delete_Level.

 
vovan-gogan:

Algo se esclareceu. Mas ainda não consigo descobrir como resolvê-lo. Usando o Alerta, eu acho que a condição

não está satisfeito. Apenas "if(OrderTotal()!=0" separadamente sim, mas não junto com "Bid == Delete_Level". Qual é a razão para isto? Por que quando o Delete_Level é alcançado, a ordem pendente não é excluída. Por favor, sugira algo ou sugira uma solução alternativa para apagar uma ordem pendente quando ela chegar ao nível Delete_Level.


Normalize estas variáveis, "reduza-as a um denominador comum" - por exemplo, use alguma tolerância (+/-) do valor da variável Delete_Level, porque não há igualdade exata como você tem agora - Bid == Delete_Level.
 
vovan-gogan:

Algo se esclareceu. Mas ainda não consigo descobrir como resolvê-lo. Usando o Alerta, eu acho que a condição

não está satisfeito. Apenas "if(OrderTotal()!=0" separadamente sim, mas não junto com "Bid == Delete_Level". Qual é a razão para isto? Por que quando o Delete_Level é alcançado, a ordem pendente não é excluída. Por favor, sugira algo ou sugira uma solução alternativa para excluir uma ordem pendente quando ela chegar ao nível Delete_Level.


Por exemplo,
if(Bid-MarketInfo(Symbol(),MODE_SPREAD)*Point< Delete_Level && Bid+MarketInfo(Symbol(),MODE_SPREAD)*Point > Delete_Level) - считать за 
if( Bid == Delete_Level )  
 

Desculpe, mas você poderia ir com calma?) Ajude-me a entender o erro em

Bid == Delete_Level