Einzelnen Beitrag anzeigen
  #5 (permalink)  
Alt 23.12.15
traderdoc traderdoc ist offline
Elite Mitglied
 
Registriert seit: Apr 2011
Beiträge: 1.875
traderdoc befindet sich auf einem aufstrebenden Ast
Standard

Ich bin mal so frei und korrigiere Kleinigkeiten.

Code:
 //+------------------------------------------------------------------+
//|                                              Ausgabe_Rechts1.mq4 |
//|                             Copyright 2015, Franz-Josef Teutrine |
//|                                             https://www.mql5.com |
//+------------------------------------------------------------------+
#property copyright "Copyright 2015, Franz-Josef Teutrine"
#property link      "https://www.mql5.com"
#property version   "1.00"
#property strict

extern string text1 = "Hallo traderdoc das war ein guter Tipp!";
extern   int x = 350;
extern   int y = 10; 
extern   int gross = 20;

string obj_name;
//+------------------------------------------------------------------+
//| Expert initialization function                                                       |
//+------------------------------------------------------------------+

int OnInit()
  {
//---
   obj_name="label_object";
//---
   return(INIT_SUCCEEDED);
  }
//+------------------------------------------------------------------+
//| Expert deinitialization function                                                    |
//+------------------------------------------------------------------+
void OnDeinit(const int reason)
  { 
     ObjectDelete(obj_name);  
  }
   
//+------------------------------------------------------------------+
//| Expert tick function                                                                  |
//+------------------------------------------------------------------+

int start() 
  { 
   long chart_id = ChartID();

   Comment ("Chart Nummer ",chart_id);

   if(ObjectFind(obj_name) < 0)
     { 
      if(!ObjectCreate(chart_id,obj_name,OBJ_LABEL,0,0,0)) 
        { 
         Print("Error: can't create label! code #",GetLastError()); 
         return(0); 
        }
     } 
   ObjectSetInteger(chart_id,obj_name,OBJPROP_COLOR,clrWhite); 
   ObjectSetString(chart_id,obj_name,OBJPROP_TEXT,text1); 
   ObjectSet(obj_name,OBJPROP_XDISTANCE,x); 
   ObjectSet(obj_name,OBJPROP_YDISTANCE,y);
   ObjectSet(obj_name, OBJPROP_FONTSIZE,gross);
     
   return(0);     
  }
//+------------------------------------------------------------------+
- Deklaration von string obj_name; in die globalen variablen, wenn die Variable in verschiedenen Funktionen benutzt wird.
- ObjectDelete(obj_name); braucht in diesem Falle nur in OnDeinit()
- extern string text1 = "Hallo traderdoc das war ein guter Tipp!";
extern int x = 350;
extern int y = 10;
extern int gross = 20;
Als extern deklariert und initiiert, damit über F7 eine Änderung möglich ist, ohne! in den Code zu gehen und jedes mal neu zu compilieren.
- if(ObjectFind(obj_name) < 0), d.h. nur wenn das Objekt noch nicht! angelegt ist, wird es über ObjectCreate(chart_id,obj_name,OBJ_LABEL,0,0,0) erzeugt
zu 1.: wird automatisch von MT4 vergeben.
zu 2.: Die erste 0 steht für das Hauptfenster, die zweite 0 und dritte 0 stehen für Default-Einstellungen, die dann über ObjectSet() entsprechend geändert und angepaßt werden, ohne jedesmal das Objekt zu löschen und neu zu erzeugen.
zu 3. das ! an dieser Stelle steht für das logische NOT, d.h. die Funktion ObjectCreate() gibt bei erfolgreicher Generierung des Objektes ein true zurück. Wäre das Objekt nicht erzeugt worden, dann ein false. Not false wäre zusammen ein logisches true und damit springt das Programm in den Fehlerteil. Es muß da kein ! stehen, nur dann würde der EA in den Fehlerteil springen, wenn das Objekt erzeugt worden wäre, was nicht Sinn der Übung ist. Oder der Fehlerteil würde dann weggelassen. Dann wäre aber auch keine if-Abfrage notwendig oder dann als if ... else- Abfrage.

Viel Spaß beim Lernen!

traderdoc
__________________
Ich erfülle Euch gern Eure EA-, Indikator- und Script-Programmierungswünsche auf Honorarbasis.