Toute question des nouveaux arrivants sur MQL4 et MQL5, aide et discussion sur les algorithmes et les codes. - page 460

 
lil_lil:

Merci, les valeurs qui s'y trouvent proviennent d'un fichier et d'une seule fois, mais ma tâche est étalée dans le temps.

Enregistrez le prix et l'heure actuels au début de chaque jour pendant 30 minutes, toutes les 120 secondes.

Ne pas écraser les entrées précédentes.


Commencez à écrire votre code et ce qui ne fonctionne pas, nous le démonterons.

Alors, qu'y a-t-il à écrire ? Prenez un jour quelconque et lisez le prix d'ouverture des minutes paires ou impaires PERIOD_M1...
 
lil_lil:

Merci, les valeurs qui s'y trouvent proviennent d'un fichier et d'une seule fois et j'ai une tâche qui s'étend dans le temps.

Enregistrer le prix et l'heure actuels au début de chaque journée pendant 30 minutes, toutes les 120 secondes.

Ne pas écraser les entrées précédentes.

C'est ce que j'ai écrit une fois. Utilisez OnTimer au lieu 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:

Commencez à écrire votre code et ce qui ne fonctionne pas, nous le démonterons.

écrit 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:

Voici quelque chose que j'avais l'habitude d'écrire. Utilisez OnTimer au lieu de OnTick.

Merci

 
Bonjour. Pouvez-vous me dire siaprès avoir activé leserveur virtuel, il est possible de fermer le site mt4 ? Le serveur virtuel fonctionnera-t-il ou comment fonctionne-t-il ?
 
lil_lil:

Ecrit Jan 51

C'est un problème avec Excell. Mettez un point au lieu d'une virgule comme séparateur entre la partie entière et la partie fractionnaire dans les paramètres et cela s'affichera correctement.
 
Alexey Viktorov:
C'est un problème avec Excell. Mettez un point au lieu d'une virgule dans les paramètres comme séparateur de parties entières et fractionnaires et cela s'affichera correctement.

Ecrit et comment le faire écrire toutes les 120 secondes dans les 30 minutes suivant l'ouverture du bar ?

 
Bonjour, aidez-moi à améliorer le code du copieur. Le problème est le suivant : EA (esclave) affiche le message concernant l'impossibilité d'accéder au fichier, quoi que je fasse... Qu'est-ce qu'il y a ?

Décompilé par Artyom Trishkin

Note pour toi.

 
lil_lil:

Ecrit et comment faire pour qu'il écrive toutes les 120 secondes dans les 30 minutes suivant l'ouverture du bar ?

EventSetTimer

 
Konstantin Nikitin:

EventSetTimer

Cela ne fonctionne pas dans les scripts ?