Metatrader Forum | Forex Expert-Advisor | Broker & Forex Tools
Zurück   Metatrader Forum | Forex Expert-Advisor | Broker & Forex Tools > Metatrader 4 > Programmierung MQL4

Programmierung MQL4 Hier gehts rund ums Programmieren in MQL4.


Portalsuche


Werbung

Login
Benutzername:
Kennwort:


Statistik
Themen: 3824
Beiträge: 36908
Benutzer: 6.076
Aktive Benutzer: 496
Links: 80
Wir begrüßen unseren neuesten Benutzer: Spitzmaus
Mit 483 Benutzern waren die meisten Benutzer gleichzeitig online (21.04.16 um 17:12).
Neue Benutzer:
vor 7 Stunden
- Spitzmaus
vor 9 Stunden
- juleslesqu...
vor einem Tag
- hmf44
vor einem Tag
- Crossa
vor einem Tag
- snatshit

Onlineuser
'Wer ist online' anzeigen Benutzer: 0
Gäste: 38
Gesamt: 38
Team: 0
Team:  
Benutzer:  
Freunde anzeigen

Empfehlungen

Werbung

Thema geschlossen
 
Themen-Optionen Thema durchsuchen Ansicht
  #1 (permalink)  
Alt 22.12.15
Benutzerbild von asfranz
Mitglied
 
Registriert seit: Nov 2015
Ort: Rheda -Wiedenbrück
Beiträge: 84
asfranz befindet sich auf einem aufstrebenden Ast
Standard Ärger mit den Befehl Comment

Hallo Trader!
Bin absoluter Neuling in poggen;
Wie bekomme ich bei den Befehl "Comment" die Ausgabe nicht auf der linken Seite sondern in der Mitte oder rechts von Chart Fenster?
Es kann doch nicht sein das es nur über die Leerzeichen geht, oder?
Ein Beispiel füge ich bei.
Für Hilfe wäre ich sehr dank bar.
Schon mal in vor raus schöne Feiertage!

PHP-Code:
void OnTick()
  {
      
double spread MarketInfo(Symbol(),MODE_SPREAD)  /10;

      
Comment("Beim EUR-USD ist der Spread " ,DoubleToString(spread,1) +" Pips"
            
" \n                    Grüße alle Trader u. Pogger");
   
  } 


Gruß Franz
_____________________________________________
"Wenn der Wind der Veränderung weht, bauen die einen Mauern, die anderen Windmühlen." (chinesisches Sprichwort)
  #2 (permalink)  
Alt 22.12.15
Elite Mitglied
 
Registriert seit: Apr 2011
Beiträge: 1.875
traderdoc befindet sich auf einem aufstrebenden Ast
Standard

Mittels Comment() geht das tatsächlich nur über Leerzeichen.
Ansonsten nur über:

Code:
void CreateLabel(string labelname, color col, int xd, int yd, string font, string text, int fontsize) {
   ObjectCreate    (0, labelname, OBJ_LABEL,  0, 0, 0);
   ObjectSetInteger(0, labelname, OBJPROP_COLOR,  col);
   ObjectSetInteger(0, labelname, OBJPROP_BACK, false);
   ObjectSetInteger(0, labelname, OBJPROP_XDISTANCE, xd);
   ObjectSetInteger(0, labelname, OBJPROP_YDISTANCE, yd);
   ObjectSetString (0, labelname, OBJPROP_FONT, font);
   ObjectSetString (0, labelname, OBJPROP_TEXT, text);
   ObjectSetInteger(0, labelname, OBJPROP_FONTSIZE, fontsize);
}
Da kann man mit xd und yd die Koordinaten der gewünschten Bildschirmposition übergeben.

traderdoc
__________________
Ich erfülle Euch gern Eure EA-, Indikator- und Script-Programmierungswünsche auf Honorarbasis.
  #3 (permalink)  
Alt 22.12.15
Benutzerbild von asfranz
Mitglied
 
Registriert seit: Nov 2015
Ort: Rheda -Wiedenbrück
Beiträge: 84
asfranz befindet sich auf einem aufstrebenden Ast
Standard Bin Platt

Danke, Danke traderdoc!

Noch mal auch danke für deine Bücher Empfehlungen, sind echt Klasse zum lernen!
Mit den Code muss ich mich erst mal beschäftigen, wenn ich es fertig habe melde ich mich wieder;
Dir auch schon mal schöne Vorfeiertage oder Feiertage.....

Lieben Gruß Franz
_____________________________________
Erfolg ist die Kunst, unbemerkt Fehler zu machen.
  #4 (permalink)  
Alt 23.12.15
Benutzerbild von asfranz
Mitglied
 
Registriert seit: Nov 2015
Ort: Rheda -Wiedenbrück
Beiträge: 84
asfranz befindet sich auf einem aufstrebenden Ast
Standard Das war eine Geburt!

Guten Morgen
@traderdoc das war eine Nacht Aufgabe!
Wenn es deine Zeit erlaubt schau doch mal über den Code was du da von hält als Profi.
Andere Pogger dürfen natürlich auch.
PHP-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
//+------------------------------------------------------------------+
//| Expert initialization function                                   |
//+------------------------------------------------------------------+

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

int start() 
  { 

   
string obj_name "label_object"
   
long chart_id ChartID();
   
string text1 "Hallo traderdock das war ein guter Tipp!";
   
int x 350;
   
int y 10
   
int gross 20;

   
Comment ("Chart Nummer ",chart_id);

   
ObjectDelete(obj_name);

   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_nameOBJPROP_FONTSIZE,gross);
     
   return(
0); 
    
  }
   
 
//+------------------------------------------------------------------+ 
Habe noch ein paar Fragen.
1. Wo kommt die chart_id her von Broker ?
2. if(!ObjectCreate(chart_id,obj_name,OBJ_LABEL,0,0,0 ))
Wo für stehen die drei Nullen am Ende.
3. Warum muss vor ObjectCreate ein ! stehen.
Zu hundert Prozent ist mir das ganze noch nicht klar.
Oder kann man das ganze auch anders lösen?
Den Code darf jeder verwenden ,

Lieben Gruß Franz
_____________________________________
Wo viel verloren wird, ist manches zu gewinnen.
Wolfgang Goethe
  #5 (permalink)  
Alt 23.12.15
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.
  #6 (permalink)  
Alt 23.12.15
Benutzerbild von asfranz
Mitglied
 
Registriert seit: Nov 2015
Ort: Rheda -Wiedenbrück
Beiträge: 84
asfranz befindet sich auf einem aufstrebenden Ast
Thumbs up Immer sauber poggen!

@traderdoc, Danke für deine schnelle Antwort und deine Korrektur.
Durch dein erklären und zeigen kann ich nur lernen, und da für bin ich hier in Forum.

Von den globalen variablen habe ich schon gehört. Aber das ist mir bis jetzt noch nicht ganz klar. Habe im Buch nach geschaut, ich bin Seite 105 (Schleifen) und globalen variablen kommt auf Seite 126. Also nicht mehr so lange hin.
Wie ich das bis jetzt verstehe werden sie nur in Funktionen verwendet, richtig?
- ObjectDelete(obj_name); braucht in diesem Falle nur in OnDeinit()
Da bin ich nicht drauf gekommen. Aber das macht Sinn.
Meine erste Grund Idee hatte ich auch extern deklariert, aber dann bekam ich den EA nicht ans Laufen, hatte zu viele Fehler drin.
Und in der fortgeschritten Nacht wollte ich es nicht mehr um schreiben. Na klar ist das auf jeden Fall besser.
Mit der F7 Taste kannte ich noch nicht. Jetzt brauche ich den EA nicht immer Entfernen und neu starten.

Ganz toller Tipp traderdoc !!!

zu 1.: OK, das ist mal so.
zu 2.: die erste 0 das hatte ich mir auch so gedacht.
- die zweite 0 und dritte 0 stehen für Default-Einstellungen, - das muss ich noch
lernen. Schon mal gut zu wissen das man Objekte nicht bei jeden Tick neu
erzeugen muss.
zu 3.: Ja das war mein Problem, das es immer in den Fehler Teil sprang.
Bei einen ! tat es das nicht und das war für mich erst mal ok.
(habe ich mir anders wo ab geschaut.)
Aber jetzt mit deiner Erklärung weis ich auch wo für es steht.

(traderdoc du kannst super Erklären, könntest auch Beruflich einen guten Lehrer ab geben)

So jetzt erst mal genug. Wünsche dir traderdoc und allen anderen hier von mir ein frohes und gesegnetes Weihnachtsfest.
Last es euch richtig gut gehen!

Lieben Gruß Franz
_____________________________________
Lernen macht Spaß,
wenn man merkt das man seinen Ziel immer einen Schritt näher kommt!
(Von mir)
Thema geschlossen

Lesezeichen

Stichworte
befehl, befehl comment, comment, mql4, programmierung, programmierung metatrader


Themen-Optionen Thema durchsuchen
Thema durchsuchen:

Erweiterte Suche
Ansicht

Forumregeln
Es ist Ihnen nicht erlaubt, neue Themen zu verfassen.
Es ist Ihnen nicht erlaubt, auf Beiträge zu antworten.
Es ist Ihnen nicht erlaubt, Anhänge hochzuladen.
Es ist Ihnen nicht erlaubt, Ihre Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are aus
Pingbacks are aus
Refbacks are aus




Alle Zeitangaben in WEZ +1. Es ist jetzt 03:53 Uhr.



Der Wavesnode - Spam Firewall
-----------------------------------------------------------------------------------------------------------------------------
Powered by vBulletin® Version 3.8.5 (Deutsch)
Copyright ©2000 - 2017, Jelsoft Enterprises Ltd.
Powered by vBCMS® 2.7.0 ©2002 - 2017 vbdesigns.de
SEO by vBSEO 3.6.1
Copyright ©2009 - 2017 by Expert-Advisor.com - Das Metatrader Forum
MetaTrader bzw. MetaTrader 4 und MetaTrader 5 sind eingetragene Marken der MetaQuotes Software Corp.
-----------------------------------------------------------------------------------------------------------------------------