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

 
Sabit Dosaev:
Pergunta simples. A coruja não compila. Há um erro no final do código. + __FUNCSIG__
+ ": "+Market_Err_To_Str(errIndex)
+ "; bilhete de pedido = " + (string)OrderTicket()
+ "; tipo de pedido = " + (string)OrderType()
+ "; Order Stop Loss = " + DoubleToStr(OrderStopLoss(), Digitos())
+ "; novo Stop Loss = " + DoubleToStr(newStopLoss, Digits())
+ "; Bid = " + DoubleToStr(Bid, Digits())
+ "; Ask = " + DoubleToStr(Ask, Digits())
);
}
}
lastSetNonlosTryTime = TimeLocal();
}


Lança um erro de tempo de compilação. Por favor, ajude se você puder. Obrigado!

Insira o código corretamente:


И... não está claro no pedaço de código qual é seu erro. O código deve ser reprodutível.

 
string LastComm(int a_magic_0)
  {
   int l_hist_total_4 = OrdersHistoryTotal();
   int l_datetime_8 = 0;
   int l_datetime_12 = 0;
   string ls_ret_16 = "0";
   for(int l_pos_24 = 0; l_pos_24 < l_hist_total_4; l_pos_24++)
     {
      OrderSelect(l_pos_24, SELECT_BY_POS, MODE_HISTORY);
      l_datetime_8 = OrderCloseTime();
      if(l_datetime_8 > l_datetime_12 && OrderMagicNumber() == a_magic_0)
        {
         l_datetime_12 = l_datetime_8;
         ls_ret_16 = OrderComment();
        }
     }
   return (ls_ret_16);
  }

@Artyom Trishkin

Como posso converter esta função para MQL5 a partir de MQL4?

 

Boa tarde a todos.

Você poderia me dizer onde inserir a função IsConnected () para determinar o status da comunicação?

Se eu inseri-lo dentro da função OnTick(), então sempre há conexão (ou seja, há chegada do tick, então há conexão, nenhuma chegada do tick (devido a sua ausência ou ausência de conexão) significa que não há chamada para OnTick() e respectivamente para a função que define o estado de conexão IsConnected ())) Sobre isso é inútil inserir IsConnected () em frameworks OnTick () (quantas vezes eu não desliguei a Internet, mesmo assim ela não escreve em um arquivo sobre ausência de comunicação)

Por este motivo, a pergunta onde inserir corretamente a função IsConnected () ou quais são as outras formas de determinar o status da conexão (somente para MT4)

Obrigado!

 
Roni Iron:

Boa tarde a todos.

Você poderia me dizer onde inserir a função IsConnected () para determinar o status da comunicação?

Se eu inseri-lo dentro da função OnTick(), então sempre há conexão (ou seja, há chegada do tick, então há conexão, nenhuma chegada do tick (devido a sua ausência ou ausência de conexão) significa que não há chamada para OnTick() e respectivamente para a função que define o estado de conexão IsConnected ())) Sobre isso é inútil inserir IsConnected () em frameworks OnTick () (quantas vezes eu não desliguei a Internet, mesmo assim ela não escreve em um arquivo sobre ausência de comunicação)

Por este motivo, a pergunta onde inserir corretamente a função IsConnected () ou quais são as outras formas de determinar o status da conexão (somente para MT4)

Obrigado!

OnTimer()

Документация по MQL5: Обработка событий / OnTimer
Документация по MQL5: Обработка событий / OnTimer
  • www.mql5.com
//|                                               OnTimer_Sample.mq5 | //|                        Copyright 2018, MetaQuotes Software Corp. | //|                                             https://www.mql5.com | //| Expert initialization function                                   |...
 
Roman Shiredchenko:

você tem uma confusão de variáveis e funções, se é uma função, tente desta forma:

ALT + S para o código

Obrigado

Roman Shiredchenko:

você tem confusão sobre variáveis e funções, se for uma função, tente isto:

ALT + S

Sim, é uma função.

Obrigado, mas isso dá um erro por algum motivo

'}' - nem todos os caminhos de controle retornam um valor

embora eu pareça ter verificado tudo corretamente, tanto no meu código como em um modelo vazio.

ALT + S - obrigado, levarei isso em conta

 
wolder1:

Obrigado

Sim, é uma função.

Obrigado, mas por alguma razão ele dá um erro

'}' - nem todos os caminhos de controle retornam um valor

Embora os parênteses pareçam estar corretos, tanto no meu código como no modelo vazio.

ALT + S - obrigado, vou levar isso em consideração.

Uma boa pergunta contém a resposta (C)

 
wolder1:

Obrigado

Sim, é uma função.

Obrigado, mas por algum motivo dá um erro

'}' - nem todos os caminhos de controle retornam um valor

Embora eu tenha verificado tudo corretamente com parênteses tanto no meu código como em um modelo vazio.

ALT + S - obrigado.

O dobro da função deve retornar um valor, não se a função for nula .

se você tiver variáveis definidas acima em seu código, elas podem ser comentadas + você tinha espaços extras aqui (Lance > = L8b)) - Fez uma edição:

double lot=0; //, Lots;
//   double L0a3, L2a3, L5a3, L8a3, L0b1, L2b1, L5b1, L8b1, L0a, L2a, L5a, L8a,L0b,L2b,L5b,L8b,L0a1,L2a1,L5a1,L8a1,L0b3,L2b3,L5b3,L8b3;  
double _LOTS()
  {
   double lot=0, Lots;
   double L0a3, L2a3, L5a3, L8a3, L0b1, L2b1, L5b1, L8b1, L0a, L2a, L5a, L8a,L0b,L2b,L5b,L8b,L0a1,L2a1,L5a1,L8a1,L0b3,L2b3,L5b3,L8b3;  
   if((Ask <= L0a3) || (Ask <= L2a3) || (Ask <= L5a3) || (Ask <= L8a3) || (Bid >= L0b1) || (Bid >= L2b1) ||
      (Bid >= L5b1) || (Bid >= L8b1))
      {
       lot=(NormalizeDouble(Lots, 2));
       Print(" lot = ", lot); 
       return(lot);
      }
      
    if((Ask <= L0a) || (Ask <= L2a) || (Ask <= L5a) || (Ask <= L8a) || (Bid >= L0b) || (Bid >= L2b) ||
      (Bid >= L5b) || (Bid >= L8b))
      {
       lot=(NormalizeDouble((Lots*1.5), 2));
       Print(" lot = ", lot); 
       return(lot);
      }
     
    

   if((Ask <= L0a1) || (Ask <= L2a1) || (Ask <= L5a1) || (Ask <= L8a1) || (Bid >= L0b3) ||
      (Bid >= L2b3) || (Bid >= L5b3) || (Bid >= L8b3))      
      {
       lot=(NormalizeDouble((Lots*2.5), 2));
       Print(" lot = ", lot); 
       return(lot);
      }
    return(lot);  
  } 
 

Bom dia.

Pergunta. No testador, na interface do lado do dia (quando a linha do dia seguinte passar), o programa deveria ter colocado um pedido pendente. A ordem pendente que já estava lá e o preço a tocou, foi aberta mas a instrução para abrir outraordem pendente foi ignorada pelo sistema por algum motivo. Isso também pode acontecer em uma conta real onde as instruções do robô são simplesmente ignoradas e, portanto, a ação necessária não é executada?


E outra pergunta. Estou realizando um Teste de Estratégia, mas fiquei muito confuso com o fato de que ele passa cerca de uma semana na visualização e depois exibe a seguinte mensagem

177564 eventos de tick (447 barras, 7888506 estados de barras) processados em 0:17:42.694 (tempo total 0:17:48.217)

177564 eventos de tick (447 barras, 7888506 estados de barras) processados a 0:17:42.694 (tempo total 0:17:48.217)

Eu não entendo, ele está muito ocupado para continuar testando? Ou ele está tão preocupado e preocupado com os recursos do meu computador? Não vejo nenhuma mensagem de erro. Ela simplesmente termina por si mesma. Embora eu tenha definido a data não 7 dias, mas 7 meses. Eu gostaria de ver todo o caminho de teste do início ao fim.

Que religião não lhe permite testar visualmente, por exemplo, um ano ou vários anos? E você pode ver visualmente como seu programa funcionou durante o ano anterior, por exemplo.


E mais uma pergunta. (Embora possa estar sem resposta)) ) Como pode acontecer que o testador 2 volte a trabalhar como deveria, e pouco antes da inscrição acima mencionada no dia simplesmente ignore todas as instruções. Como é possível que o programa tenha funcionado corretamente para várias rodadas (abriu ordens e depois as fechou), e depois, boom, ele ignora tudo. Também não abre nem fecha. É por causa do fim de um período de testes ou há outras razões?

 

Boa tarde!!!

Preciso da hora do último pedido fechado.

Eu escrevi uma função, mas ela não funciona corretamente.

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

//| Hora do último pedido fechado |

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

duplo Last_Ticets_Close()

{

Last_Ticet = 0;

Last_OrClTime = 0;


for(int i=0; i<OrdersTotal(); i++)

{

if(OrderSelect(i,SELECT_BY_POS,MODE_HISTORY ))

{

if(OrderSymbol()==Symbol() && OrderMagicNumber()==magic)

{

if(Last_Ticet<OrderTicket())

{

Last_Ticet = OrderTicket();

Last_OrClTime = OrderCloseTime();

}

}

}

}

retorno (Last_Ticet);

}

Alguém pode me dizer o que está errado.

 
142vs:

Boa tarde!!!

Preciso da hora do último pedido fechado.

Escreveu um f-iio, mas não funciona corretamente.

Qualquer um pode sugerir o que está errado.

na busca de um tempo posterior, comparar tempos, não bilhetes

Razão: