[ARQUIVO] Qualquer pergunta de novato, de modo a não desorganizar o fórum. Profissionais, não passem por aqui. Em nenhum lugar sem você - 3. - página 607

 
rustein:
Sim, estou vendo, obrigado.

Colocando dessa forma, não conheço outra forma.......)

E assim...

double BullSumm()
{
  double MySummBull=0;
  for(int Cnt=0;Cnt<OrdersTotal();Cnt++)
  { 
    if(!OrderSelect(Cnt,SELECT_BY_POS,MODE_TRADES))continue; // если нет продолжим цикл
    if(OrderType()==OP_BUY)
    {
      MySummBull+=OrderOpenPrice()*OrderLots();
    }
  }
  if(MySummBull==0)return(380/*v*/);
  return(MySummBull);
}
 
griha:
quer registrar as ações da EA em um arquivo
Eu peguei um exemplo do manual do editor MQL, ligeiramente refeito para minhas próprias necessidades


O resultado é que o arquivo OrdersReport.csv está vazio, embora as ordens sejam abertas.


Encontrei o mesmo problema, ao abrir um arquivo para leitura e tentar escrever nele, o arquivo ou não é criado, ou nada é escrito nele.

Aplicação no pescoço com serviço :

Ao tentar adicionar a um arquivo de texto um arquivo sem registro com a tecla FILE_READ|FILE_WRITE, sem antes definir explicitamente o ponteiro do arquivo com FileSeek(), a escrita não acontece de forma alguma.

Nas versões anteriores do terminal, ao ler previamente um arquivo de texto usando a função FileReadString(), o ponteiro do arquivo é definido automaticamente.

Aqui está uma resposta dos desenvolvedores:

A última mudança de funcionalidade do arquivo data de meados de 2008.

Nunca antes foi possível anexar a um arquivo sem primeiro definir um ponteiro de arquivo no final.

Mais uma vez uma pergunta sobre informações extras. Isto tem alguma coisa a ver com anexar ao final de um arquivo?

Qualquer operação de leitura-escrita de arquivo move automaticamente o ponteiro do arquivo. Este sempre foi o caso e não mudou. Entretanto, se o arquivo for aberto como um csv, é possível um buffer de dados intermediário. Então, o ponteiro do arquivo pode não estar onde você espera que esteja. Mais uma vez, este sempre foi o caso, tanto na versão anterior quanto no pré-lançamento, desde o início do lançamento oficial.

Temos reiterado muitas vezes que o princípio padrão é extremamente prejudicial. Incluindo para apontadores de arquivos. Manuseie o ponteiro de arquivo explicitamente, a menos que você use leitura contínua ou escrita contínua (especialmente os exóticos casos mistos de leitura-escrita).

Conclusão: use FileSeek

 
khorosh:
Verificar.
Obrigado.
 
Roll:

Seu Expert Advisor trabalha com sinais ADX de 30 minutos. Se seu Expert Advisor comercializa sinais ADX de 1min, tais sinais serão mais freqüentes do que na primeira variante. A captura de tela em sua variante é feita somente na abertura da posição COMPRAR.
Você está interessado na ausência de indicadores do gráfico na captura de tela (em modo de teste). Você foi solicitado a verificar a presença de indicadores na imagem da tela em modo de demonstração. O roteiro com a função correspondente foi adicionado, para que você pudesse verificar e entender sua pergunta rapidamente, em vez de esperar horas. Já se passou mais de um dia. Quero saber - quais são seus resultados?

Vou mantê-lo informado. Estou ocupado, mas vou tentar verificar amanhã.
 

Você pode me dizer qual é a diferença ao definir um nome em uma função ou ao atribuir um nome a uma variável e depois passar a variável para uma função?

//-------------- первый вариант (рабочий)

string up_line = "upline_", down_line = "downline_";
 
     flatlineup(up_line+TimeToStr(Time[i]), y2,x2,y22,x2,Red,1);     Имя присваиваю в теле функции
     flatlinedown(down_line+TimeToStr(Time[i]), y1,x1,y11,x1,Blue,1);
     dellline(up_line, down_line);

TimeToStr(Time[i]) указывал в имени тренд лайн в теле функции
//--------------- второй вариант (нерабочий)

string up_line = "upline_"+TimeToStr(Time[i]); //--или пробовал StringConcatenate()        ИМЯ ПРИСВАИВАЮ В ПЕРЕМЕННОЙ
string down_line = "downline_"+TimeToStr(Time[i]); //--или пробовал StringConcatenate()
 
     flatlineup(up_line, y2,x2,y22,x2,Red,1);                 ПЕРЕДАЮ ПЕРЕМЕННУЮ В ФУНКЦИЮ
     flatlinedown(down_line, y1,x1,y11,x1,Blue,1);
     dellline(up_line, down_line);
 
rustein:
Ajude-me a me livrar do erro de divisão zero na EA.

Agradecemos antecipadamente.

Você pode fazer desta maneira, funciona para mim

preço duplo de bula()

{

duplo BullAveragePrice=0;

doubleSummBullLots=0;

para (int i = OrderTotal() - 1; i >= 0; i--)

{

OrderSelect(i, SELECT_BY_POS, MODE_TRADES);

se (OrderSymbol() != Symbol()) continuar;

if (OrderSymbol() == Symbol() && OrderType() == OP_BUY)

{

BullAveragePrice+=OrderOpenPrice()*OrderLots();

MySummBullLots+=OrderLots();

}

}

if (MySummBullLots>0) BullAveragePrice = NormalizeDouble(BullAveragePrice / MySummBullLots, Dígitos);

retorno(BullAveragePrice);

}

 
Zhunko:

Na pasta MT4 há uma amostra de código C++ para todos os casos na MQL4. Compilar esse código e colar nele seu próprio código. Você vai encontrar imediatamente a diferença entre o seu e o exemplo.

Meu MT não tem um. Há apenas 1 biblioteca escrita em MQL (stdlib.mq4). Você pode dar um exemplo aqui?
 
Fox_RM:

Você pode me dizer qual é a diferença ao definir um nome em uma função ou ao atribuir um nome a uma variável e depois passar a variável para uma função?

Em seu exemplo, a única diferença está em passar os parâmetros para a função
dellline(...)
 
costy_:

Caso contrário...

Obrigado!
 

Por favor, informe a situação é esta, li um arquivo csv como este

void ReadDate(){
   while(!IsStopped()){
      string dTime = FileReadString(ExtCsvHandle); // читаем строчку 1
      string sValue = FileReadString(ExtCsvHandle); // читаем строчку 2
      Print("Date=",StrToTime(dTime), "Value=",sValue);   
      
   }
}

mas o arquivo csv tem um cabeçalho, a primeira linha extra

Time,Value
15.02.2012 00:00:00;Значение1
15.02.2012 00:01:07;Значение2
15.02.2012 00:02:26;Значение3
15.02.2012 00:00:00;Значение1
15.02.2012 00:01:07;Значение2
15.02.2012 00:02:26;Значение3

Como pular a primeira linha de forma programática, ou apagá-la de forma programática em geral ao salvar o valor que estraga tudo.

Obrigado de antemão.