Perguntas de Iniciantes MQL5 MT5 MetaTrader 5 - página 1228

 
Vladimir Karputov:

Isto já é então correcto:

e se não conseguir fechar, procurar no ficheiro de registo. Pode haver um milhão de razões: redireccionamento, proibição de comércio, ausência de preços, proximidade de níveis de paragem...

Obrigado. Então é assim) :


void CloseSellPositions()
  {
   for(int i=PositionsTotal()-1;i>=0;i--) // returns the number of current positions
	{
          if(m_position.SelectByIndex(i))     // selects the position by index for further access to its properties
            {
             if(m_position.PositionType()==POSITION_TYPE_SELL)
                m_trade.PositionClose(m_position.Ticket()); // close a position by the specified symbol
            }
	}


  }

Acabou de acrescentar parênteses. Para que os novatos não fiquem confusos.

 

Olá. Utilizo frequentemente uma string como esta num programa para escrever registos em ficheiros separados:

StringConcatenate(M,"Начинаем проверять время работы модулей. i=",i); Log.write(M,__FILE__,__LINE__);

Pode dizer-me como encurtar esta linha? De facto, apenas a cadeia de saída em si e o nome da variável para a qual eu saio é alterado aqui.

Tentei usar definir

#define  LOG(LogPerem,StrMes) StringConcatenate(M,StrMes,""); LogPerem.write(M,__FILE__,__LINE__);

mas se eu lhe chamar assim, não funcionará mais:

LOG(Log,"i=",i);
 
pivomoe:

Olá. Utilizo frequentemente uma string como esta num programa para escrever registos em ficheiros separados:

Pode dizer-me como encurtar esta linha? De facto, apenas a cadeia de saída em si e o nome da variável para a qual eu saio é alterado aqui.

Tentei usar definir

mas chamar-lhe assim não funcionará mais:

Tem conhecimentos sobre o pré-processador?

O seu

LOG("i=",i);
desdobra-se em
StringConcatenate(M,i,""); "i=".write(M,__FILE__,__LINE__);;

e é isso que é alimentado pelo compilador.

Nem sequer é engraçado. Prescrição um: ler doku, de preferência não local, local já implica alguma compreensão da terminologia.

Tente isto, pode ajudar: https://metanit.com/cpp/c/3.1.php

С | Препроцессор
  • metanit.com
Препроцессор является обязательным компонентом компилятора языка Си. Препроцессор обрабатывает исходный текст программы до ее непосредственной компиляции. Результатом работы препроцессора является полный текст программы, который передается на компиляцию в исполняемый файл. Для управления препроцессором применяются директивы, каждая из которых...
 
Vladimir Simakov:

Nem sequer é engraçado. Há apenas uma receita: fumar as docas, de preferência não as locais, porque as locais já implicam alguma compreensão da terminologia.

Tente isto, no caso de ajudar: https://metanit.com/cpp/c/3.1.php

O que quer dizer de repente? Ajudou-o? Pode encurtar a minha linha com definir?


Alterei uma linha de código na minha pergunta

LOG("i=",i);

para .

LOG(Log,"i=",i);
 
pivomoe:

Olá. Utilizo frequentemente uma string como esta num programa para escrever registos em ficheiros separados:

Pode dizer-me como encurtar esta linha? De facto, apenas a cadeia de saída em si e o nome da variável para a qual eu saio é alterado aqui.

Tentei usar definir

mas se eu lhe chamar assim, já não funcionará:

Resolvi o meu problema utilizando folhas de funções como esta:

template<typename T1,typename T2,typename T3,typename T4,typename T5,typename T6,typename T7,typename T8,typename T9,typename T10>
void Write(T1 var1,T2 var2,T3 var3,T4 var4,T5 var5,T6 var6,T7 var7,T8 var8,T9 var9,T10 var10,string ffile,int line)
  {
   string Str;
   StringConcatenate(Str,var1,var2,var3,var4,var5,var6,var7,var8,var9,var10);
   write(Str,ffile,line);
  }; 

Agora chamo o seguinte no meu programa

   Log.Write("Test1",__FILE__,__LINE__);  
 
pivomoe:

O que quer dizer de repente? Funcionou para si? Pode encurtar a minha linha usando definir ?


Alterei uma linha de código na minha pergunta

para

Posso. LOG("Texto"); dei um exemplo de como isto é implementado - procure-o algures no fórum.
 

Boa tarde, eis o problema: tenho um EA que chama um indicador personalizado para exibir dados, tudo funciona bem no testador de estratégia, mas no modo de comércio real quando inicio o EA, o indicador não é exibido. No diário de bordo escreve indicador personalizado carregado com sucesso, parece enferrujar, envia mensagens de texto, mas no gráfico da lista de indicadores também não o é. Ao mesmo tempo, se eu o arrastar para o gráfico, ele recolhe os dados e tudo é exibido normalmente. O indicador está localizado na pasta Indicadores, na função iCustom(NULL,0, "Nome do Indicador",Count). Também tentei acrescentar #resource "Indicator name.ex5", iCustom(NULL,0,"::Indicators name.ex5",Count) mas sem diferença. Qual é a razão?

 

existe uma configuração para remover os valores actuais dos amortecedores indicadores?


 
Comentários não relacionados com este tópico foram transferidos para "Perguntas dos principiantes do MQL4 MT4 MetaTrader 4".
 

Caros Profissionais, poderiam aconselhar se é possível obter os valores de LER durante uma semana no código de consultor, mas calcular os valores para a semana, que não começa na segunda-feira, mas por exemplo a partir de quarta-feira (ou seja, a semana de quarta-feira para a próxima quarta-feira). Tanto quanto sei, não pode ser feito com o iRSI?

Até agora só consigo ver uma forma de escrever o código para o cálculo por mim próprio. Existe uma solução mais simples ou uma solução já feita?