[ARQUIVO]Qualquer pergunta de novato, para não desorganizar o fórum. Profissionais, não passem por ela. Não posso ir a lugar nenhum sem você - 5. - página 358

 
Chiripaha:

Este parâmetro é responsável pela cor da seta de exclusão https://docs.mql4.com/ru/trading/OrderDelete - Você pode removê-lo (o parâmetro) de lá completamente, então a seta não aparecerá apenas. E se você realmente precisar de uma seta, é melhor reler a seção Tipos de Variáveis do livro.

A propósito, sou o mesmo não particularmente sofisticado em codificação (algumas pessoas o chamam de programação, não distinguindo entre estes conceitos - mas é codificação). Assim como entrar em livros de referência e pesquisar o que são essas coisas. Mastigar com mais freqüência livros de referência e livros didáticos. Como regra geral, a maioria das questões é coberta lá. - Todos fazem isso, mesmo os mais experientes, pois não se pode memorizar tudo. Todos estes são materiais de referência.

clDelete - como você pode adivinhar, cl é cor, Delete é exclusão. A cor da eliminação.


Muito obrigado pela resposta. Eu já apaguei a variável clDelete

void DeleteOrders(string sy="", int op=-1, int mn=-1) {
  int i, k=OrdersTotal(), ot;
  
  if (sy=="") sy=Symbol();
  for (i=0; i<k; i++) {
    if (OrderSelect(i, SELECT_BY_POS, MODE_TRADES)) {
      ot=OrderType();
      if (ot==OP_SELLSTOP) {
        if (OrderSymbol()==sy && (op<0 || ot==op)) {
          if (mn<0 || OrderMagicNumber()==mn) 
          {
          OrderDelete(OrderTicket());
          }

Mas, neste caso, o compilador gera outro erro.

DeleteOrders' - função não retorna nenhum resultado C:\Program Files\Alpari NZ MT4\experts/delete.mq4 (68, 5)

Como consertá-lo.


 
solnce600:

Boa tarde a todos!

Estou tentando usar a função para apagar TODAS as ordens pendentes no testador das funções da Kim

Quando tento compilá-la, recebo um erro dizendo que a variável 'clDelete ' não está definida.

clDelete' - variável não definida C:\Program Files\Alpari NZ MT4\experts\Positive.mq4 (94, 38)

Por favor, me diga - como e onde deve ser definido?

Obrigado.

Primeiro, reverta o laço:

    for (i = k - 1; i <= 0; i--)

e dar à função OrderDelete() o que ela quer.

 
TarasBY:

Enumeração do conjunto:

- Se eu entendi corretamente seus "desejos".

Igor, muito obrigado!

Pelo que entendi, não há nenhuma função especial, por isso tem que ser força bruta.

 
Chiripaha:

Igor, muito obrigado!

Pelo que entendi, não há nenhuma função especial, por isso tem que ser exagerada.

Não há uma função padrão.
 
solnce600: DeleteOrders' - função não retorna nenhum resultado C:\Program Files\Alpari NZ MT4\experts\Orders.mq4 (68, 5)

Sua função (autoescrita) DeleteOrders() retorna NOTHING! Veja em seu código - como você o chama.
 

Muito obrigado por sua pronta resposta.

O laço foi implantado.

Agora ele gera outro erro

DeleteOrders' - a função DeleteOrders não retorna nenhum resultado

E o que mais a função OrderDelete(OrderTicket()) precisa como parâmetro passado, exceto OrderTicket() e além da cor da seta (que eu não preciso)?

void DeleteOrders(string sy="", int op=-1, int mn=-1) {
  int i, k=OrdersTotal(), ot;
  
  if (sy=="") sy=Symbol();
   for (i = k - 1; i <= 0; i--) {
    if (OrderSelect(i, SELECT_BY_POS, MODE_TRADES)) {
      ot=OrderType();
      if (ot==OP_SELLSTOP) {
        if (OrderSymbol()==sy && (op<0 || ot==op)) {
          if (mn<0 || OrderMagicNumber()==mn) 
          {
          OrderDelete(OrderTicket());
 
TarasBY:
Sua função (autoescrita) DeleteOrders() devolve NOTHING! Veja o seu código - como você o chama.
Isto é, deve haver linhas VERDADEIRO ou FALSO no final de seu código de função personalizado?
 
TarasBY:
Sua função (autoescrita) DeleteOrders() retorna NOTHING! Veja em seu código - como você o chama.

Linhas inseridas no final do código de função que retornam verdadeiro

Mudou a chamada de função

R = DeleteOrders(true);
if(R ==true )

Ticket=OrderSend(Symbol(),OP_SELLSTOP,0.1,iHigh( Símbolo (), 0,1)-1500*Point,1,iHigh( Símbolo (), 0,1),iHigh( Símbolo (), 0,1)-1610*Point, "jfh",123 );//ENA
//Ticket=OrderSend(Symbol(),OP_SELLSTOP,0.1,iHigh( Símbolo (), 0,1)-1000*Point,1,iHigh( Símbolo (), 0,1)+330*Point,iHigh( Símbolo (), 0,1)-1100*Point, "jfh",123 );//ENA
if (Bilhete>0)
X=iHigh( Símbolo (), 0,1);
if (OrderSelect (ot-1,SELECT_BY_POS)
if ( OrderType ()==OP_SELLSTOP)
DT = OrderOpenTime ();

}
}

return(0);

void DeleteOrders(string sy=""", int op=-1, int mn=-1) {
int i, k=OrdersTotal(), ot;

if (sy=="") sy=Symbol();
for (i = k - 1; i <= 0; i--) {
if (OrderSelect(i, SELECT_BY_POS, MODE_TRADES)) {
ot=OrderType();
if (ot===OP_SELLSTOP) {
if (OrderSymbol()==sy && (op<0 || ot===op)) {
if (mn<0 || OrderMagicNumber()==mn)
{
int W = OrderDelete(OrderTicket());
if (W===verdadeiro)
return(true);

Retorna o mesmo erro.

'DeleteOrders' - função não retorna nenhum resultado

Poderia me dizer qual é o meu erro?

Obrigado.

 
solnce600:

Linhas inseridas no final do código de função que retornam verdadeiro

Mudou a chamada de função

R = DeleteOrders(true);
if(R ==true )

O tipo de função foi esquecido:

void bool DeleteOrders (string sy="", int op=-1, int mn=-1)
 
TarasBY:

O tipo de função é esquecido:

Tudo OK!!! Muito obrigado!!!