Forumu kirletmemek için herhangi bir acemi sorusu. Profesyonel, kaçırmayın. Sensiz, hiçbir yerde - 6. - sayfa 591

 
artmedia70 :
Bu değil... Ben her zaman kızları severim.

Phew ... (sakince nefes verdi) :)

Bu harika! :)

Bu bilgiyi kötüye kullanmayacağıma söz veriyorum. :)

Lan. İyi geceler! Uyu.

 
DiPach :

Artyom, "... koşul işe yaradı - bir etiket koy." anlamına gelir; bu, koşul tetiklendiğinde komut dosyası kodunda simgenin (etiket) ayarlanması anlamına gelir.

MQL4 dil referansı, simgeler oluşturmak için çok iyi komut dosyası örneklerine sahiptir. Örneğin, bu komut dosyası grafikte "Satın Al" simgelerini oluşturur ve taşır.

r772ra :

İyi bir script, oradan gerekli fonksiyonu çekiyoruz,

ve işte burada.

Teşekkür ederim!
 

Yapıyı nasıl ve hatta herhangi bir şekilde yazmak isterdim! Yardım, FileWriteStruct'un , boyut belirtilmemişse tüm yapıyı ikili bir dosyaya yazdığını söylüyor.

Kimin görüşleri var?

Hepsi aynı, ikiliye yazılır.

Veya yardımcı olacakları bir şubeye gönderin.

Dosyalar:
 
_SERG_ :

Yapıyı nasıl ve hatta herhangi bir şekilde yazmak isterdim! Yardım, FileWriteStruct'un, boyut belirtilmemişse tüm yapıyı ikili bir dosyaya yazdığını söylüyor.

Kimin görüşleri var?

Hepsi aynı, ikiliye yazılır.

Veya yardımcı olacakları bir şubeye gönderin.


Bir dizinin boyutunu nerede tanımlarsınız?

 
Vinin :


Bir dizinin boyutunu nerede tanımlarsınız?


"ORD Emirleri[10]" beyanında; veya " ArrayResize ( Orders, 10)" yoluyla, ancak bu hatayı etkilemez. Kontrol edilen akım. (Komut dosyasında boyutu gerçekten belirtmedim.)

Farklı türlerdeki verileri dönüştürmenin mümkün olmadığını anlıyorum.

Terminal 646, ME 934.

 
_SERG_ :

"ORD Emirleri[10]" beyanında; veya "ArrayResize( Orders, 10)" aracılığıyla, ancak bu hatayı etkilemez. Kontrol edilen akım. (Komut dosyasında boyutu gerçekten belirtmedim.)

Farklı türlerdeki verileri dönüştürmenin mümkün olmadığını anlıyorum.

Terminal 646, ME 934.


Test vakası, dosyanın oluşturulduğunu bildirdi. sadece bulamıyorum
 
Vinin :

Test vakası, dosyanın oluşturulduğunu bildirdi. sadece bulamıyorum

Bulundu. Tamamen farklı bir dizinde olmasına rağmen. peki ne işe yarar
 
Vinin :

Bulundu. Tamamen farklı bir dizinde olmasına rağmen. peki ne işe yarar

Düzeltmeleri görebiliyor musunuz? Dosya benimse.

Yardımdaki DEMO_FileWriteStruct ise böyle derleniyor, dosyaya yazma işlevini ondan almaya çalıştım ama yazılacak satır sayısını kontrol etmem gerekmiyor. Veya yapının bayt bayt yazıldığını anlıyorum?

Sonra soru ortaya çıkıyor, sonra da bayt bayt mı okuyorsunuz? Yapıda, dosyadan ne zaman geri yüklemek gerekir?

 
_SERG_ :

Düzeltmeleri görebiliyor musunuz?


Yardımdaki örneği kullandım

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


Yardımdaki örneği kullandım

Oluşturulan dosya \Data\EURUSD içinde bulunabilir.
npDirectoryName= "Data" InpSymbolName= "EURUSD"
Neden: