Perguntas de Iniciantes MQL4 MT4 MetaTrader 4 - página 202
![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
=
Este parece ser o caso, se eu entender corretamente o princípio da substituição.
Ponto-e-vírgula extra após os colchetes encaracolados. E não está claro o que mais está sendo mencionado.
É uma pena que aparentemente não exista uma maneira fácil de automatizar a expansão macro para ver o que acontece. A menos que eu possa inventar meu próprio roteiro.
Obrigado! Há uma razão pela qual não há ponto-e-vírgula depois de estar na macro.
Macros são uma coisa boa, mas a linha entre o bem e o mal, no caso deles, é ainda mais fina do que com uma mulher)))) Você tem que ser muito, muito cuidadoso com eles. E sim, no meu exemplo, não ';', mas exatamente o contrário, que começou a se referir a se, que está no macro, depois de você remover ;.
Sou muito bom em macros, por isso, para um caso como o seu eu desisti de usá-los há cerca de 1,5 anos, é ótimo:
Exceto que eu não consigo encontrar nada sobre o inline aqui.
E eu não sei C++.
Boa tarde! Por favor, ajudem!
Existe um código bastante simples para abrir e modificar um pedido. As funções OrderSend, OrderSelect e OrderModify são colocadas em um loop com um pequeno atraso entre as tentativas. Para minimizar erros de comunicação, etc.
Acontece o seguinte estranho: a ordem é normalmente aberta, seguida pela modificação bem sucedida do StopLoss e a modificação bem sucedida do TakeProfit. Mas quando eu defino o TP, o StopLoss é anulado. Não consigo entender a razão.
Aqui está esta parte do código:
enviar = 5; // número máximo de tentativas para estabelecer um pedido
tick=0;
sendchet=0; // contador de entradas
while(!tick && sendchet<=send)
{
tick=OrderSend(Symbol(),OP_SELL,NormalizeDouble(lot,2),Bid,150,0.0,0.0.0,komm,MagNum,0,Yellow);
sendchet++;
Dormir(1000); //Depreender 1 segundo antes da próxima tentativa
}
selecionar = 5; // número máximo de tentativas para selecionar um pedido
slschet=0; // contador de entradas para seleção de pedidos
while(!OrderSelect(tick,SELECT_BY_TICKET) && slschet<=select)
{
slschet++;
Dormir(500); //Delay 0,5 segundo antes da próxima tentativa
}
se(slschet<select) //tries foram inferiores ao máximo, isso significa que a ordem foi selecionada com sucesso
{
modificar = 5; // número máximo de tentativas para modificar a ordem
mdschet=0;
while(!OrderModify(tick,OrderOpenPrice(),NormalizeDouble(SL,Digits),OrderTakeProfit(),0,Yellow)
&& mdschet<=modificar)
{
mdschet++;
Dormir(500); //Delay 0,5 segundo antes da próxima tentativa
}
*Aqui está tudo bem - SL está pronto
mdschet=0; // contador de reposição antes de mudar TP
while(!OrderModify(tick,OrderOpenPrice(),OrderStopLoss(),NormalizeDouble(TP,Digits),0,Yellow)
&& mdschet<=modificar)
{
mdschet++;
Sleep(500);
}
}
*Aqui TP é definido normalmente, mas SL já é igual a 0,0. Portanto, acontece que OrderStopLoss() é igual a 0,0.
No entanto, a seleção do pedido não mudou.
Se acrescentarmos OrderSelect mais uma vez entre o ajuste SL e TP, tudo parece funcionar. Mas isso contradiz a lógica.
Agradecemos antecipadamente a sua ajuda neste assunto.
Boa tarde!
Por favor, ajude-me a lidar com a mudança do tamanho de uma matriz dinâmica.
Digamos que eu estou montando uma matriz:
Depois, na primeira sub-rotina do loop, possivelmente várias vezes (sem perguntas sobre isso - até agora funciona como pretendido):
Na próxima sub-rotina, acrescentarei elementos na primeira dimensão do laço. Não sei quantos com antecedência. Sei que é mais lento do que se você declarar a dimensão de antemão. Mas acho que até 500 acréscimos por ano não farão diferença.
A questão é: como descobrir o tamanho da matriz existente nesta sub-rotina? Tomá-lo como um tamanho de base e acrescentar-lhe um novo valor.
Pegar ArraySize() e dividir por 8? Ou existe alguma outra função que me convém melhor?
Obrigado de antemão!
Boa tarde!
Por favor, ajude-me a lidar com a mudança do tamanho de uma matriz dinâmica.
Digamos que eu estou montando uma matriz:
Depois, na primeira sub-rotina do loop, possivelmente várias vezes (sem perguntas sobre isso - até agora funciona como pretendido):
Na próxima sub-rotina, acrescentarei elementos na primeira dimensão do laço. Não sei quantos com antecedência. Sei que é mais lento do que se você declarar a dimensão de antemão. Mas acho que até 500 acréscimos por ano não farão diferença.
A questão é: como descobrir o tamanho da matriz existente nesta sub-rotina? Tomá-lo como um tamanho de base e acrescentar-lhe um novo valor.
Pegar ArraySize() e dividir por 8? Ou existe alguma outra função que me convém melhor?
Obrigado de antemão!
ArrayRange()
ArrayRange()
Boa tarde.
Há muito tempo que não negociava no MT4, decidiu tentar novamente. Anteriormente utilizado o roteiro (anexado), mas agora ele não vai funcionar, por favor veja o que deu errado.
Olá!
Há alguma maneira de saber imediatamente CopyHigh o número de elementos de uma matriz em qualquer período de tempo?
Eu mesmo responderei, talvez alguém se depare com a pergunta através de um mecanismo de busca.
Eu mesmo responderei, talvez alguém se depare com a pergunta através de um mecanismo de busca.
Também Bars(), iBars()
Com Bars(), você não pode descobrir o número de elementos da matriz em qualquer período de tempo, mas somente no gráfico atual.