Einzelnen Beitrag anzeigen
  #5 (permalink)  
Alt 12.08.20
LQK LQK ist offline
Mitglied
 
Registriert seit: Nov 2019
Beiträge: 76
LQK befindet sich auf einem aufstrebenden Ast
Standard

Zitat:
Zitat von traderdoc Beitrag anzeigen
Ich würde mal meinen, ohne den Code getestet zu haben,, dass
1. das return(false) evtl. beim Compilieren problematisch sein könnte, da die Funktion OnInit vom Typ int ist.
2. So wie der Code im Post steht, ist er schlecht (unübersichtlich) geschrieben.
Es wäre wirklich zukünftig zweckdienlich, mal die Klammerpaare untereinander zu schreiben. Somit ergibt sich folgendes:
Sollte handle < 1 sein, wird das Programm in der übernächsten Zeile mit return(false) aussteigen.
Sollte handle > 0 sein, wird überhaupt nichts geschehen, weil die Klammern falsch gesetzt worden und das Programm springt sofort zu return(INIT_SUCCEEDED);

traderdoc
Besten Dank für die Hinweise. Habe versucht den Code etwas übersichtlicher zu gestalten:

1. Klammern und Einrückungen verbessert.
2. Auslagern des Codes in eine eigene Funktion mit dem Rückgabewert bool.
3. Einfügen zusätzlicher Returns, um jetzt neu auftretende Compilierungsfehler wegzubekommen.

Hier der neue Code:

Code:
//+------------------------------------------------------------------+
//|                                            Schreibe in Datei.mq4 |
//|                        Copyright 2020, MetaQuotes Software Corp. |
//|                                             https://www.mql5.com |
//+------------------------------------------------------------------+
#property copyright "Copyright 2020, MetaQuotes Software Corp."
#property link      "https://www.mql5.com"
#property version   "1.00"
#property strict
//+------------------------------------------------------------------+
//| Expert initialization function                                   |
//+------------------------------------------------------------------+



int OnInit()
  {
  
     testfunktion();     
     return(INIT_SUCCEEDED);
  }
  
  
     
  
  bool testfunktion()
   {
   
   
   int handle;
   handle=FileOpen("my_data.csv", FILE_CSV,';');
   if (handle<1)
         {
         Print("File my_data.dat not found, the last error is ", GetLastError());
         return(false);
         }
      
  
  datetime orderOpen=OrderOpenTime();
  handle=FileOpen("my_data.csv", FILE_CSV|FILE_WRITE, ';');
  if (handle>0)
         {
         FileWrite(handle, Close[0], Open[0], High[0], Low[0], TimeToStr(orderOpen));
         FileClose(handle);
         return(true);
         }  
         
   return(true);
   
   }

Ich habe ja diese beiden kleinen Beispiele aus der Dokumentation entnommen. Weil ich lernen will, wie ich eine Datei anlege, damit arbeite, Werte in diese Schreibe usw.

Der oben gepostete neue Code funktioniert ohne Compilierungsfehler, legt aber immer noch keine Datei an.

Um ehrlich zu sein, ist mir derzeit unklar, was das mit int handle soll und wozu ich überhaupt Rückgabewerte brauche. Warum soll das File vom typ int sein, wieso sollte der handle Werte größer oder kleiner 0 annehmen, und wozu brauche ich einen Rückgabewert, wenn ich doch nur etwa in eine Datei schreiben will?


Besten Dank für jeden konstruktiven Hinweis und Grüße!
LQK