Fragen von Neueinsteigern zu MQL4 und MQL5, Hilfe und Diskussion über Algorithmen und Codes - Seite 240

 
Санек:

1) - Dieser Teil öffnet die Datei 11112222.txt, um Daten aus ihr zu lesen:

//=================================BUY=========================================
    int handle2 = FileOpen("11112222.txt", FILE_CSV|FILE_READ, ";");//код открывает файл для чтения

2) - Als nächstes kommt die Bedingung if handle2>0


  if(handle2>0) // если в файле больше 0, то есть 1, то открывать BUY
   {

3) - Das ist der Teil, den ich nicht verstehe:


       Print(FileReadString(handle2));

4) - Mit diesem Teil wird die Datei geschlossen:


       FileClose(handle2); // закрытие текстового файла

5) - Da die Bedingung handle2>0 erfüllt ist, d.h. die Datei 11112222.txt enthält 1, wird ein Kaufauftrag eröffnet:

  //ОТКРЫТИЕ ОРДЕРА НА ПОКУПКУ      
                    if(OrdersTotal() == 0) // если нет открытых ордеров то открывать ордер на покупку
                     {
                        OrderSend(Symbol(), OP_BUY, 0.01, Ask, 3, 0, 0); // первым указывается ЛОСЬ, вторым ПРОФИТ
                        FileClose(handle2); // закрытие текстового файла
                     }
                    else
                      Print("NE USPESHNO!!!");
                      FileClose(handle2); // закрытие текстового файла

   }
//=================================конец кода BUY=========================================

Welche Teile habe ich verwechselt?

1) Öffnet die Datei, liest aber nicht ihren Inhalt.

2) Der Handle der Datei ist IMMER größer als Null. Dementsprechend gilt die Bedingung immer, wenn die Datei existiert, unabhängig von ihrem Inhalt.

3) Dies ist nur das Lesen des Inhalts der Datei. Obwohl ich nicht verstehe, warum eine Zeichenkette gelesen wird, wenn eine Zahl gelesen werden soll... Dennoch kann dies ein weiteres Problem darstellen. Jetzt kommt es darauf an, die Abfolge der Aktionen zu beschreiben.

4) Natürlich muss die Datei geschlossen werden, und sie wird geschlossen.

Und je nachdem, was Sie in Satz 3 lesen, muss nur der nächste Satz konditioniert werden, nicht aber der zweite Satz.

 
Alexey Viktorov:

1) öffnet eine Datei, liest aber nicht deren Inhalt.

2) Ein Dateihandle ist IMMER größer als Null. Dementsprechend gilt die Bedingung immer, wenn die Datei existiert, unabhängig von ihrem Inhalt.

3) Dies ist genau das Lesen des Inhalts der Datei. Aber ich verstehe nicht, warum eine Zeichenkette gelesen wird, wenn eine Zahl gelesen werden soll... Es kann aber auch auf ein anderes Problem hinweisen. Jetzt kommt es darauf an, die Abfolge der Aktionen zu beschreiben.

4) Die Datei muss natürlich geschlossen werden, und das wird sie auch.

Und nur der nächste Satz sollte abhängig von dem, was Sie in Satz 3 lesen, konditioniert werden, nicht aber der zweite Satz.

Nein... INVALID_HANDLE hat den Wert -1.

Wenn dann ein Fehler beim Öffnen der Datei auftritt, erhält er ein Verkaufssignal...

Andere Konstanten

Spezielle Konstanten, die verwendet werden, um den Zustand von Parametern und Variablen anzugeben. Kann die folgenden Werte annehmen:

Konstante

Beschreibung

Wert

NULL

Null eines beliebigen Typs. Zeigt auch den Zustand einer leeren Zeichenkette an

0

LEER

Zeigt den leeren Zustand des Parameters an

-1

EMPTY_VALUE

Leerer Wert im Indikatorpuffer

2147483647 (0x7FFFFFFFF)

CLR_NONE, clrNONE

Keine Farbe. Standardwert, Zeiger auf leeren Wert. Verwendet in benutzerdefinierten Indikatoren

-1

CHARTS_MAX

Maximal mögliche Anzahl von gleichzeitig geöffneten Charts im Terminal

100

INVALID_HANDLE

Falscher Griff

-1

IS_DEBUG_MODE

Zeichen eines mq5-Programms im Debug-Modus

im Debug-Modus ungleich Null ist, sonst 0

IS_PROFILE_MODE

Zeichen eines mq5-Programms im Profiling-Modus

im Profiling-Modus ungleich Null ist, sonst ist es 0

WHOLE_ARRAY

Gibt die Anzahl der verbleibenden Elemente bis zum Ende des Arrays an, d.h. das gesamte Array wird verarbeitet

0

FALSCH_WERT

Eine Konstante kann implizit in einen beliebigen Aufzählungstyp umgewandelt werden

-1

 

Ich habe diesen Thread nicht gesehen, also habe ich einen neuen erstellt. Bitte schauen Sieauf https://www.mql5.com/ru/forum/206126

Как в тестере стратегий получить TimeGMT();
Как в тестере стратегий получить TimeGMT();
  • 2017.06.28
  • www.mql5.com
Справочник MQL5, Дата и время, TimeGMT TimeGMT - При работе в тестере стратегий время TimeGMT() всегда равно моделируемому серверному времени TimeT...
 
Alexey Viktorov:

1) öffnet eine Datei, liest aber nicht deren Inhalt.

2) Ein Dateihandle ist IMMER größer als Null. Dementsprechend gilt die Bedingung immer, wenn die Datei existiert, unabhängig von ihrem Inhalt.

3) Dies ist genau das Lesen des Inhalts der Datei. Aber ich verstehe nicht, warum eine Zeichenkette gelesen wird, wenn eine Zahl gelesen werden soll... Es kann aber auch auf ein anderes Problem hinweisen. Jetzt kommt es darauf an, die Abfolge der Aktionen zu beschreiben.

4) Die Datei muss natürlich geschlossen werden, und das wird sie auch.

Und nur der nächste Punkt sollte abhängig von dem, was Sie in Punkt 3 lesen, konditioniert werden, nicht aber der zweite Punkt.

Liebe MQL-Gurus - wenn Sie kein Problem sind, bitte helfen Sie mir mit diesem Code, ich habe einen halben Tag auf Suchmaschinen verbracht, aber ich habe nichts Ähnliches gefunden.

Ich denke, es sind nur ein paar Zeilen, aber für einen erfahrenen Benutzer ist es eine Sache von Minuten)))

 

Wie kann eine Dll in C++ eine Zeichenfolge aus mql4 nehmen und konvertieren Sie es in char*?

struct MqlStr
{
        int               len;
        char             *string;
};

static int proc_func(char* Name);

MT4_EXPFUNC int __stdcall myfunc(MqlStr sym_name)
{
        proc_func(sym_name[0].string);
        
}
int proc_func(char* Name)
{
}
Das ist doch der richtige Code, oder?
 

Hallo alle, könnten Sie mich bitte beraten, ich schrieb ein EA vor etwa einem Jahr, es war gut funktionieren. Ich habe sie die ganze Zeit über nicht benutzt. Ich weiß nicht, was ich damit tun soll, ich weiß einfach nicht, was ich damit tun soll. Kann es daran liegen, dass ich das Gebäude gewechselt habe? Ich verwende derzeit die Build 1090.

 
Санек Lieber MQL-Guru - wenn Sie nicht schwer sind, mir mit diesem Code zu helfen, habe ich einen halben Tag damit verbracht, in Suchmaschinen herumzuwühlen, aber ich kann nichts Ähnliches finden.

Es scheint sich um ein paar Zeilen zu handeln, was für eine sachkundige Person eine Sache von drei Minuten ist)))

Ich habe zwei Stunden gebraucht. Ich muss das System Stück für Stück überprüfen. Führen Sie beide EAs gleichzeitig auf benachbarten Charts aus - alles wird sichtbar sein. Expert Advisor 1 = In Datei schreiben

//+------------------------------------------------------------------+
//| Запись в файл -1  0  1                                     1.mq4 |
//+------------------------------------------------------------------+


//+------------------------------------------------------------------+
//| Инициализация - установка интервала таймера                      |
//+------------------------------------------------------------------+
void OnInit()
{
   EventSetTimer(7);
}


//+------------------------------------------------------------------+
//| Деинициализация - удаление метки                                 |
//+------------------------------------------------------------------+
void OnDeinit(const int Зачем)
{
   ObjectDelete("Семафор");
}


//+------------------------------------------------------------------+
//| По таймеру каждые 7 секунд                                       |
//+------------------------------------------------------------------+
void OnTimer()
{
   int x=0;
   if(rand()<20000)
   {
     x=1;
     if(rand()<16000) x=-1;
   }

   ObjectCreate("Семафор",OBJ_LABEL,0,0,0);
   ObjectCreate("Семафор", OBJ_LABEL, 0, 0, 0);  // Создание
   ObjectSet("Семафор", OBJPROP_CORNER, 3);      // В правый нижний угол
   ObjectSet("Семафор", OBJPROP_XDISTANCE, 0);   // Координата X   
   ObjectSet("Семафор", OBJPROP_YDISTANCE, 40);  // Координата Y
   ObjectSetText("Семафор",(string)x+" Открываю",20,"Arial",Yellow);
   ChartRedraw(0);
   Sleep(2000);

   int handle = FileOpen("123.txt", FILE_BIN | FILE_WRITE);
   if(handle == -1)
   {
      ObjectSetText("Семафор","Ошибка",20,"Arial",Salmon);
      ChartRedraw(0);
      return;
   }

   ObjectSetText("Семафор",(string)x+" Записываю",20,"Arial",DeepSkyBlue);
   ChartRedraw(0);

   FileWriteInteger(handle, x, 4);
   Sleep(2000);

   ObjectSetText("Семафор","",20,"Arial",White);
   ChartRedraw(0);
   FileClose(handle);
}

EA 2 = Datei lesen

//+------------------------------------------------------------------+
//| Чтение файла  -1  0  1                                     2.mq4 |
//+------------------------------------------------------------------+


//+------------------------------------------------------------------+
//| Инициализация - установка интервала таймера                      |
//+------------------------------------------------------------------+
void OnInit()
{
   EventSetTimer(1);
}


//+------------------------------------------------------------------+
//| Деинициализация - удаление метки                                 |
//+------------------------------------------------------------------+
void OnDeinit(const int Зачем)
{
   ObjectDelete("Семафор");
}


//+------------------------------------------------------------------+
//| По таймеру каждую секунду                                        |
//+------------------------------------------------------------------+
void OnTimer()
{
   int x=0;

   ObjectCreate("Семафор",OBJ_LABEL,0,0,0);
   ObjectCreate("Семафор", OBJ_LABEL, 0, 0, 0);  // Создание
   ObjectSet("Семафор", OBJPROP_CORNER, 2);      // В правый нижний угол
   ObjectSet("Семафор", OBJPROP_XDISTANCE, 0);   // Координата X   
   ObjectSet("Семафор", OBJPROP_YDISTANCE, 40);  // Координата Y
   ObjectSetText("Семафор","",20,"Arial",Yellow);
   ChartRedraw(0);

   Sleep(500);
   int handle = FileOpen("123.txt", FILE_BIN | FILE_READ);  // Получаем НОМЕР файла в ОС
   if(handle == -1)                // Если производится запись, файл занят, будет ошибка
   {
      ObjectSetText("Семафор","Ошибка",20,"Arial",Salmon);
      ChartRedraw(0);
      return;
   }

   x = FileReadInteger(handle,4);                          // Получаем СОДЕРЖИМОЕ файла
   ObjectSetText("Семафор",(string)x+" Прочитал",20,"Arial",DeepSkyBlue);
   ChartRedraw(0);

   FileClose(handle);
}
 
toni_stark:

Hallo alle, könnten Sie mich bitte beraten, ich schrieb ein EA vor etwa einem Jahr, es war gut funktionieren. Ich habe sie die ganze Zeit über nicht benutzt. Ich weiß nicht, was ich damit tun soll, ich weiß einfach nicht, was ich damit tun soll. Kann es daran liegen, dass ich das Gebäude gewechselt habe? Ich verwende derzeit die Build 1090.


Das ist durchaus möglich, es hat viele Innovationen gegeben. Beginnen Sie mit der Überprüfung auf Kompilierungsfehler. Mit der Richtlinie #PropertyStrict.

 
Vladimir Zubov:

Es mag durchaus viele Innovationen gegeben haben. Beginnen Sie mit der Überprüfung auf Kompilierungsfehler. Mit der Richtlinie #PropertyStrict.

Eine solche Richtlinie gibt es nicht.

Es gibt sie:

#property strict
 
Vladimir Zubov:

Es mag durchaus viele Innovationen gegeben haben. Beginnen Sie mit der Überprüfung auf Kompilierungsfehler. Mit der Richtlinie #PropertyStrict.


Artyom Trishkin:

Eine solche Richtlinie gibt es nicht.

Es gibt sie:


Aber ich kann die EA-Datei nicht öffnen, die auf meinem Computer mit der Erweiterung ex4 gespeichert ist, aber es gibt keine solche Datei in MetaEditor. Bitte sagen Sie mir, was der Grund dafür ist.

Grund der Beschwerde: