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,
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.
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.
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.
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
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?
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//--- параметры для получения данных из терминала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());
}
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.
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.Gutes Skript, ziehen Sie die gewünschte Funktion von dort,
und da haben Sie es.
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.
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?
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.
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
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.
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?
Können wir einen Blick auf die Korrekturen werfen?
Ich habe das Beispiel aus der Hilfe verwendet
Ich habe das Beispiel aus der Hilfe verwendet