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
Aqui se Orderselect é FALSO como a EA pode voltar à linha de código: for(int cnt=OrdersTotal(); cnt > 0; cnt-- )
???
Aqui se Orderselect é FALSO como a EA pode voltar à linha de código: for(int cnt=OrdersTotal(); cnt > 0; cnt-- )
???
Esse código está errado . . . .
cnt precisa começar em OrdersTotal() - 1 e diminuir para cnt >= 0 . . . . a primeira entrada é 0 e não 1
Foi por isso que pedi para ver o código . . e você já mostrou o suficiente para identificar o problema . . provavelmente . ;-)
Esse código está errado . . . .
cnt precisa começar em OrdersTotal() - 1 e diminuir para cnt >= 0 . . . . a primeira entrada é 0 e não 1
Foi por isso que pedi para ver o código . . e você já mostrou o suficiente para identificar o problema . . provavelmente . ;-)
Muito Correto. Obrigado, Wizeman!
Muito Correto. Obrigado, Wizeman!
E outra idéia:
Se eu tiver muitas condições, você pode escrever:
If( X>b && B>S && NB<F......)
{
BBB= 5;
}f.e.
Aqui, a EA tem que computar todas as condições dentro do parêntese.
Mas, se você estiver procurando eficiência (4.000 linhas de código...) eu prefiro ter:
Se ( X>b )
{
enquanto (B>S)
{
Enquanto (NB<F...)
{
BBB=5;
}
pausa;
}
pausa;
}
As 2 variações são as mesmas?
Y.
crossy, quando você escrever o código, por favor use o botão SRC, ele será muito mais legível
Assim, será mostrado assim
Explicação sobre "se, enquanto e para" loop em mql4 https://book.mql4.com/operators/assign
No segundo código, tudo bem, já que você usa break, porém, é um longo caminho só para conseguir BBB = 5, prefiro o primeiro código, ele usa menos recursos
E outra idéia:
Se eu tiver muitas condições, você pode escrever:
If( X>b && B>S && NB<F......)
{
BBB= 5;
}f.e.
Aqui, a EA tem que computar todas as condições dentro do parêntese.
Mas, se você estiver procurando eficiência (4.000 linhas de código...) eu prefiro ter:
Use o botão SRC para exibir seu código para uma melhor leitura, por favor :)
You OrderSelect() está codificado de forma errada. Compare seu código com este. Depois, escreva de volta se você ainda tiver o problema ou não :)
Especial agradecimento a onewithzachy,
Eu não sabia que o ORDERSELECT não pegou, então você pode ter erros desconhecidos.
Meu código, que era 4016 linhas de código, tornou-se quase 4500 linhas - mas sem erros.
Obrigado a todos vocês, freinds.
Y.
Olá freinds,
Após uma longa jornada aqui, tive um bom avanço com minha EA, mas tenho mais um problema, como se segue:
Eu tenho a seguinte linha de código:
CLOSE_Single_P(Par1, "LONG",OrderT,OrderL);
como:
Pair1 é o Símbolo,
"LONG" é um sinal de um longo comércio,
OrderT é o número do bilhete de pedido,
OrderL é o tamanho do lote de pedidos.
A função é a seguinte:
void CLOSE_Single_P(string SYMB, string TREN, int TICKET, double LOTT)
{
double PRC;
bool Check = false;
for ( int cntt=0; cntt<20000; cntt++ )
{
if ( Check )
{
Check_Ini();
return;
}
for ( int vvv = OrderTotal()-1; vvvv >= 0; vvvv-- )
{
if ( OrderSelect(vvvv, SELECT_BY_POS, MODE_TRADES) )
{
Check = false;
if ( TREN == "LONG" )
PRC = MarketInfo(SYMB,MODE_BID);
else
if ( TREN == "SHORT" )
PRC = MarketInfo(SYMB,MODE_ASK);
Check = OrderClose(TICKET,LOTT,PRC,Slippage,Yellow);
if ( Check )
break;
}
}
}
retorno;
}
Meu PROBLEMA é: A EA às vezes fecha o comércio muito bem, mas às vezes a EA fecha a tarde MAS continua a procurar o bilhete para fechá-lo, embora já estivesse fechado.
(Eu recebo o erro: "Número desconhecido do bilhete..." .
Acho que tenho um erro lógico.
Obrigado pela sua gentil ajuda.
Y
Por favor . . . . . .