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

 
Artyom Trishkin:

Já houve uma vez uma pergunta como esta:


Alexey Viktorov:

lote = (valor_valor_absoluto(profit_order) + lucro desejado) / (tamanho_padrão_contrato * ponto TR *)

Obrigado, Artyom Trishkin.

Obrigado, Alexey Viktorov.

 
Karputov Vladimir:
Compreende a própria definição de "operação assíncrona"? Se o fizer, não deverá ser feita qualquer pergunta.
Compreendo-o muito bem! Foi por isso que perguntei. Não pretendo lutar com competência para mijar consigo.
 

Colegas, ajudemum programador novato.

Tentei inventar um código de função personalizado, de modo que quando defino a hora em definições no formato habitual "13:45" para três sessões de tempo, a minha função voltará a ser verdadeira ou falsa. A ideia era inserir primeiro a função no Expert. Verificaria o valor e, se fosse verdade, poderíamos negociar e seguir em frente.

Tudo parecia estar a correr bem, todos os parâmetros devolvidos foram verificados com Alerta, para que tudo ficasse claro em todas as fases, mas no final percebi que devo tê-lo declarado incorrectamente na função Iniciar, porque gerou erro "contagem de parâmetros errados".

O código é longo, vou dar-vos os destaques:

--------------------------------

nulo OnTick()

{

bool TradingAllowed = falso;

TradeTimeAllowed (TradingAllowed);

se (TradingAllowed = true) { Alerta ("Comprar 1 lote");}

senão {Alerta ("Não é permitido o comércio"); }

}

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

bool TradeTimeAllowed (string TS1, string TE1, string TS2, string TE2, string TS3, string TE3) //é uma função em si. Testei-a inserindo no OnTick via Alerta. Produz verdadeiro ou falso.

{ ....................}

---------------------

E o segundo problema está na própria função no final.

Agora está aí incorrectamente colocado:

se (Trade_Session_1 = verdadeiro) TradeTime_Ok = verdadeiro;

se (Trade_Session_2 = verdadeiro) TradeTime_Ok = verdadeiro;

se (Trade_Session_3 = verdadeiro) TradeTime_Ok = verdadeiro;

return(TradeTime_Ok);

// ou seja, o problema é "quem é o último, quem é o próximo". Se o primeiro período for verdadeiro ou o segundo for verdadeiro, e o terceiro for falso, lembrar-se-á de falso. Mas segundo a minha ideia, se pelo menos uma delas for verdadeira, o valor final ainda é verdadeiro.

Tentei pôr as coisas desta forma:

se (Trade_Session_1 = verdadeiro || Trade_Session_2 = verdadeiro ||| Trade_Session_3 = verdadeiro) TradeTime_Ok = verdadeiro; // mas escreve um erro como este. Não sei do que é que ele não gosta.

Bom conselho, por favor.


 

O primeiro problema foi resolvido com a ajuda do tipo de pessoas do fio vizinho. A função é chamada correctamente e produz o valor requerido.

O segundo problema mantém-se:

E o segundo problema está na própria função no final.

Está aí incorrectamente escrito agora:

se (Trade_Session_1 = verdadeiro) TradeTime_Ok = verdadeiro;

se (Trade_Session_2 = verdadeiro) TradeTime_Ok = verdadeiro;

se (Trade_Session_3 = verdadeiro) TradeTime_Ok = verdadeiro;

return(TradeTime_Ok);

// ou seja, o problema é "quem é o último, quem é o próximo". Se o primeiro período for verdadeiro ou o segundo for verdadeiro, e o terceiro for falso, lembrar-se-á de falso. Mas segundo a minha ideia, se pelo menos uma delas for verdadeira, o valor final ainda é verdadeiro.

Tentei pôr as coisas desta forma:

se (Trade_Session_1 = verdadeiro || Trade_Session_2 = verdadeiro ||| Trade_Session_3 = verdadeiro) TradeTime_Ok = verdadeiro; // mas escreve um erro como este. Não sei do que é que ele não gosta.

Bom conselho, por favor.

 

Transferido de

Andrey Koldorkin:

Colegas, ajuda para um programador novato.

Tentei juntar algum código para uma função personalizada para retornar verdadeiro ou falso para três sessões de tempo, quando defini o tempo em configurações no formato familiar "13:45". A ideia era inserir primeiro a função no Expert. Verificaria o valor e, se fosse verdade, poderíamos negociar e seguir em frente.

Tudo parecia estar a correr bem, todos os parâmetros devolvidos foram verificados com Alerta, para que tudo ficasse claro em todas as fases, mas no final percebi que devo tê-lo declarado incorrectamente na função Iniciar, porque gerou erro "contagem de parâmetros errados".

O código é longo, vou dar-vos os destaques:

--------------------------------

nulo OnTick()

{

bool TradingAllowed = falso;

TradeTimeAllowed (TradingAllowed);

se (TradingAllowed = true) { Alerta ("Comprar 1 lote");}

senão {Alerta ("Não é permitido o comércio"); }

}

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

bool TradeTimeAllowed (string TS1, string TE1, string TS2, string TE2, string TS3, string TE3) // aqui está uma função. Verifiquei-a inserindo no OnTick via Alerta. Produz verdadeiro ou falso.

{ ....................}

---------------------

E o segundo problema está na própria função no final.

Agora está aí incorrectamente colocado:

se (Trade_Session_1 = verdadeiro) TradeTime_Ok = verdadeiro;

se (Trade_Session_2 = verdadeiro) TradeTime_Ok = verdadeiro;

se (Trade_Session_3 = verdadeiro) TradeTime_Ok = verdadeiro;

return(TradeTime_Ok);

// ou seja, o problema é "quem é o último, quem é o próximo". Se o primeiro período for verdadeiro ou o segundo for verdadeiro, e o terceiro for falso, lembrar-se-á de falso. Mas segundo a minha ideia, se pelo menos uma delas for verdadeira, o valor final ainda é verdadeiro.

Tentei pôr as coisas desta forma:

se (Trade_Session_1 = verdadeiro || Trade_Session_2 = verdadeiro ||| Trade_Session_3 = verdadeiro) TradeTime_Ok = verdadeiro; // mas escreve um erro como este. Não sei do que é que ele não gosta.

Por favor, ajudem-me.

 

Transferido

<br / translate="no"> Andrey Koldorkin:


Sergei Vladimirov:

1) A função requer 6 parâmetros de cordas e chama-se-lhe com um parâmetro booleano. 2) O sinal de igualdade é "==", e não "=".

 
Sim. Tudo fixo. Os erros desapareceram. Obrigado. (risos)
 

Transferido de

LeonidB:

Ajude a resolver um problema!

As definições das categorias de notícias não estão a ser guardadas. Reiniciar as definições depois de reiniciar o terminal. Reinstalar não ajuda, correr como administrador não ajuda. Windpws 10. Encontrei todos os ficheiros responsáveis pela configuração, as datas das alterações coincidem sempre com a data de encerramento do terminal, ou seja, os ficheiros são sobregravados. Tanto quanto sei, os seguintes ficheiros são responsáveis pela configuração: terminal.ini, settings.ini, hotkeys.ini, common.ini (localizado na pasta config), news.dat (localizado na pasta news).

Além disso, a seguinte configuração não é guardada: Mostrar - Última Linha de Preço. Este ponto não é crítico, ao contrário dos cenários de notícias, mas penso que são elos da mesma cadeia.


 

Boa tarde a todos, afixados em quatro, espero ouvir em breve.... Rapazes, por favor vejam o que está errado. Parece ser o código de indicador em duas linhas, mas não quer trabalhar em tempo real :-(

Aqui está um link para um post com três fotos....

https://forum.mql4.com/ru/56236/page1041

Obrigado!!!!

Любой вопрос новичка, чтоб не захламлять форум. Профи, не проходите мимо. Без вас никуда - 6. (faq) - MQL4 форум - Страница 1041
Любой вопрос новичка, чтоб не захламлять форум. Профи, не проходите мимо. Без вас никуда - 6. (faq) - MQL4 форум - Страница 1041
  • www.mql5.com
Любой вопрос новичка, чтоб не захламлять форум. Профи, не проходите мимо. Без вас никуда - 6. (faq) - MQL4 форум - Страница 1041
 
Olá, estou ansioso por discutir este assunto convosco. Escrevi um EA em MT5 que quis utilizar para procurar automaticamente os padrões necessários e abrir posições manualmente. Ou seja, não há funções comerciais na EA. O meu problema é que não posso instalar esta EA num gráfico. Não há chamadas indicadoras na EA. Todos os indicadores estão escritos no programa. Compilei-o e executei-o no testador de estratégias. Não houve problemas. Acabei de colocar a EA no gráfico e permiti a sua troca no ecrã, nas definições e na janela da EA que aparece. Em vez da cara sorridente na tabela, o ícone do Expert Advisor aparece na tabela de preços e um círculo verde com um triângulo branco no seu interior. Tentei este procedimento várias vezes e continuo a obter os mesmos resultados. Eu alterei os períodos na tabela de preços, a mensagem de OnDeinit() aparece no monitor, ou seja, uma vela é processada no programa e o trabalho pára.

Dei uma vista de olhos ao livro de bordo:

- Uma das tentativas de instalação de uma EA resultou numa mensagem de alteração de perfil;

- Em todas as outras tentativas, a EA é carregada sem quaisquer problemas.

Eu costumava trabalhar com Perfis: Aumentei o número de Perfis, defini gráficos diferentes em cada Perfil. Se houve aí algo de errado, infelizmente, não o sei. Não sei o que deve ser quebrado para que o programa possa dar uma mensagem sobre mudança de perfil. Embora seja possível que o fracasso se deva a algum outro motivo. Não é claro para mim.

Para efeitos de teste, criei hoje uma nova EA (modelo) e não escrevi nada nas funções OnInit(), OnDeinit(const int razão), OnTick() e tentei colocar esta EA no gráfico e permitir a negociação.

Tenho a mesma situação que antes.

Por favor, ajude-me a compreender esta situação. Obrigado !!!!!!

Razão: