Qualsiasi domanda da principiante, per non ingombrare il forum. Professionisti, non passate oltre. Da nessuna parte senza di te - 6. - pagina 591

 
artmedia70:
No... Mi piacciono sempre le ragazze.

Uh... (espira dolcemente) : )

È fantastico! :)

Prometto di non abusare di questa conoscenza. :)

Lan. Notte-notte! Ora vado a dormire.

 
DiPach:

Artyom intendeva dire "... condizione attivata - metti un segno", quello che intendeva era scrivere nel codice script per impostare l'icona (marcatore) quando la condizione è attivata.

Il MQL4 Reference ha ottimi esempi di script per la creazione di icone. Per esempio, questo script che crea e sposta le icone "Buy" su un grafico.

r772ra:

Ottimo script, tira la funzione richiesta da lì,

ed ecco fatto.

Grazie!
 
 

Voglio scrivere la struttura, ma non posso! È scritto nella guida che FileWriteStruct scrive in un file binario, se la dimensione non è specificata, allora l'intera struttura.

Chi ha un'opinione?

Scrive ancora su un binario.

O mandarmi in una filiale dove possono aiutarmi.

 
_SERG_:

Voglio scrivere la struttura, ma non posso! È scritto nella guida che FileWriteStruct scrive in un file binario, se la dimensione non è specificata, allora l'intera struttura.

Chi ha un'opinione?

Scrive ancora su un binario.

O indirizzarmi verso una filiale dove possono aiutarmi.


Dove si definisce la dimensione dell'array?

 
Vinin:


Dove si definisce la dimensione dell'array?


Nella dichiarazione " ORD Orders[10];" o tramite "ArrayResize( Orders, 10)", ma questo non influenza l'errore. Ho appena controllato. (In realtà non ho specificato le dimensioni nello script).

Immagino che non ci sia la possibilità di convertire diversi tipi di dati.

Terminale 646, ME 934.

 
_SERG_:

nella dichiarazione " ORD Orders[10];" o tramite "ArrayResize( Orders, 10)", ma questo non influenza l'errore. Ho appena controllato. (In realtà non ho specificato una dimensione nello script).

Immagino che non ci sia la possibilità di convertire diversi tipi di dati.

Terminale 646, ME 934.


L'esempio di test ha riportato che il file è stato creato. Non riesco proprio a trovarlo
 
Vinin:

L'esempio di test ha riportato che il file è stato creato. Non riesco proprio a trovarlo.

Trovato. Anche se dovrei averlo in una directory completamente diversa. Quindi funziona.
 
Vinin:

Trovato. Anche se ce l'ho in una directory completamente diversa. Quindi funziona.

Posso dare un'occhiata alle correzioni? Se il file è mio.

Se quello nell'aiuto, DEMO_FileWriteStruct, così si compila, ho provato a prendere la funzione di scrittura nel file da esso, ma non ho bisogno di controllare il numero di linee scritte. O ho capito che la struttura è scritta byte per byte?

Allora ho una domanda: deve essere letto anche byte per byte? Nella struttura, quando è necessario caricarla di nuovo dal file?



 
_SERG_:

Possiamo dare un'occhiata alle correzioni?


Ho usato l'esempio della guida

//+------------------------------------------------------------------+
//|                                          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:


Ho usato l'esempio della guida

Il file generato può essere trovato in \Data\EURUSD.
npDirectoryName="Data"  InpSymbolName="EURUSD"
Motivazione: