Perguntas de Iniciantes MQL4 MT4 MetaTrader 4 - página 113

 
Olá!!! Quero fazer o seguinte:
Preciso que minha EA abra todos os pedidos (Vender e Comprar), mesmo que já estejam abertos e que não o faça quando todas as condições convergirem, mas na próxima vela!!! Ajude plz......I estou antecipadamente agradecido...

No momento eu tenho isto em meu código:

Código PHP:
void start()
{
if(
NewBar())
{
// algoritmo próprio etc.
}
}

bool NewBar()
{
data/hora estáticalastbar=0;
datetime curbar=iTime(Symbol(),0,0);
if(
lastbar!=curbar)
{
lastbar=curbar;
return(
true);
}
return(
false);
}
 
qroner:
void Uchet_Orderov_Function(string _Simvol, int _Magic, int &_Mas[8]){
ArrayInitialize(_Mas, 0);
int Ticket=-1;
for(int pos=OrdensTotal()-1; pos>=0; pos--){
if(OrderSelect(pos,SELECT_BY_POS,MODE_TRADES) && OrderSymbol()==_Simvol&&&
OrderMagicNumber()==_Magic && OrderTicket()!=Ticket){
Ticket=OrderTicket();
switch(OrderType()){
case 0:{_Mas[0]++;_Mas[6]++;break;}
case 1:{_Mas[1]++;_Mas[6]++;break;}
case 2:{_Mas[2]++;_Mas[7]++;break;}
case 3:{_Mas[3]++;_Mas[7]++;break;}
case 4:{_Mas[4]++;_Mas[7]++;break;}
case 5:{_Mas[5]++;_Mas[7]++;break;}
}
}
}

}

Aqui está a função.

Apenas pensei que o problema não estava no código, pois não há erros no modo padrão.

De qualquer forma, ninguém parece responder...

 
qroner:

De qualquer forma, ninguém parece estar respondendo...

O terminal lhe diz que o erro está na linha 69, mas você mostra o texto do programa, onde há menos linhas... Como você quer responder?
 
qroner: De qualquer forma, parece que ninguém vai responder...

Não parece haver nenhum erro na função que você postou. Estou confuso com o uso do OrderTicket()!=Ticket para peneirar pedidos adjacentes com o mesmo bilhete. Verifique e certifique-se de que não existem tais ordens. Se o (69,25) for especificado pelo compilador , observe a posição 25 da linha 69 - o erro está lá. Digite esta única linha.

 
Vladimir: O terminal diz que o erro é a linha 69, mas você mostra o texto do programa com menos linhas... Em que você quer responder com base?

Eu realmente me pergunto o que ele tem na linha 69

 

Phew, pensei que ninguém iria reagir.

Aqui está essa parte do código:

66 dupla Volatilidade(int _periodo){

67 soma dupla = 0;

68 for(int i=1; i<=_period; i++)

69 summ+=MathAbs(High[i]-Low[i])

70 retorno(NormalizeDuplo(soma/_período, Dígitos))

71 }

Obrigado pela dica

 
qroner:

Phew, pensei que ninguém iria reagir.

Aqui está essa parte do código:

66 dupla Volatilidade(int _periodo){

67 soma dupla = 0;

68 for(int i=1; i<=_period; i++)

69 summ+=MathAbs(High[i]-Low[i])

70 retorno(NormalizeDuplo(soma/_período, Dígitos))

71 }

Obrigado pela dica.

Tudo está claro. O erro está na linha summ+=MathAbs(High[i]-Low[i]); contando 25 posições a partir da borda provavelmente retornará para High[i].

Eu escrevi Alert(Low[-1]); o compilador requer um número positivo. Eu escrevi int n=-1; Alert(Low[n]); - ao executar o Array fora de alcance. Mas como eu posso ???? talvez seja a falta de dados históricos? verificar o intervalo de datas de ... para ...

 

FAVOR INFORMAR QUAL O COMERCIANTE A ESCOLHER OU O NOME EXATO DO SERVIDOR

 
qroner:

Phew, pensei que ninguém iria reagir.

Aqui está essa parte do código:

66 dupla Volatilidade(int _periodo){

67 soma dupla = 0;

68 for(int i=1; i<=_period; i++)

69 summ+=MathAbs(High[i]-Low[i])

70 retorno(NormalizeDuplo(soma/_período, Dígitos))

71 }

Obrigado pela dica.

double Volatility(int _period)
  {
    double summ = 0;

    for(int i=1; i<=_period; i++)
        if(ArraySize(High) > i && ArraySize(Low) > i)
           summ+=MathAbs(High[i]-Low[i]);

    return(NormalizeDouble(summ/_period, Digits));
 }
double Volatility(int _period)
  {
    double summ = 0;
    int src = MathMin(MathMin(_period, ArraySize(High)), ArraySize(Low));

    for(int i=1; i<src; i++)
        summ+=MathAbs(High[i]-Low[i]);

    return(NormalizeDouble(summ/_period, Digits));
 }

Parece que _período às vezes tem um valor maior do que itens de matriz. Daí a ultrapassagem da matriz.

Escolha uma das opções.

 
Boa tarde! Como posso criar um gatilho? Por exemplo, eu preciso desta condição se(iClose(NULL,HTF,4)<BlueLine) se for executado DayDown = 1 ! P: Como o DayDown pode ser deixado como 1 e não ser pesquisado até o dia seguinte ?