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

 
lil_lil:

Obrigado, os valores que existem de um arquivo e de uma vez, mas minha tarefa está espalhada ao longo do tempo.

Registre o preço e o tempo atuais no início de cada dia por 30 minutos, a cada 120 segundos.

Não sobrescreva as entradas anteriores.


Comece a escrever seu código e o que não funcionar, nós o desmontaremos.

Então, o que há para escrever? Tome qualquer dia e leia o preço de abertura de minutos pares ou ímpares PERÍODO_M1...
 
lil_lil:

Obrigado, os valores que existem de um arquivo e uma vez e eu tenho uma tarefa que se estende no tempo.

Registre o preço atual e o tempo no início de cada dia por 30 minutos, a cada 120 segundos

Não sobrescreva as entradas anteriores.

Isto é o que escrevi uma vez. Use OnTimer em vez de OnTick.

#property strict
enum Локаль   // Десятичный разделитель для отображения в Excel
{
  Точка,
  Запятая
};
extern Локаль   RUS = Запятая; // Для русской локализации запятую

string ИмяФайла;          // Имя файла на диске


void OnInit()
{
  ИмяФайла=Symbol()+".txt";
}


void OnTick()
{
   string Текст, Строка;

   // Открытие или создание файла и перемещение указателя в конец
   int Файл = FileOpen(ИмяФайла, FILE_CSV | FILE_READ | FILE_WRITE, " ");
   if(Файл == -1)
   {
      Alert("Ошибка при открытии файла ", ИмяФайла);
      return;
   }
   FileSeek(Файл, 0, SEEK_END);

   // Если новый файл записать строку заголовков колонок
   if(FileSize(Файл)==0)FileWrite(Файл, "           Время   ASK     BID");

   // Сбор информации и запись в файл
   FileWrite(Файл,
             TimeToStr(Time[0]),
             dstr(Ask),
             dstr(Bid) );
   FileClose(Файл);
   Файл = 0;                 // Заметая следы обнулим указатель
}


// Преобразование числа double в строку с запятой или точкой в соответствии с локализацией
string dstr(double Цена)
{
  if(!RUS) return DoubleToStr(Цена, Digits);
  return StringSetChar(DoubleToStr(Цена, Digits), StringFind(DoubleToStr(Цена, Digits), "."), ',');
}
 
Alexey Viktorov:

Comece a escrever seu código e o que não funcionar, nós o desmontaremos.

Escreve Janv 51

/********************Script program start function*******************/
void OnStart()
{
if(iVolume(0,PERIOD_D1,0)>=1)
  {
  int file_1;
   file_1=FileOpen("prise.csv",FILE_CSV|FILE_WRITE);
   if(file_1!=-1) 
     {
      FileWriteString(file_1,Bid,StringLen(Bid));
      FileClose(file_1);
     }
    }
   }
}/*******************************************************************/
 
STARIJ:

Aqui está algo que eu costumava escrever. Use OnTimer em vez de OnTick.

Obrigado

 
Olá. Você pode me dizer seapós a ativaçãodo servidor virtual é possível fechar o site mt4? O servidor virtual vai funcionar ou como ele funciona?
 
lil_lil:

Escreve Jan 51

Este é um problema de Excelência. Coloque um ponto em vez de uma vírgula como separador entre a parte inteira e a parte fracionária nos ajustes e ele aparecerá corretamente.
 
Alexey Viktorov:
Este é um problema de Excelência. Coloque um ponto em vez de uma vírgula nos ajustes para separar a parte inteira da parte fracionária e ela aparecerá corretamente.

Escreve e como fazê-la escrever a cada 120 segundos dentro de 30 minutos da abertura do bar?

 
Bom dia! Por favor, ajude-me a melhorar o código da copiadora. O problema é o seguinte: a EA (Escravo) imprime a mensagem sobre a falta de acesso ao arquivo, não importa o que eu faça... O que está errado?

Decompilado por Artyom Trishkin

Nota para você.

 
lil_lil:

Escreve e como faço para que escreva a cada 120 segundos dentro de 30 minutos da abertura do bar?

EventSetTimer

 
Konstantin Nikitin:

EventSetTimer

Não funciona nos roteiros?

Razão: