Perguntas de Iniciantes MQL5 MT5 MetaTrader 5 - página 571
![MQL5 - Linguagem para estratégias de negociação inseridas no terminal do cliente MetaTrader 5](https://c.mql5.com/i/registerlandings/logo-2.png)
Você está perdendo oportunidades de negociação:
- Aplicativos de negociação gratuitos
- 8 000+ sinais para cópia
- Notícias econômicas para análise dos mercados financeiros
Registro
Login
Você concorda com a política do site e com os termos de uso
Se você não tem uma conta, por favor registre-se
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.
Compreende a própria definição de "operação assíncrona"? Se o fizer, não deverá ser feita qualquer pergunta.
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
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 "=".
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!!!!
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 !!!!!!