Metatrader Forum | Forex Expert-Advisor | Broker & Forex Tools

Metatrader Forum | Forex Expert-Advisor | Broker & Forex Tools (http://www.expert-advisor.com/forum/index.php)
-   Codeschnipsel (http://www.expert-advisor.com/forum/forumdisplay.php?f=292)
-   -   Es muß einmal gesagt werden: Die besch...eidenen Kommentare in mql sind zum erbrechen (http://www.expert-advisor.com/forum/showthread.php?t=5352)

Kronenchakra 23.12.16 02:25

Es muß einmal gesagt werden: Die besch...eidenen Kommentare in mql sind zum erbrechen
 
Hallo Traderfreunde und Progger.

Ich muss mir meinen Frust über Metaquotes einmal von der Seele schreiben.

Ich hasse die Form der Kommentare wie sie von Metaquotes vorgegeben werden.
Diese Form ist antiquiert und ist für Bildschirme die nur 80 Zeichen pro Zeile darstellen können geeignet. (EGA / VGA) kennt jemand das noch? Die Russen schon! :D
Auf modernen Bildschirmen lassen sich locker 200 Zeichen darstellen. Da kann man doch den Kommentar rechts rausrücken um den Programmfluss beim Lesen nicht zu stören.

Frage: Ist das hilfreich?
Code:

//+------------------------------------------------------------------+
//|                                              iStochKomposter.mq5 |
//|                                      Copyright © 2006, komposter |
//|                                      mailto:komposterius@mail.ru |
//+------------------------------------------------------------------+
//--- àâòîðñòâî èíäèêàòîðà
#property copyright "Copyright © 2006, komposter"
//--- ññûëêà íà ñàéò àâòîðà
//--- íîìåð âåðñèè èíäèêàòîðà
#property version  "1.00"
//--- îòðèñîâêà èíäèêàòîðà â ãëàâíîì îêíå
#property indicator_chart_window
//--- äëÿ ðàñ÷åòà è îòðèñîâêè èíäèêàòîðà èñïîëüçîâàíî äâà áóôåðà
#property indicator_buffers 2
//--- èñïîëüçîâàíî âñåãî äâà ãðàôè÷åñêèõ ïîñòðîåíèÿ
#property indicator_plots  2
//+----------------------------------------------+
//|  Ïàðàìåòðû îòðèñîâêè ìåäâåæüåãî èíäèêàòîðà  |
//+----------------------------------------------+
//--- îòðèñîâêà èíäèêàòîðà 1 â âèäå ñèìâîëà
#property indicator_type1  DRAW_ARROW

Aber Metaquotes geht nicht mit der Zeit und stört den Programmfluß durch diese, größtenteils sinnlosen, Kommentare.

Wenn man sich vom russischen Forum was runterholt (diese Formulierung wurde bewusst gewählt) ist der Kommentar sowieso sinnlos.
Allerdings hilft Google Translator ein wenig.

Der Metaeditor kann nicht einmal Kyrillische Schriftzeichen darstellen. Der Workaround geht über den NPP-

Dem Service-Desk irgendwelche Vorschläge zu machen ist sowieso sinnlos, da sitzen irgendwelche dummies die nur antworten: 'Thanks you for suggestion, but we don't have this feature in our list'

Ich komme mir mit diesem Metaeditor oft in die EDV-Steinzeit zurückversetzt vor.
Kein CodeFolding, kein Block ausschneiden und in Datei speichern, und und und. Der NPP(Notepad++) kann da mehr.

Also habe ich beschlossen eine Utility zu erschaffen.
Wird 'KillComment.exe' benamst werden und in Delphi geschrieben sein.

Anfang Februar werde ich dieses Tool veröffentlichen.

Ich bin derzeit auf diese Sturköpfe und Präpotenzler extrem angefressen :mad:

Noch ein Hinweis: ArrayIsSeries() ist fehlerhaft. verwendet ArrayGetAsSeries(), das liefert korrekte Werte.

Raul0 23.12.16 06:44

Ich weiss nicht was Du von "diesem Bereich" der Programmierung erwartest Herr Kronenchakra.

Ein Turbo Pascal, wirst Du hier nicht finden, ist nur ein Börsenprogramm. :eek:

Kronenchakra 23.12.16 10:41

Ich will blos einen professionellen Editor und einen kooperativen Sevice-Desk.
Der Metaeditor ist antik, und der Service-Desk stur, und teilweise inkompetent.
Aber egal, ich muss mich halt den Gegebenheiten anpassen :D
Ausserdem bin ich nicht der Herr Kronenchakra.

Kronenchakra 23.12.16 14:27

Service-Desk war wieder mal kooperativ
Zitat:

Hello.

Thank you for suggestion. We have carefully considered it. Unfortunately, we are forced to reject, please use existing posibilities Ctrl + C.

It doesn't make a sense to add this feature.
und das haben sie mir schon des öfteren geschrieben:
Zitat:

Thanks you for suggestion, but we don't have this feature in our list
Ich geb's auf. Ist blos Zeitverschwendung. :(

Kronenchakra 17.03.17 03:09

Tool KillComment
 
Wer auch keine sinnlosen Kommentare wünscht, dem sei dieses Tool geschenkt.
Die Datei deren Kommentar entfernt werden soll muss in das Verzeichnis MQLx\Files\KillComment gestellt werden (Sandbox Restriktionen von MQ).
Sollte auch für den MT4 funktionieren.
Code:

//+------------------------------------------------------------------+
//|                                                  KillComment.mq5 |
//|                                Copyright © 2017 Ing. Otto Pauser |
//|                      https://www.mql5.com/de/users/kronenchakra |
//+------------------------------------------------------------------+
#property copyright  "Copyright © 2017 Ing. Otto Pauser"
#property link        "https://www.mql5.com/de/users/kronenchakra"
#property version    "1.00"
#property description "Dieses Script entfernt alle Kommentare bis auf den Kopfkommentar am Anfang der Datei"
#property script_show_inputs

input string  inp_fPath  = "KillComment";      // Filepath
input string  inp_fName  = "FileName.mq5";    // Filename (IN/OUT)
input int      inp_skip  = 7;                  // Skip number of lines (header)
input bool    inp_right  = true;              // Comment right // this will be deleted
input bool    inp_left  = true;              // //--- Comment at beginning will be deleted
input bool    inp_spacer = false;              // //--- Delete spacer only

string fn = inp_fPath+"\\"+inp_fName;          // filename
int    fh;                                      // filehandle
string lines[];                                // lines array

int OnStart()                                  // normally it's void, but to use MyAlert() it's int like OnInit()
{
  string line;                                // single line
  int    count = 0,                            // lines counter
          asize = 500,                          // arraysize of lines array
          pos;                                  // stringposition of "//"
 
  ArrayResize(lines,asize);                    // set initial size of array, no initialization necessary
 
  fh=FileOpen(fn,FILE_READ|FILE_SHARE_READ|FILE_TXT|FILE_ANSI);
  if(fh==INVALID_HANDLE)                      // errorcheck
      return(MyAlert(-1,"*ERROR* "+fn+" not found"));

  while(!FileIsEnding(fh))                    // scan the file
      {
        line=FileReadString(fh);              // read the line
        if(count>inp_skip-1)                  // number of lines skipped
            {
              pos=StringFind(line,"//");      // search the comments
              if(pos>-1)                      // found at pos
                  if(pos==0)                    // comment at the beginning of line
                    {
                        if(inp_left)            // option 'delete left' selected
                          line="";
                    }
                  else                          // comment beside code
                    {
                        if(inp_right)          // option 'delets right' selected
                          line=StringSubstr(line,0,pos);
                    }
            }                                  // StringTrimRight() macht den string unbrauchbar
       
        lines[count]=line;                    // store the line in array
        count++;                              // increment counter
        if(count>=ArraySize(lines))            // resize the array if necessary
            ArrayResize(lines,ArraySize(lines)+asize);
      }

  FileClose(fh);                              // close the file
 
  if(!FileDelete(fn))                          // delete the file
      return(MyAlert(-1,"*ERROR deleting file "+fn));
                                                // create the file with same name
  fh=FileOpen(fn,FILE_WRITE|FILE_SHARE_WRITE|FILE_TXT|FILE_ANSI);
  if(fh==INVALID_HANDLE)                      // errorcheck
      return(MyAlert(-1,"*ERROR* "+fn+" not found"));

  FileWriteString(fh,lines[0]+"\n");          // write the first line
     
  for(int i=1; i<count; i++)                  // write the lines back to file (skip double blank lines)
      if((lines[i]!="") || (lines[i-1]!=""))
        FileWriteString(fh,lines[i]+"\n");

  FileClose(fh);                              // close the file
 
  PlaySound("ok");                            // make some noise
  return(INIT_SUCCEEDED);                      // return value does not matter in this case
}

//+------------------------------------------------------------------+
//| This Alert() function is very useful also for Indicators and EAs |
//| You can use it inside return() to avoid brackets and more code  |
//+------------------------------------------------------------------+

bool AlertPrintOnly = false;                    // controls the behavior of MyAlert()

int MyAlert(ENUM_INIT_RETCODE aRetVal, string ErrMsg="")
{
  if(AlertPrintOnly)
      {
        Print(ErrMsg);
        PlaySound("Alert");
      }
  else 
      Alert(ErrMsg);                            // Alert() itself plays the sound)
     
  ResetLastError();
  return(aRetVal);
}

/*
for ErrorCheck usually you need at least 6 lines of code

  if(fh==INVALID_HANDLE)
      {
        Alert("*ERROR* "+fn+" not found");
        ResetLastError();                      // possibly unnecessary because we exit the program now
        return(INIT_FAILED);
      }

with this function you need only 2 lines of code

  if(fh==INVALID_HANDLE)                      // errorcheck
      return(MyAlert(-1,"*ERROR* "+fn+" not found"));

or particularly compact only one line, and the code remains easily readable

  if(fh==INVALID_HANDLE) return(MyAlert(-1,"*ERROR* "+fn+" not found"));
*/

Es ist auch eine nette ErrorRoutine enthalten.
Dieses Script ist auch ein Beispiel zum Textdateien lesen und schreiben.
Auch das handling des Arrays 'lines[]' ist ein Beispiel um ein dynamisches Array effektiv, und nur bei Bedarf, zu vergrößern.

Hinweis: Die Ergebnisdatei überschreibt die Eingabedatei.

Grüße Otto

Hosch 17.03.17 13:13

Sali,

ich weiss nicht, warum du dir das mit dieser ganzen Abzocker-Klitsche Metaquotes antust, und nicht auf professionelle System umsteigst wie NinjaTrader, JForex. Bei NinjaTrader hast du Visual Studio als Umgebung, was ja eine richtige Entwicklungsumgebung darstellt, und nicht diesem Notepad Ersatz von Metaquotes. Sogar Dukascopy mit JForex ist mit Eclipse deutlich besser.
Warum kann man immer noch nicht im Jahre 2017 im Rahmen eines Backtests bei MQ4 oder MQ5 debuggen? Das ist so etwas zeitintensiv, dass mich das zum Umstieg erwägt.
Wobei auch von den Abzocker-Brokerbuden im MT4 nicht sprechen will.

Carpe Diem,
Hosch

Kronenchakra 17.03.17 13:31

Zitat:

Zitat von Hosch (Beitrag 38101)
Sali,
Bei NinjaTrader hast du Visual Studio als Umgebung, was ja eine richtige Entwicklungsumgebung darstellt, und nicht diesen Notepad Ersatz von Metaquotes. Sogar Dukascopy mit JForex ist mit Eclipse deutlich besser.
Hosch

Danke für die Info, ich schau mir das an.
LG Otto

marquez 14.04.17 19:11

Das "Russen" Problem hatte ich bereits schon im Metaquotes Forum vor ewiger Zeit angesprochen.

So ganz genau weiß ich die Antwort nicht mehr, allerdings ging es darum dass man in Windows (!!) was umstellen sollte wegen der inkompatiblen Zeichen.

Hatte es mal ausprobiert, aber danach hatte ich sonst in Windows zu viele Probleme, daher wieder verworfen.

Allerdings mache ich mittlerweile bei diesen Dingern auch nur noch per Copy & Paste !

Hat sich ganz gut bewährt, außer Du hast ein großprojekt aus Rußland mit gefühlt 200 Dateien. Dann ist das sh*** !!

Andreas2016 21.04.17 15:32

Und leider sind das auch wenn man mit Russisch etwas über Übersetzer machen kann unentzifferbare Zeichen. Besonders bedauerlich, wenn ich einen russischen EA ausprobieren will habe und nur solche Zeichen sehe. Mit Kyrillisch wäre ja noch was anzufangen und die Sprache auf RU umzustellen bringt auch nichts ....


Alle Zeitangaben in WEZ +1. Es ist jetzt 01:46 Uhr.

Powered by vBulletin® Version 3.8.5 (Deutsch)
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
SEO by vBSEO 3.6.1
Powered by vBCMS® 2.7.0 ©2002 - 2024 vbdesigns.de
Copyright ©2009 - 2023 by Expert-Advisor.com - Das Metatrader Forum