[ARQUIVO!] Qualquer pergunta de novato, para não desorganizar o fórum. Profissionais, não passem por aqui. Em nenhum lugar sem você - 4. - página 381

 
moskitman:

Isto é da ajuda, mas é possível usar o NULL como um símbolo para "observar" apenas o instrumento no qual a EA está funcionando?

Como este, por exemplo:

NULL não vai funcionar, ao que parece.

Mas Symbol() vai funcionar =)

 

Boa tarde. Tenho a seguinte pergunta. Olivro MQL4localizado na MQL4.community, na seção "Simple MQL Programs ", contém um exemplo de tradingexpert.mq4 com o seguinte conteúdo (ver arquivo anexo). As variáveis externas stopLossduplo externo =200 e externo duplo TakeProfit =39 são declaradas no bloco 1-2. Os blocos 8-9 das funções New_Stop(StopLoss) e New_Stop(TakeProfit) são usados para calcular os parâmetros SL e TP. Há uma descrição da função no bloco 11-12.

Pergunta: O parâmetro formal da função New_Stop tem tipo int(int Parametr), enquanto os parâmetros passados na chamada de função New_Stop(StopLoss)(New_Stop(TakeProfit)) têm tipo duplo... No livro MQL4, encontrado no MQL4.community na seção "Language Basics", subseção "Functions", "Function Properties" diz "O número, tipo e ordem dos parâmetros passados em uma chamada de função deve corresponder ao número, tipo e ordem dos parâmetros formais passados na descrição da função (a exceção é uma chamada de função que tem parâmetros padrão - ver Chamada de Função e Descrição da Função e Operador de Retorno. Como explicar esta contradição: de acordo com esta última, ao declarar variáveis StopLoss e TakeProfit, eu deveria ter indicado int tipo, não duplo(o compilador não dá nenhum erro)?

Para não desperdiçar o fórum, obrigado antecipadamente pela resposta.

Arquivos anexados:
 

Olá, você pode me dar uma dica... Pesquisei metade da Internet, e as informações variam

A essência do Expert Advisor é abrir posições sobre diferentes instrumentos. "Na vida real, funciona e mostra os preços atuais, mas não posso fazer a história... A função retorna zero.

Quero mostrar a cotação atual para duas moedas EURUSD e EURCHF, por exemplo.

Estou chamando a citação atual com esta função (estou seguindo o histórico quando o gráfico EURUSD está ativo):

MarketInfo("EURUSD",MODE_BID) ---> obter preço atual

MarketInfo("EURCHF ",MODE_BID) ---> devolve zero

Descobri neste fórum que o MarketInfo não funciona na história, use o "iClose".

Mas quando eu chamo de orçamento usando o

iClose("EURUSD",PERÍODO_M1,0) ---> Eu recebo o preço atual

iClose("EURCHF",PERÍODO_M1,0) ---> devolve zero

De que outra forma posso obter as citações atuais para diferentes instrumentos no testador de estratégia? Obrigado

 
faton:

O testador MT4 não é multi-moeda. Em outras palavras, somente os EAs de moeda única podem ser testados.

 
moskitman:

O testador MT4 não é multi-moeda. Em outras palavras, somente os EAs de moeda única podem ser testados.


obrigado
 
faton:

obrigado

Mais precisamente, teste em uma ferramenta e você pode usar outras ferramentas para análise.
 
sergeev:


obrigado por sua ajuda!))
 
DhP:

Ou assim parece:

obrigado por seu feedback!!! muito útil!
 
7777877:

Boa tarde. Tenho a seguinte pergunta. Olivro MQL4localizado na MQL4.community, na seção "Simple MQL Programs ", contém um exemplo de tradingexpert.mq4 com o seguinte conteúdo (ver arquivo anexo). As variáveis externas stopLossduplo externo =200 e externo duplo TakeProfit =39 são declaradas no bloco 1-2. Os blocos 8-9 das funções New_Stop(StopLoss) e New_Stop(TakeProfit) são usados para calcular os parâmetros SL e TP. Há uma descrição da função no bloco 11-12.

Pergunta: O parâmetro formal da função New_Stop tem tipo int(int Parametr), enquanto os parâmetros passados na chamada de função New_Stop(StopLoss)(New_Stop(TakeProfit)) têm tipo duplo... No livro MQL4.community, encontrado em MQL4. community no capítulo "Language Fundamentals" na seção "Functions", subsecção "Function Properties" diz "O número, tipo e ordem dos parâmetros passados em uma chamada de função deve corresponder ao número, tipo e ordem dos parâmetros formais passados na descrição da função (a exceção é uma chamada de função que tem parâmetros padrão - ver Chamada de Função e Descrição da Função e Operador de Retorno. Como explicar esta contradição: de acordo com esta última, ao declarar variáveis StopLoss e TakeProfit, eu deveria ter declarado int tipo, não duplo(o compilador não gerou nenhum erro)?

Agradecemos antecipadamente pela resposta, não para deitar lixo no fórum.

Os parâmetros externos (stopLoss duplo externo =200; TakeProfit duplo externo =39; ), em princípio, devem ser do tipo inteiro (mais exatamente, segundo a idéia do autor - é um valor em pontos). Ao chamar a função, é utilizada a conversão do tipo implícito. O tipo de ponto flutuante é convertido para o tipo inteiro com perda de precisão. Neste caso, não importa: o tamanho da parada e do lucro, como pretendido, é fixado em pips - é sempre inteiro.

IMHO, o código do exemplo está mal escrito.

Usar o valor absoluto das constantes é um estilo muito ruim e errado, com nomes mnemônicos.

         if (OrderType()>1)                     // Попался отложенный
           {
 

A pior implementação da enumeração da ordem: é difícil pensar em uma ordem mais "retardada". Parece ser especialmente lento: cálculos extras, chamadas de funções desnecessárias - a operação mais cara em termos de tempo e, além disso, a cada iteração do loop. E isto apesar do fato de que o número de pedidos não muda dentro do loop.

   for(int i=1; i<=OrdersTotal(); i++)          // Цикл перебора ордер
     {
      if (OrderSelect(i-1,SELECT_BY_POS)==true) // Если есть следующий
        {                                       // Анализ ордеров:
 
Desculpe, mas eu costumava trabalhar em Rumuse e agora estou aprendendo MT4. Eu ainda sou um "Dummie" aqui . 11 .09 . Não posso iniciar as citações. Por favor, diga-me o que está errado. Terei prazer em ajudá-los.