Se você ainda estiver por aí, posso sugerir algumas mudanças de código que farão o que você está procurando. Avise-me se você ainda estiver interessado.
Em seguida, recompilar para ter certeza de que não há erros. Avise-me quando você tiver isto e eu colarei a próxima mudança.
Copiou este bloco e renomeou-o, agora ele se parece com isto:
int OpenTradesOnThisCandle( ) { int op =0; for(int i=OrdersTotal()-1;i>=0;i--) // escanear todos os pedidos e posições... { OrderSelect(i, SELECT_BY_POS, MODE_TRADES); if (OrderMagicNumber() != MagicNumber) continue; if ( OrderSymbol()==Symbol() ) { if ( OrderType() == OP_BUY ) op++; if ( OrderType() == OP_SELL ) op++; } } return(op); }
Espero ter feito tudo certo. Eu compilei e não recebi nenhum erro a não ser um aviso:
Afunção "OpenTradesOnThisCandle" não é referenciada e será removida do arquivo exp-file 0 erro(s), 1 aviso(s)
Se houver alguma chamada do servidor no loop Você deve contar para baixo E verificar os códigos de retorno Loops e Encerramento ou Exclusão de Ordens - fórum MQL4
int OpenTradesOnestaVela( ) { int op =0; for(int i=OrdensTotal()-1;i>=0;i--) // escanear todos os pedidos e posições... { OrderSelect(i, SELECT_BY_POS, MODE_HISTORY); se (OrderMagicNumber() != MagicNumber) continuar; if ( OrderSymbol()==Symbol() ) { se (OrderOpenTime() > Time[0]) op++; if (OrderOpenTime() > Time[0]) op++; } } retorno(op); }
2. O retorno de OrderSelect() ou é verdadeiro ou falso, portanto esta é a forma correta de escrever OrderSelect(),
int OpenTradesOnThisCandle( )
{
int op =0;
for(int i = OrdersTotal() - 1;i >= 0; i-- ) // scan all orders and positions...
{
if (OrderSelect(i, SELECT_BY_POS, MODE_HISTORY) == true // if order select is true ...
&& OrderMagicNumber() != MagicNumber // ... and magic number is our magic number ...
&& OrderSymbol() == Symbol() ) // ... and symbol is chart symbol
{
if (OrderOpenTime() > Time[0]) op++;
if (OrderOpenTime() > Time[0]) op++;
}
}
return(op);
}
2. O retorno de OrderSelect() ou é verdadeiro ou falso, portanto esta é a forma correta de escrever OrderSelect(),
:D
Obrigado pela dica sobre o código de lançamento. Faz sentido. Quanto ao ponto nº 2, vou adiar para sn enquanto ele me acompanha nas etapas e não quero atrapalhar seu processo. Muito apreciado!
Obrigado pela dica sobre o código de lançamento. Faz sentido. Quanto ao ponto nº 2, vou adiar para sn enquanto ele me acompanha nas etapas e não quero atrapalhar seu processo. Muito apreciado!
por enquanto, vamos manter isto simples. onewewithzacky está correto, que verificar os códigos de retorno é um bom hábito.
se (OrderOpenTime() > Time[0]) op++; <<=== isto só precisa estar lá uma vez. Portanto, tire um.
A próxima coisa a fazer é encontrar este código e duplicá-lo logo abaixo.
Para login e uso do site MQL5.com, você deve ativar o uso de cookies.
Ative esta opção no seu navegador, caso contrário você não poderá fazer login.
Você entrou na conta. A autenticação de dois fatores foi desativada. Configure-a novamente e escaneie um novo código QR ou continue com a autenticação de dois fatores desativada.
megamixx,
Se você ainda estiver por aí, posso sugerir algumas mudanças de código que farão o que você está procurando. Avise-me se você ainda estiver interessado.
Em seguida, recompilar para ter certeza de que não há erros. Avise-me quando você tiver isto e eu colarei a próxima mudança.Consegui e compilei com sucesso graças ao Sn.
Consegui e compilei com sucesso graças ao Sn.
ok, ótimo.
A seguir, há um bloco de código como este
copiar o bloco inteiro, colá-lo logo após e renomeá-lo para OpenTradesOnThisCandle
Em seguida, recompilar para ter certeza de que não há erros.
Estou indo para o trabalho agora, para que você não tenha notícias minhas até mais tarde. Afixe as mudanças se você ficar preso.
Copiou este bloco e renomeou-o, agora ele se parece com isto:
int OpenTradesOnThisCandle( )
{ int op =0;
for(int i=OrdersTotal()-1;i>=0;i--) // escanear todos os pedidos e posições...
{
OrderSelect(i, SELECT_BY_POS, MODE_TRADES);
if (OrderMagicNumber() != MagicNumber) continue;
if ( OrderSymbol()==Symbol() )
{
if ( OrderType() == OP_BUY ) op++;
if ( OrderType() == OP_SELL ) op++;
}
}
return(op);
}
Espero ter feito tudo certo. Eu compilei e não recebi nenhum erro a não ser um aviso:
Afunção "OpenTradesOnThisCandle" não é referenciada e será removida do arquivo exp-file
0 erro(s), 1 aviso(s)
Bom. A mensagem é apenas um aviso, e irá embora em breve.
Agora mude a linha onde você vê MODE_TRADES para ser MODE_HISTORY na nova subrotina que você criou.
Agora, substitua ambos os dois se as declarações por OrderType() para este
Quando você tiver isso (e você receberá o mesmo aviso), compile-o para ter certeza de que está livre de erros.
Esta é a aparência do bloco agora:
int OpenTradesOnestaVela( )
{ int op =0;
for(int i=OrdensTotal()-1;i>=0;i--) // escanear todos os pedidos e posições...
{
OrderSelect(i, SELECT_BY_POS, MODE_HISTORY);
se (OrderMagicNumber() != MagicNumber) continuar;
if ( OrderSymbol()==Symbol() )
{
se (OrderOpenTime() > Time[0]) op++;
if (OrderOpenTime() > Time[0]) op++;
}
}
retorno(op);
}
Compilado, 0 erros, 1 aviso
Oi megamix,
Não leio o fio desde o início, no entanto ...
1. Use o botão SRC ao postar o código
2. O retorno de OrderSelect() ou é verdadeiro ou falso, portanto esta é a forma correta de escrever OrderSelect(),
:D
Oi megamix,
Não leio o fio desde o início, no entanto ...
1. Use o botão SRC ao postar o código
2. O retorno de OrderSelect() ou é verdadeiro ou falso, portanto esta é a forma correta de escrever OrderSelect(),
:D
Obrigado pela dica sobre o código de lançamento. Faz sentido. Quanto ao ponto nº 2, vou adiar para sn enquanto ele me acompanha nas etapas e não quero atrapalhar seu processo. Muito apreciado!
Obrigado pela dica sobre o código de lançamento. Faz sentido. Quanto ao ponto nº 2, vou adiar para sn enquanto ele me acompanha nas etapas e não quero atrapalhar seu processo. Muito apreciado!
por enquanto, vamos manter isto simples. onewewithzacky está correto, que verificar os códigos de retorno é um bom hábito.
se (OrderOpenTime() > Time[0]) op++; <<=== isto só precisa estar lá uma vez. Portanto, tire um.
A próxima coisa a fazer é encontrar este código e duplicá-lo logo abaixo.
Depois mude
(TradesInThisSymbol > 0)
para
(OpenTradesOnThisCandle() > MaxTradesPerCandle)
Em seguida, compilar - o erro deve ir embora.
Por enquanto, vamos manter isto simples. onewewithzacky está correto, que a verificação dos códigos de retorno é um bom hábito.
se (OrderOpenTime() > Time[0]) op++; <<=== isto só precisa estar lá uma vez. Portanto, tire um para fora.
A próxima coisa a fazer é encontrar este código e duplicá-lo logo abaixo.
Então mude
(TradesInThisSymbol > 0)
para
(OpenTradesOnThisCandle() > MaxTradesPerCandle)
Em seguida, compilar - o erro deve ir embora.
Feito.
Eliminado duplicado se (OrderOpenTime() > Time[0]) op++;
e encontrou e mudou
(TradesInThisSymbol > 0)
para
(OpenTradesOnThisCandle() > MaxTradesPerCandle)
Muito obrigado por sua ajuda neste sentido.