globale Initialisierung fehlgeschlagen!!!!!!! - Seite 3

 

Danke für die Hinweise!

Seit 646 gehen seltsame Dinge vor sich, und niemand scheint in der Lage zu sein, zu helfen!

1. Die Beschriftungen geraten aus der Reihe, als ob die XDISTANCE und YDISTANCE nicht beachtet würden.

Sie werden erst nach dem Hin- und Herschalten von Tf's wieder in eine Linie gebracht.

Nach einem Wechsel des Diagrammfensters oder einer Änderung der Parametereingabe geraten sie aus der Reihe.

2. Einige alte Indizes bringen den MT4 zum Absturz.

3. Nach dem Start von MT4 loggt er sich zuerst in das Konto ein, nach einer Weile loggt er sich aus, und ich muss mich erneut einloggen.

4. Skripte und EA's mit OrderClose() funktionieren nicht, sie schließen die Aufträge nicht.

OrderModify() funktioniert gut.

Was können wir tun, um MetaQuotes dazu zu bringen, etwas dagegen zu tun?

Schließlich ist MT4 eine Handelsplattform, also ein ernstzunehmendes Werkzeug, nicht irgendein Spielzeug!!!

Oh, und noch eine Sache:

Sagen wir, ich erstelle ein Rechteck mit einem Indi, basierend auf einigen Berechnungen.

Die Berechnungen sind innerhalb der start().

Trotzdem sehe ich mein Rechteck nach dem Start von MT4 nicht, nicht einmal auf Ticks.

Aber nach der Neuinitialisierung des Indi oder dem Wechsel der Tf's ist es da.

Nun, diese Art von Dingen ist nie zuvor passiert!

 
Dadas:

Danke für die Hinweise!

Seit 646 gehen seltsame Dinge vor sich, und niemand scheint in der Lage zu sein, zu helfen!

1. Die Beschriftungen geraten aus der Reihe, als ob die XDISTANCE und YDISTANCE nicht beachtet würden.

Sie werden erst nach dem Hin- und Herschalten von Tf's wieder in eine Linie gebracht.

Nach einem Wechsel des Diagrammfensters oder einer Änderung der Parametereingabe geraten sie aus der Reihe.

das heißt, Sie können es in Ihrem Code beheben

2. Einige alte Indizes lassen den MT4 abstürzen.

Sie müssen den Code an die neue Welt anpassen (B600 >), z.B. ist "zero divide" ein kritischer Fehler und lässt den Indikator verschwinden (das war er vor B600 nicht)

3. Nach dem Start von MT4 loggt er sich zunächst in das Konto ein, nach einer Weile loggt er sich aus und ich muss mich erneut einloggen.

Versuchen Sie, alle offenen Charts zu schließen, lassen Sie das Terminal leer (ohne offene Charts), starten Sie das Terminal neu, wenn das Problem weiterhin besteht, melden Sie sich beim Service Desk

4. Skripte und EA's mit OrderClose() funktionieren nicht, sie schließen die Aufträge nicht.

Ich bin sicher, dass das Problem in Ihrem Code liegt. Zeigen Sie uns den entsprechenden Code und jemand wird versuchen, Ihnen zu helfen.

OrderModify() funktioniert gut.

Was können wir tun, um MetaQuotes dazu zu bringen, etwas dagegen zu tun?

Schließlich ist MT4 eine Handelsplattform, also ein ernstzunehmendes Werkzeug, kein Spielzeug!!!

Ich stimme zu, aber ich denke (fast sicher), dass der kritische Fehler in Ihrem Code liegt, Sie verwenden einen veralteten Code, d.h. er wurde mit Fehlern geschrieben, die den Indikator/EA nicht daran hinderten zu funktionieren, aber jetzt sind sie kritische Fehler und müssen behoben werden

 

Dadas,

Ich bin ein Entwickler-Kollege und kann nicht alle Ihre Fragen beantworten. Ich habe selbst mit einigen PITA-Problemen in Anwendungen zu tun, die ich kommerziell nutzen möchte. Eine Sache, die ich auf jeden Fall vorschlage, ist das Ersetzen zumindest Ihrer init und deinit Funktionen mit neuen OnInit() und OnDeInit() Funktionen. Vielleicht möchten Sie auch start durch OnStart() ersetzen. Laut der Dokumentation soll die Implementierung abwärtskompatibel sein, aber meine Erfahrung spricht für das Gegenteil. Ich hatte bei einem meiner Indies eine Situation, in der deinit() nicht aufgerufen wurde. Mein deinit() löschte Objekte und alles, was eine Neuinitialisierung verursachte, schlug fehl, weil die Objekte noch existierten. Ich verwende immer noch start() anstelle von OnStart(), aber ich bin mir nicht sicher, ob das klug ist. Ich habe den Verdacht, dass ich damit nur Ärger verursache. Lassen Sie mich wissen, was passiert, wenn Sie meine Vorschläge ausprobieren wollen. Wir Devs müssen zusammenhalten :-)

 
Dadas:

Oh, und noch eine Sache:

Sagen wir, ich erstelle ein Rechteck mit einem indi, basierend auf einigen Berechnungen.

Die Berechnungen sind innerhalb der start().

Dennoch sehe ich nicht mein Rechteck nach dem Start von MT4, nicht einmal auf Ticks.

Aber nach einer Neuinitialisierung des Indi oder einem Wechsel der Tf's ist es da.

Nun, diese Art von Dingen ist nie zuvor passiert!


wie ich oben geschrieben habe, liegt eine neue Welt vor uns
verwenden Sie nicht "OnTick" (EA) oder "OnCalculate" (Indikator)
 
qjol:

wie ich oben geschrieben habe, liegt eine neue Welt vor uns
fangen Sie nicht an, "OnTick" zu benutzen


Sehen Sie, MetaQuotes bringt eine Plattform heraus, die, wie ProfessorMetal sagt, rückwärtskompatibel sein soll!

Ich glaube nicht, dass irgendjemand in der Lage ist, all die Tausende von bereits existierenden Indikatoren, Skripten und EAs neu zu schreiben.

Was Ihre Behauptung angeht, dass meine Codes falsch sind, so stimme ich nicht zu, denn einige der Labels sind einfachste Codes.

Sie erstellen ein Label-Objekt, berechnen etwas und setzen dann das Objekt entsprechend.

Daran ist keine besondere Philosophie geknüpft:

  ObjectSet    ("Lot_Size_Label",OBJPROP_CORNER,Corner);

  ObjectSet    ("Lot_Size_Label",OBJPROP_XDISTANCE,XDistance);
  ObjectSet    ("Lot_Size_Label",OBJPROP_YDISTANCE,YDistance);
  ObjectSetText("Lot_Size_Label",comment,Font_Size,Font_Type,Font_Color);
  ObjectSet    ("Lot_Size_Label",OBJPROP_SELECTABLE,false); 

Was die Skripte zum Schließen von Aufträgen und die EAs angeht, so spreche ich von denen, die bei früheren Builds (500) gut funktioniert haben.

Es geht also nicht darum, ob meine Codes korrekt sind oder nicht.

Es ist das Problem von MetaQuotes, das die Dinge vermasselt!

Ich werde die Hinweise von ProfessorMetal ausprobieren, aber was ist mit den Nutzern, die keine Ahnung vom Programmieren haben?

Und, offen gesagt, sie sollen nicht einmal etwas von Programmierung verstehen!

Sie sollen die Handelsplattform benutzen!!!

 
ProfessorMetal:

Dadas,

Ich bin ein Entwickler-Kollege und kann nicht alle Ihre Fragen beantworten. Ich habe selbst mit einigen PITA-Problemen in Anwendungen zu tun, die ich kommerziell nutzen möchte. Eine Sache, die ich auf jeden Fall vorschlage, ist das Ersetzen zumindest Ihrer init und deinit Funktionen mit neuen OnInit() und OnDeInit() Funktionen. Vielleicht möchten Sie auch start durch OnStart() ersetzen. Laut der Dokumentation soll die Implementierung abwärtskompatibel sein, aber meine Erfahrung spricht für das Gegenteil. Ich hatte bei einem meiner Indies eine Situation, in der deinit() nicht aufgerufen wurde. Mein deinit() löschte Objekte und alles, was eine Neuinitialisierung verursachte, schlug fehl, weil die Objekte noch existierten. Ich verwende immer noch start() anstelle von OnStart(), aber ich bin mir nicht sicher, ob das klug ist. Ich habe den Verdacht, dass ich mir damit nur Ärger einhandle. Lassen Sie mich wissen, was passiert, wenn Sie meine Vorschläge ausprobieren wollen. Wir Devs müssen zusammenhalten :-)


Danke, ich hatte das gleiche Problem mit den Objekten, die beim Deinit nicht gelöscht wurden.

Ich war dabei, ein paar Indi zu entwickeln, und bekam diese seltsamen Ergebnisse, dann sah ich in der Objektliste, dass sie immer noch da waren.

Ich habe das umgangen, wahrscheinlich auf die einfachste Art und Weise, durch ObjectDelete() in der start().

Ja, wenn man init() in OnInit() und deinit() in OnDeinit() ändert, sind die Bezeichnungen wieder richtig! Danke dafür!

Dann, nach einer Weile, war es nicht mehr so!!! Sie führen immer noch den gleichen Tanz auf.

 

Wenn der Code der einfachste ist, hängt die Implementierung wirklich von den Codes ab, die implementiert werden. Sie müssen an entscheidenden Stellen eine Fehlerüberprüfung einbauen, damit die Indi/Ea im Fehlerfall richtig damit umgehen kann. Beim letzten Mal hatte ich auch Probleme, aber sobald ich die Fehlerbehandlungsfunktionen eingebaut hatte, lief alles reibungslos, so dass man die Probleme vom letzten Mal vergessen konnte.


still, what about the users who don't know a thing about coding???

And, frankly speaking, they aren't even supposed to know anything coding!

They are supposed to be using the trading platform!!!

Die Plattform ist ein Metatrader, und kommt mit allen grundlegenden Bedürfnisse, niemand zwingt Sie zu codieren.

 

Wissen Sie, was bei der Ausrichtung der Beschriftungen geholfen hat?

Meine X,Y-Koordinaten stammen von Externen.

extern int XDISTANCE =9;
extern int YDISTANCE =9;

Und dann:

int X,Y;

int OnInit()
  {
 X = XDISTANCE;
 Y = YDISTANCE;
 ObjectCreate("INSTR",OBJ_LABEL,0,0,0); 
 
    return(0);
  }

int start() {
        ObjectSet("INSTR",OBJPROP_CORNER,Corner);
        ObjectSetText("INSTR",Symbol_Period+Date_Time,FontSize, "Berlin Sans FB", Color);
        ObjectSet("INSTR", OBJPROP_XDISTANCE, X);
        ObjectSet("INSTR", OBJPROP_YDISTANCE, Y); 
        ObjectSet("INSTR", OBJPROP_SELECTABLE, false);   
   return(0);
  }

Auf diese Weise wird es richtig.

Oder besser gesagt, macht es besser, nicht genau richtig.

 
deysmacro:

Wenn der Code ist die einfachste, Umsetzung es wirklich hängt von den Codes, die implementiert werden.


Die Plattform ist ein Metatrader, und kommt mit allen grundlegenden Bedürfnisse, niemand zwingt Sie zu codieren.


Wie soll Ihr Kommentar jemandem helfen?
 
int X,Y;

int OnInit()
  {
 X = XDISTANCE;
 Y = YDISTANCE;
 ObjectCreate("INSTR",OBJ_LABEL,0,0,0); 
 
    return(0);
  }

int start() {
        ObjectSet("INSTR",OBJPROP_CORNER,Corner);
        ObjectSetText("INSTR",Symbol_Period+Date_Time,FontSize, "Berlin Sans FB", Color);
        ObjectSet("INSTR", OBJPROP_XDISTANCE, X);
        ObjectSet("INSTR", OBJPROP_YDISTANCE, Y); 
        ObjectSet("INSTR", OBJPROP_SELECTABLE, false);   
   return(0);
  }

Sie stellen keine Objektsuchfunktion ein, um zu prüfen, ob das Objekt bereits existiert oder nicht. Von dort aus erstellen Sie das Objekt dann entsprechend.


How's your comment supposed to help anybody??? 

Ich helfe Ihnen jetzt gerade.