Metatrader Forum | Forex Expert-Advisor | Broker & Forex Tools
Zurück   Metatrader Forum | Forex Expert-Advisor | Broker & Forex Tools > Metatrader 5 > Programmierung MQL5 > Codeschnipsel

Codeschnipsel Codeschnipsel für MQL5.


Portalsuche


Werbung

Login
Benutzername:
Kennwort:


Statistik
Themen: 3620
Beiträge: 35707
Benutzer: 5.743
Aktive Benutzer: 628
Links: 80
Wir begrüßen unseren neuesten Benutzer: EATradingUser
Mit 483 Benutzern waren die meisten Benutzer gleichzeitig online (21.04.16 um 17:12).
Neue Benutzer:
vor 3 Stunden
- EATradingU...
vor 13 Stunden
- silent.chu...
vor einem Tag
- o1ne
vor 2 Tagen
- WinScalper
vor 2 Tagen
- aptapt

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

Empfehlungen

Werbung

Thema geschlossen
 
Themen-Optionen Thema durchsuchen Ansicht
  #1 (permalink)  
Alt 30.12.16
Benutzerbild von Kronenchakra
Mitglied
 
Registriert seit: Feb 2016
Ort: 2100 Österreich
Beiträge: 247
Kronenchakra befindet sich auf einem aufstrebenden Ast
Standard MyAlert, bequeme und einfache Fehlerbehandlung

Fehler abzufangen ist wichtig, Informationen über den Fehler auszugeben hilfreich.
Das wird aber oft als mühsam empfunden und deshalb oft weggelassen.
Mir geht es jedenfalls so.
Weiters sind mehrere Programmzeilen notwendig, der Code wird auch nicht kompakter dadurch, der Fehler sollte ja auch noch zurückgesetzt werden.
Also habe ich MyAlert.mqh implementiert.
Der nächste Codeschnipsel wird diese Funktion verwenden, gleich als Anwendungsbeispiel.
Ist nicht getestet, sollte aber auch unter MQL4 laufen.

Code:
//+------------------------------------------------------------------+
//|                                                      MyAlert.mqh |
//|                                Copyright © 2016 Ing. Otto Pauser |
//+------------------------------------------------------------------+
//| Bequeme und sichere Fehlerbehandlung. 3 überladene Funktionen    |
//| 1. MyAlert(max 6 Parameter Typ String)                           |
//| 2. MyAlert(int AnyRetval, max 6 Parameter Typ String)            |
//| 3. MyAlert(ENUM_INIT_RETCODE Retval, max 6 Parameter Typ String) |
//|                                                                  |
//| Das Macro StdErrMsg kann nur von der aufrufenden Funktion        |
//| verwendet werden, da ja hier sinnlos und vom Compiler abgelehnt  |
//+------------------------------------------------------------------+

#include <ErrorDescription.mqh>        // falls nicht vorhanden, hier ist der downloadlink:  https://www.mql5.com/en/code/79
                                       // ist nicht ganz aktuell, aber der Service-Desk ist informiert und wird das demnächst aktualisieren
static bool AlertPrintOnly = false;    // Steuerung des Verhaltens bei Fehler. Nur Print, oder Print + Alert

#define StdErrMsg ", Function: "+__FUNCTION__+"(), Line:"+(string)__LINE__    // nur in der aufrufenden Funktion verwendbar
                                                                              // hier wird der ganze Text zusammengebastelt
string StringMake(string str1="", string str2="", string str3="", string str4="", string str5="", string str6="")
{
   string       ErrMsg = str1;
   if(str2=="") return(ErrMsg); else ErrMsg = ErrMsg+" "+str2;
   if(str3=="") return(ErrMsg); ErrMsg = ErrMsg+" "+str3;
   if(str4=="") return(ErrMsg); ErrMsg = ErrMsg+" "+str4;
   if(str5=="") return(ErrMsg); ErrMsg = ErrMsg+" "+str5;
   if(str6=="") return(ErrMsg); ErrMsg = ErrMsg+" "+str6;
   return(ErrMsg);
}
                           // in OnInit() gut plaatziert oder auch allgemeine Verwendung
int MyAlert(string str1="", string str2="", string str3="", string str4="", string str5="", string str6="")
{
   string ErrMsg="*ERROR* "+IntegerToString(GetLastError())+" - "+ErrorDescription(GetLastError())+" ";
   ErrMsg = ErrMsg + StringMake(str1, str2, str3, str4, str5, str6);
   
   Print(ErrMsg);          // print the errormessage
   
   if(AlertPrintOnly)
      PlaySound("Alert");
   else   
      Alert(ErrMsg);       // do the alert if requested
      
   ResetLastError();       // reset lasterror
   return(INIT_FAILED);
}
                           // ist diversn Einsatz vorgesehen der Rückgabe benütigt
int MyAlert(int aRetVal, string str1="", string str2="", string str3="", string str4="", string str5="", string str6="")
{
   MyAlert(str1, str2, str3, str4, str5, str6);
   return(aRetVal);
}
                           // ist für die OnInit() vorgesehen
int MyAlert(ENUM_INIT_RETCODE aRetVal, string str1="", string str2="", string str3="", string str4="", string str5="", string str6="")
{
   MyAlert(str1, str2, str3, str4, str5, str6);
   return(aRetVal);
}
Viel Erfolg damit.

PS: Falls jemand Verbesserungmöglichkeiten sieht, nur her damit.
PPS: Wollte noch die Datei im nachhinein anhängen, geht aber nicht bei Änderung. Ich versuche es nochmals nach dem nächsten Post der schon draussen ist
__________________
Das Gras wächst nicht schneller wenn man daran zieht

Geändert von Kronenchakra (30.12.16 um 22:00 Uhr) Grund: Anhang hinzugefügt
  #2 (permalink)  
Alt 30.12.16
Benutzerbild von Kronenchakra
Mitglied
 
Registriert seit: Feb 2016
Ort: 2100 Österreich
Beiträge: 247
Kronenchakra befindet sich auf einem aufstrebenden Ast
Standard Ein PowerTool zum gleichschalten aller offenen Charts

Das ist gleich ein Beispiel für die Verwendun von MyAlert.mqh

Die Einstellungen eines Charts auf alle anderen offenen Charts anwenden.
Verwendet die Funktionen ChartSaveTemplate() und ChartApplyTemplate().

Ist nicht wirklich auf meinem Mist gewachsen, aber ist wesentlich verbessert worden.
Und mit ErrorCheck!

Code:
//+------------------------------------------------------------------+
//|                                                ApplyTemplate.mq5 |
//|                                Copyright © 2017 Ing. Otto Pauser |
//|                                        https://www.opa-trader.at |
//+------------------------------------------------------------------+
#property copyright "Copyright © 2017 Ing. Otto Pauser"
#property link      "https://www.opa-trader.at"
#property version   "1.00"

#include <MyAlert.mqh>

string TmplName = "LastApplied";       // unter diesem Namen wird die aktuelle Einstellung gespeichert
                                       // wird immer kommentarlos überschrieben
void OnStart()
{
   ENUM_TIMEFRAMES initPeriod  = _Period;             // Werte des aktuellen Charts merken
   long            initScale   = ChartGetInteger(ChartID(),CHART_SCALE);
   long            initChartID = ChartID();
   long            currChartID = ChartFirst();        // Schleifenvariable über alle Charts

   if(!ChartSaveTemplate(initChartID,TmplName))       // hier wird die aktuelle Einstellung in Datei geschrieben
      MyAlert(StdErrMsg);
   
   while(currChartID>=0)                              // hier laden wir das Template
      {
         if(currChartID!=initChartID)
            {
               if(!ChartApplyTemplate(currChartID, TmplName))
                  MyAlert();  
            }
         currChartID=ChartNext(currChartID);
     }

   currChartID = ChartFirst();                        // reset auf ersten Chart
   while(currChartID>=0)                              // hier werden Periode und Scale eingestellt
      {
         if(currChartID!=initChartID)
            {
               if(ChartPeriod(currChartID)!=initPeriod)
                  ChartSetSymbolPeriod(currChartID,ChartSymbol(currChartID),initPeriod);  

               if(ChartGetInteger(currChartID,CHART_SCALE)!=initScale)
                  ChartSetInteger(currChartID,CHART_SCALE,  initScale);
            }
         currChartID=ChartNext(currChartID);
     }

   PlaySound("ok");                                   // machma a bisserl Lärm
}
Das Tool kommt ins Script-Verzeichnis und kann sehr viel Zeit sparen!
Angehängte Dateien
Dateityp: mq5 ApplyTemplate.mq5 (4,3 KB, 0x aufgerufen)
__________________
Das Gras wächst nicht schneller wenn man daran zieht
  #3 (permalink)  
Alt 30.12.16
Benutzerbild von Kronenchakra
Mitglied
 
Registriert seit: Feb 2016
Ort: 2100 Österreich
Beiträge: 247
Kronenchakra befindet sich auf einem aufstrebenden Ast
Unhappy Datei MyAlert.mqh zum Download

Datei MyAlert.mqh zum Download, neuer Versuch.
Geht leider wieder nicht zum hochladen, müsst halt selbst eine MyAlert.mqh anlegen und den Inhalt hineinkopieren.
__________________
Das Gras wächst nicht schneller wenn man daran zieht
Thema geschlossen

Lesezeichen

Stichworte
alert, codeschnipsel, codeschnipsel mql5, fehlerbehandlung, 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 +2. Es ist jetzt 03:41 Uhr.



-----------------------------------------------------------------------------------------------------------------------------
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.
-----------------------------------------------------------------------------------------------------------------------------