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.
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.
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.
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.
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
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?
//+------------------------------------------------------------------+//| 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//--- параметры для получения данных из терминалаinputstring InpSymbolName="EURUSD"; // валютная параinputENUM_TIMEFRAMES InpSymbolPeriod=PERIOD_H1; // таймфреймinputdatetime InpDateStart=D'2013.01.01 00:00'; // дата начала копирования данных//--- параметры для записи данных в файлinputstring InpFileName="EURUSD.txt"; // имя файлаinputstring InpDirectoryName="Data"; // имя директории//+------------------------------------------------------------------+//| Структура для хранения данных свечи |//+------------------------------------------------------------------+struct candlesticks
{
double open; // цена открытияdouble close; // цена закрытияdouble high; // максимальная ценаdouble low; // минимальная ценаdatetime date; // дата
};
//+------------------------------------------------------------------+//| Script program start function |//+------------------------------------------------------------------+voidOnStart()
{
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);
}
elsePrintFormat("Не удалось открыть файл %s, Код ошибки = %d",InpFileName,GetLastError());
}
No... Mi piacciono sempre le ragazze.
Uh... (espira dolcemente) : )
È fantastico! :)
Prometto di non abusare di questa conoscenza. :)
Lan. Notte-notte! Ora vado a dormire.
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.Ottimo script, tira la funzione richiesta da lì,
ed ecco fatto.
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.
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?
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.
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
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.
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?
Possiamo dare un'occhiata alle correzioni?
Ho usato l'esempio della guida
Ho usato l'esempio della guida