[ARCHIV!] Alle Fragen von Anfängern, um das Forum nicht zu überladen. Fachleute, gehen Sie nicht vorbei. Ohne dich kann ich nirgendwo hingehen - 4. - Seite 434

 
Bitte sagen Sie mir, der Smiley lächelt, aber der Berater schaltet sich nicht ein...wie stelle ich ihn richtig ein?...danke!
 
zorber:

Einen guten Tag an alle,

Ich erteile einen schwebenden Auftrag (Erstellungszeit, z.B. 11:31)
Dann wird dieser Auftrag um 12:01 Uhr ausgelöst

Frage: Wie erfahre ich das Datum und die Uhrzeit, zu der der schwebende Auftrag erteilt wurde, wenn der Auftrag bereits in den Markt eingetreten ist und die Funktion OrderOpenTime( ) den Zeitpunkt des Markteintritts zurückgibt?

Weiß jemand, wie man dieses Problem lösen kann?

Ich danke Ihnen im Voraus.


In MT4 aus der Liste der Aufträge keine Möglichkeit.

Eine Möglichkeit ist die Erinnerung an den Zeitpunkt der Platzierung

 
Roger:
Es ist höchste Zeit, dass Sie die Textdatei verstehen, wie sie aufgebaut ist und woraus sie besteht. Drucken Sie die Cursorposition nach jedem Lesen einer Zeile aus, indem Sie die
int FileTell( int handle)
Es wird sofort klar werden.

Die Ironie der Situation ist, dass die Frage, die ich oben gestellt habe, durch eine Situation ausgelöst wurde, die fast Ihrem Ratschlag entspricht...

Um zu verstehen, wie die Funktionen FileIsEnding und FileIsLineEnding funktionieren, habe ich das folgende Skript geschrieben:

//+------------------------------------------------------------------------------------------+
//|                                                                   Конец_Строки_Файла.mq4 |
//+------------------------------------------------------------------------------------------+
//+------------------------------------------------------------------------------------------+
//|                         script program start function                                    |
//+------------------------------------------------------------------------------------------+
#property show_inputs                                                    //выводим перед запуском скрипта окно свойств
extern int  position=0;                                                  //внешняя переменная: смещение файлового указателя ОТ НАЧАЛА ФАЙЛА (в БАЙТАХ)
//---------------------------------------------------------------------------------------- 1 -
int start()                                                              //функция start
  {                                                                      //начало start
   double Timestart=GetTickCount();                                      //переменная, с помощью которой вычисляется время (в милисекундах) начала выполнения эксперта 
   string name="Копия Запись чисел в файл.csv";                          //имя создаваемого файла
   bool h;                                                               //переменная: значение функции FileIsEnding
   bool h_l;                                                             //переменная: значение функции FileIsLineEnding
   int error;                                                            //переменная: ошибка
   int handle=FileOpen(name,FILE_CSV|FILE_WRITE,';');                    //открываем заданный файл n записываем туда данные
   int запись=FileWrite(handle,DoubleToStr(1.3584,4));                   //записываем число в файл csv (в преобразованном виде, т.е в виде текста)
   FileClose(handle);                                                    //закрываем файл
//---------------------------------------------------------------------------------------- 2 -
   handle=FileOpen(name,FILE_CSV|FILE_READ,';');                         //открываем заданный файл
   bool pos=FileSeek(handle,position,SEEK_SET);                          //смещаем от начала вправо указатель файла
   double чтение=FileReadNumber(handle);                                 //считываем число из текущей позиции (уже измененной функцией FileSeek) файлового указателя
   int size=FileSize(handle);                                            //вычисляем размер заданного файла
   h=FileIsEnding(handle);                                               //устанавливаем текущее значение переменной h
   h_l=FileIsLineEnding(handle);                                         //устанавливаем текущее значение переменной h_l
   error=GetLastError();                                                 //значение ошибки, производимой функцией FileIsEnding
   if(error!=0)Alert("Текущая ошибка ",error);                           //если код текущей ошибки не равен 0, то получаем номер текущей ошибки
   FileClose(handle);                                                    //закрываем файл
//----------------------------------------------------------------------------------------- 3 -
   Comment("Размер файла ",name," составил ",size," байт",
           "\nФункция FileSeek вернула: ",pos,
           "\nФункция FileReadNumber(handle) вернула: ",чтение,
           "\nФункция FileIsLineEnding(handle) вернула: ",h_l,
           "\nФункция FileIsEnding(handle) вернула: ",h,
           "\nСкрипт выполнялся всего ",GetTickCount()-Timestart," миллисекунд, из них: ",MathFloor((GetTickCount()-Timestart)/1000)," секунд ",((GetTickCount()-Timestart)/1000-MathFloor((GetTickCount()-Timestart)/1000))*1000," миллисекунд");//печать сообщения на экран
//----------------------------------------------------------------------------------------- 4 -
   return(0);                                                             //выход из start
  }                                                                       //конец start
//-------------------------------------- КОНЕЦ START -------------------------------------- 5 -

In Block 1-2 habe ich die Zahl 1,3584 geöffnet und in die Datei geschrieben (die von der Funktion DoubleToStr in Text umgewandelt wird).

In Block 3-4 habe ich die Datei geöffnet und die dort geschriebene Zahl gelesen.

Die externe Variable int position soll den Dateizeiger mit der Funktion FileTell verschieben, um zu verstehen, wie die Funktionen FileIsEnding und FileIsLineEnding funktionieren und was der Dateizeiger ist.

Im MQL4.community Buch steht, dass der Dateizeiger ein Analogon des Textcursors ist.

ABER, wenn man das Skript mehrmals ausführt und die externe Variable postiton jedes Mal um 1 erhöht (d.h. den Dateizeiger auf diese Weise um 1 Byte nach rechts an den Anfang der Datei verschiebt), gibt die Funktion Comment eine Reihe von Meldungen aus, z.B:

Bei postiton=7 würde die Nachricht wie folgt aussehen:

Bei postiton=7 würde die Nachricht wie folgt aussehen:


Da String-Konstanten 8 Bytes im PC-Speicher belegen und nur eine umgewandelte Zahl in der Datei vorhanden ist, führt das Verschieben des Dateizeigers um 8 Bytes nach rechts zu einem 4099-Fehler (was bedeutet, dass das Ende der Datei erreicht wurde). Ich weiß auch, dass die Funktion FileIsEnding aus demselben Grund (Dateiende erreicht) 1 (true) zurückgibt. Aber ich verstehe nicht, warum die Funktion FileIsLineEnding 0 zurückgibt (false, was bedeutet, dass der Dateizeiger das Ende der Zeile nicht erreicht hat). Ausgehend von der Analogie im MQL-Buch (ein Dateizeiger ist in etwa dasselbe wie ein Textcursor) habe ich mir überlegt, dass das Ende der Datei auch das Ende der Zeichenkette ist. Aber angesichts der Tatsache, dass FileIsEnding und FileIsLineEnding nicht übereinstimmende Werte haben, wenn der Dateizeiger das Ende der Datei erreicht, war ich ratlos in Bezug auf WAS ist ein Dateizeiger? Da ich aber irgendwo anfangen musste, um die Frage zu stellen, habe ich sie so gestellt, wie sie auf Seite 433 steht.

Ich habe also die große Bitte, mein erhitztes Hirn freizumachen und die folgenden Fragen zu beantworten (oder zumindest eine, die mir helfen wird, den Rest der Fragen zu verstehen):

1. Was ist falsch an meinem Verständnis des Dateizeigers (Frage in meinem Beitrag auf S. 433)?

2. Die Bedeutung des Satzes "Wenn die angegebene Prüfung (die letzten beiden Zeilen in Block 5-6) entfernt wird, wird zur Laufzeit ein zusätzliches Objekt erstellt. Und erst danach wird die Endbedingung der while-Schleife ausgelöst und die Kontrolle an Block 8-9 übergeben" (die Frage ist in meinem Beitrag auf Seite 433 angegeben)

3. Warum gibt FileIsLineEnding beim Erreichen des Endes der Datei 0 statt 1 zurück?

P.S. Um das Forum nicht zu überladen, bedanke ich mich im Voraus für die Antwort.

 

Eine gute Zeit für Sie alle

Bitte sagen Sie mir, wie ich eine horizontale Linie zeichnen kann ((Bid+Ask)/2+0.00333):)

 

Guten Tag!

Was sollen die Herren tun?

Der mobile Computer kann das Netzwerk nicht sehen "NO COMMUNICATION"

 
Ragen:

Guten Tag!

Was sollen die Herren tun?

Der mobile Computer kann das Netzwerk nicht sehen "NO COMMUNICATION"


Erstellen Sie eine neue Demo. Die alte muss aus Zeitgründen gelöscht worden sein.
 
sergeev:

Erstellen Sie eine neue Demo für sich selbst. Die alte muss aufgrund der Frist gelöscht worden sein

Ich habe kein Demokonto, sondern drei echte Konten.

Aber alle aus demselben DZ, hat das einen Einfluss?

 
Ragen:

Ich habe kein Demokonto, sondern drei echte Konten.

Aber alle aus dem gleichen dtz, kann dies etwas beeinflussen?


:) Nun, rufen Sie die Maklerfirma an. Was hat das mit dem MQL-Programmierforum zu tun?
 
sergeev:

Was hat das mit dem MQL-Programmierforum zu tun?

Aus irgendeinem Grund war das Terminal sofort "am Rollen" :)

Ich bin dabei!

 

Fachleute, bitte um Rat. Wenn ich eine schwebende Stop-Order platziert habe, der Preis aber mit einem erweiterten Spread, der den Stoploss übersteigt, in die Order eintritt.... Was wird geschehen?

Die Bestellung wird durch die Ausbreitung gegessen werden... Oder tritt ein Fehler auf und der Auftrag wird nicht ausgelöst?

Grund der Beschwerde: