Jede Anfängerfrage, um das Forum nicht zu überladen. Fachleute, gehen Sie nicht vorbei. Nirgendwo ohne dich - 6. - Seite 591

 
artmedia70:
Nein... Ich mag Mädchen immer.

Äh... (atmet leise aus) : )

Das ist großartig! :)

Ich verspreche, dass ich dieses Wissen nicht missbrauchen werde. :)

Lan. Nacht, Nacht! Ich werde jetzt schlafen gehen.

 
DiPach:

Artem meinte mit "... Bedingung ausgelöst - Markierung setzen", meinte er damit, dass im Skriptcode das Symbol (die Markierung) gesetzt werden soll, wenn die Bedingung ausgelöst wird.

Die MQL4-Referenz enthält sehr gute Beispiele für Skripte zur Erstellung von Symbolen. Zum Beispiel dieses Skript, das "Kaufen"-Symbole in einem Diagramm erstellt und verschiebt.

r772ra:

Gutes Skript, ziehen Sie die gewünschte Funktion von dort,

und da haben Sie es.

Ich danke Ihnen!
 
 

Ich möchte die Struktur schreiben, aber ich kann es nicht! In der Hilfe steht geschrieben, dass FileWriteStruct in eine Binärdatei schreibt, wenn die Größe nicht angegeben ist, dann die gesamte Struktur.

Wer hat eine Meinung?

Er schreibt immer noch in eine Binärdatei.

Oder schicken Sie mich zu einer Zweigstelle, wo man mir helfen kann.

Dateien:
 
_SERG_:

Ich möchte die Struktur schreiben, aber ich kann es nicht! In der Hilfe steht geschrieben, dass FileWriteStruct in eine Binärdatei schreibt, wenn die Größe nicht angegeben ist, dann die gesamte Struktur.

Wer hat eine Meinung?

Er schreibt immer noch in eine Binärdatei.

Oder verweisen Sie mich an eine Zweigstelle, wo man mir helfen kann.


Wo legen Sie die Array-Größe fest?

 
Vinin:


Wo legen Sie die Array-Größe fest?


In der Deklaration " ORD Orders[10];" oder über "ArrayResize( Orders, 10)", aber das hat keinen Einfluss auf den Fehler. Ich habe es gerade überprüft. (Ich habe die Größe im Skript wirklich nicht angegeben.)

Ich gehe davon aus, dass es keine Möglichkeit gibt, verschiedene Datentypen zu konvertieren.

Terminal 646, ME 934.

 
_SERG_:

in der Deklaration " ORD Orders[10];" oder über "ArrayResize( Orders, 10)", aber das hat keinen Einfluss auf den Fehler. Gerade überprüft. (Ich habe im Skript wirklich keine Größe angegeben.)

Ich gehe davon aus, dass es keine Möglichkeit gibt, verschiedene Datentypen zu konvertieren.

Terminal 646, ME 934.


Das Testbeispiel meldete, dass die Datei erstellt wurde. Ich kann es einfach nicht finden
 
Vinin:

Das Testbeispiel meldete, dass die Datei erstellt wurde. Ich kann es einfach nicht finden.

Ich habe es gefunden. Obwohl ich sie in einem ganz anderen Verzeichnis haben sollte. Es funktioniert also.
 
Vinin:

Ich habe es gefunden. Allerdings habe ich sie in einem ganz anderen Verzeichnis. Es funktioniert also.

Kann ich einen Blick auf die Korrekturen werfen? Wenn die Datei mir gehört.

Wenn die in der Hilfe, DEMO_FileWriteStruct, so dass es kompiliert, habe ich versucht, die Funktion des Schreibens in die Datei von ihm zu nehmen, aber ich brauche nicht, um die Anzahl der Zeilen geschrieben zu kontrollieren. Oder habe ich es so verstanden, dass die Struktur Byte für Byte geschrieben wird?

Dann habe ich eine Frage: Soll sie auch Byte für Byte gelesen werden? In der Struktur, wenn sie aus der Datei zurückgeladen werden muss?



 
_SERG_:

Können wir einen Blick auf die Korrekturen werfen?


Ich habe das Beispiel aus der Hilfe verwendet

//+------------------------------------------------------------------+
//|                                          Demo_FileWiteStruct.mq5 |
//|                        Copyright 2013, MetaQuotes Software Corp. |
//|                                              https://www.mql5.com |
//+------------------------------------------------------------------+
#property copyright "Copyright 2013, MetaQuotes Software Corp."
#property link      "https://www.mql5.com"
#property version   "1.00"
//--- покажем окно входных параметров при запуске скрипта
#property script_show_inputs
//--- параметры для получения данных из терминала
input string          InpSymbolName="EURUSD";           // валютная пара
input ENUM_TIMEFRAMES InpSymbolPeriod=PERIOD_H1;        // таймфрейм
input datetime        InpDateStart=D'2013.01.01 00:00'; // дата начала копирования данных
//--- параметры для записи данных в файл
input string          InpFileName="EURUSD.txt";         // имя файла
input string          InpDirectoryName="Data";          // имя директории
//+------------------------------------------------------------------+
//| Структура для хранения данных свечи                              |
//+------------------------------------------------------------------+
struct candlesticks
  {
   double            open;  // цена открытия
   double            close; // цена закрытия
   double            high;  // максимальная цена
   double            low;   // минимальная цена
   datetime          date;  // дата
  };
//+------------------------------------------------------------------+
//| Script program start function                                    |
//+------------------------------------------------------------------+
void OnStart()
  {
   datetime     date_finish=TimeCurrent();
   int          size;
   datetime     time_buff[];
   double       open_buff[];
   double       close_buff[];
   double       high_buff[];
   double       low_buff[];
   candlesticks cand_buff[];
//--- сбросим значение ошибки
   ResetLastError();
//--- получим время появления баров из диапазона
   if(CopyTime(InpSymbolName,InpSymbolPeriod,InpDateStart,date_finish,time_buff)==-1)
     {
      PrintFormat("Не удалось скопировать значения времени. Код ошибки = %d",GetLastError());
      return;
     }
//--- получим максимальные цены баров из диапазона
   if(CopyHigh(InpSymbolName,InpSymbolPeriod,InpDateStart,date_finish,high_buff)==-1)
     {
      PrintFormat("Не удалось скопировать значения максимальных цен. Код ошибки = %d",GetLastError());
      return;
     }
//--- получим минимальные цены баров из диапазона
   if(CopyLow(InpSymbolName,InpSymbolPeriod,InpDateStart,date_finish,low_buff)==-1)
     {
      PrintFormat("Не удалось скопировать значения минимальных цен. Код ошибки = %d",GetLastError());
      return;
     }
//--- получим цены открытия баров из диапазона
   if(CopyOpen(InpSymbolName,InpSymbolPeriod,InpDateStart,date_finish,open_buff)==-1)
     {
      PrintFormat("Не удалось скопировать значения цен открытия. Код ошибки = %d",GetLastError());
      return;
     }
//--- получим цены закрытия баров из диапазона
   if(CopyClose(InpSymbolName,InpSymbolPeriod,InpDateStart,date_finish,close_buff)==-1)
     {
      PrintFormat("Не удалось скопировать значения цен закрытия. Код ошибки = %d",GetLastError());
      return;
     }
//--- определим размерность массивов
   size=ArraySize(time_buff);
//--- сохраним все данные в массиве структуры
   ArrayResize(cand_buff,size);
   for(int i=0;i<size;i++)
     {
      cand_buff[i].open=open_buff[i];
      cand_buff[i].close=close_buff[i];
      cand_buff[i].high=high_buff[i];
      cand_buff[i].low=low_buff[i];
      cand_buff[i].date=time_buff[i];
     }
 
//--- откроем файл для записи массива структуры в файл (если его нет, то создастся автоматически)
   ResetLastError();
   int file_handle=FileOpen(InpDirectoryName+"//"+InpFileName,FILE_READ|FILE_WRITE|FILE_BIN|FILE_COMMON);
   if(file_handle!=INVALID_HANDLE)
     {
      PrintFormat("Файл %s открыт для записи",InpFileName);
      PrintFormat("Путь к файлу: %s\\Files\\",TerminalInfoString(TERMINAL_COMMONDATA_PATH));
      //--- подготовим счетчик количества байт
      uint counter=0;
      //--- в цикле запишем значения массива
      for(i=0;i<size;i++)
         counter+=FileWriteStruct(file_handle,cand_buff[i]);
      PrintFormat("В файл %s записано %d байт информации",InpFileName,counter);
      PrintFormat("Всего байтов: %d * %d * %d = %d, %s",size,5,8,size*5*8,size*5*8==counter ? "Верно" : "Ошибка");
      //--- закрываем файл
      FileClose(file_handle);
      PrintFormat("Данные записаны, файл %s закрыт",InpFileName);
     }
   else
      PrintFormat("Не удалось открыть файл %s, Код ошибки = %d",InpFileName,GetLastError());
  }
 
Vinin:


Ich habe das Beispiel aus der Hilfe verwendet

Die generierte Datei befindet sich in \Data\EURUSD.
npDirectoryName="Data"  InpSymbolName="EURUSD"