Quaisquer perguntas de recém-chegados sobre MQL4 e MQL5, ajuda e discussão sobre algoritmos e códigos - página 481

 
STARIJ:

Ao abrir o arquivo para escrita, você especificou TXT ou CSV. Este é um arquivo de texto. Leia-o como um fio, selecione StringSubstr e converta-o para o que você quiser

void Write_File()
{
    int handle;
    static double BlueL,RedL;
    string B_level= DoubleToStr(BlueLine, Digits);
    string R_level= DoubleToStr(RedLine, Digits);
    string f_name = " (" + Symbol() + ")\\" + TimeToStr( LocalTime(),TIME_DATE ) + ".txt";
     
    
      if(BlueLine!=BlueL||RedLine!=RedL)
       {
       Sleep(10000);//подождем 10 сек, пока оператор меняет уровни
       
      // Открытие или создание файла и перемещение указателя в конец
      handle= FileOpen(f_name,FILE_CSV|FILE_READ|FILE_WRITE," ");
      if(handle == -1) {  Alert("Ошибка при открытии файла ",handle);  return; }
      FileSeek(handle,0,SEEK_END);

      // Если новый файл - записать имя файла и строку заголовков колонок
      if(FileSize(handle)==0)
      {
         FileWrite(handle,f_name);
         FileWrite(handle,"Изменение Уровней   BlueLine   RedLine");
      }
      // Сбор информации и запись в файл
      FileWrite(handle,TimeToStr(TimeCurrent()), "  ",B_level, "  ",R_level);
      FileClose(handle);
      BlueL=BlueLine;RedL=RedLine;
      }
      return;
   }

Essa é a maneira de escrever! TCT

Desculpe-me, mas não entendo exatamente como tirar agora onível B_level eR_level. Eu não preciso de data e hora! Mas quero escrevê-los)

 
Rewerpool:

Essa é a maneira de escrever! TCT

Desculpe-me, mas não entendo exatamente como tirar agora onível B_level eR_level. Eu não preciso de data e hora! Mas eu quero anotar isso)

Leia como um fio, destaque StringSubstr e converta para o que você precisa. Leia como string, atribua StringSubstr e converta para o que você precisar

 
STARIJ:

Leia como um fio, atribua um StringSubstr e converta para o que você precisar. Leia como um fio, selecione StringSubstr e converta para o que quer que seja

Ah ah ah ah ah ah ah, entendi!!! É isso aí!!! Obrigado@STARIJ! Vou tentar)

 

@STARIJ não funciona, ainda não consigo descobrir onde estou errado! Socorro!

double BlueLine,RedLine;

void Read_File()
{
    int handle;
    string B_level;
    string R_level;
    static double BlueL=StrToDouble(B_level);
    static double RedL=StrToDouble(R_level);
    
    string f_name = " (" + Symbol() + ")\\" + TimeToStr( LocalTime(),TIME_DATE ) + ".txt";
     
     if(BlueL!=BlueLine||RedL!=RedLine)
     {
      // Открытие или создание файла и перемещение указателя в конец
      handle= FileOpen(f_name,FILE_CSV|FILE_READ|FILE_WRITE," ");
      if(handle == -1) {  Alert("Ошибка при открытии файла ",handle);  return; }
      FileSeek(handle,0,SEEK_END);
      
      // Чтение информации из файла
      FileReadString(handle,B_level= StringSubstr(f_name,16,7),R_level= StringSubstr(f_name,23,7));
      FileClose(handle);
      
      BlueLine=BlueL;RedLine=RedL;
      }
      return;
   }
1 Erro aqui, mas o que eu fiz de errado?
 

Por que ele não gosta disso?

2

 
Rewerpool:

Por que não é assim?


Veja quais parâmetros você passa para a função, e quantos, e o que ela retorna.

clique em f1, coloque seu cursor sobre esta função com antecedência

 
Rewerpool:

@STARIJ não funciona, ainda não consigo descobrir onde estou errado! Socorro!

Erro aqui, mas o que eu fiz de errado?
Primeiro vamos ler o último fio
   int handla = FileOpen("1111.txt",FILE_TXT|FILE_READ," ");   // TXT !!!!!!!
   string s;
   while(!FileIsEnding(handla))  s=FileReadString(handla,100);
   Alert(s);
   FileClose(handla);

2018.02.26 12:49 1.24368 1.22581 Agora ... Destaque StringSubstr e converta-se para o que você precisa. Tudo tem que ser feito passo a passo. A pressa é um inimigo de um programador.

   double Синяя=StrToDouble(StringSubstr(s,20,7));
   double Красн=StrToDouble(StringSubstr(s,31,7));
   Alert(DoubleToStr(Синяя,5), "   ", DoubleToStr(Красн,5));

Ler como string, alocar StringSubstr e converter em string. Ler como string, alocar StringSubstr e converter para uma string

 
STARIJ:
Primeiro vamos ler o último fio

2018.02.26 12:49 1.24368 1.22581 Agora ... alocar StringSubstr e converter para o que você precisa. Você tem que fazer tudo passo a passo. A pressa é um inimigo de um programador.

Ler como string, alocar StringSubstr e converter em string. Ler como string, alocar StringSubstr e converter para uma string

STARIJ: Obrigada pela avaria!

Refizemos o trabalho! Agora os números não se somam por alguma razão!

Os números no arquivo são assim:

2018.02.26 17:44    1.24938    1.22771

E o mesmo Alerta dá estes:

Onde ele conseguiu os zeros depois de 1,2? Eu tentei normalizar. Não!

1

O código é escrito desta forma:

void Read_File()
{
    int handle;
    string str;
    static double BlueL;
    static double RedL;
    string f_name = " (" + Symbol() + ")\\" + TimeToStr( LocalTime(),TIME_DATE ) + ".txt";
     
     if(BlueL!=BlueLine||RedL!=RedLine)
     {
      // Открытие или создание файла и перемещение указателя в конец
      handle= FileOpen(f_name,FILE_READ|FILE_TXT," ");
      if(handle == -1) {  Alert("Ошибка при открытии файла ",handle);  return; }
      
       while(!FileIsEnding(handle)) //Читаем последнюю строку
       str=FileReadString(handle,60);//Чтение строки из файла
       FileClose(handle);
       BlueL=StrToDouble(StringSubstr(str,16,7));
       RedL=StrToDouble(StringSubstr(str,23,7));
       Alert(DoubleToStr(BlueL,5), "   ", DoubleToStr(RedL,5));
       ObjectSet("BlueLine",OBJPROP_PRICE1,BlueL);
       ObjectSet("RedLine",OBJPROP_PRICE1,RedL);
      }
      return;
   }
 
Rewerpool:

STARIJ : Obrigada pela avaria!
Refizemos o trabalho! Agora os números não se somam por alguma razão!
Os números no arquivo são:
Mas o mesmo Alerta dá estes:
Onde obteve os zeros depois de 1,2 ? Eu tentei normalizar. Não!
Eu escrevi o código assim:

Eu tinha StringSubstr(str,20,7) e você escreve StringSubstr(str,16,7). Subtraia os últimos 4 dígitos de 1.24938 e receba 1.2. Eu lhe disse - faça tudo sequencialmente. Eu tinha Alerta(s); - imprima o fio para ter certeza de que está correto, enquanto você está com pressa para escrever ObjectSet(. Programação é tudo uma questão de paciência, pequenos passos à frente - enquanto você tem gritado no fórum. Enquanto você está esperando por uma resposta - quantos pequenos passos confiantes você pode dar!!!
 
Rewerpool:

STARIJ: Obrigada pela avaria!

Refizemos o trabalho! Agora os números não se somam por alguma razão!

Os números no arquivo são assim:

E o mesmo Alerta dá estes:

Onde ele conseguiu os zeros depois de 1,2? Eu tentei normalizar. Não!

Eu escrevi o código assim:

Tente isto.


void Read_File()
{
    int handle;
    string str;
    static double BlueL;
    static double RedL;
    string f_name = " (" + Symbol() + ")\\" + TimeToStr( LocalTime(),TIME_DATE ) + ".txt";
     
     if(BlueL!=BlueLine||RedL!=RedLine)
     {
      // Открытие или создание файла и перемещение указателя в конец
      handle= FileOpen(f_name,FILE_READ|FILE_TXT," ");
      if(handle == -1) {  Alert("Ошибка при открытии файла ",handle);  return; }
      
       while(!FileIsEnding(handle)) //Читаем последнюю строку
       str=FileReadString(handle,60);//Чтение строки из файла
       FileClose(handle);
       BlueL=StrToDouble(StringSubstr(str,20,7));   
       RedL=StrToDouble(StringSubstr(str,31,7));    
       Alert(DoubleToStr(BlueL,5), "   ", DoubleToStr(RedL,5));
       ObjectSet("BlueLine",OBJPROP_PRICE1,BlueL);
       ObjectSet("RedLine",OBJPROP_PRICE1,RedL);
      }
      return;
   }