Neues MetaTrader 4 Client Terminal Build 402 - Seite 6

 
dmmikl86:
Das liegt daran, dass der Pip-Wert für verschiedene Paare unterschiedlich ist...

Ich denke, der Pip-Wert ist im Anzeigemodus "Gewinn in Pips" überflüssig.

 
olyakish:

Ich denke, der Punktwert ist im Anzeigemodus "Gewinn in Pips" überflüssig.

Es ist ein weiterer ewiger MT-Fehler )
 

Störungen....

1) Wenn Sie unnötige Instrumente aus Market Watch entfernen und dann wieder hinzufügen, ergibt sich eine interessante Situation.

Klicken Sie mit der rechten Maustaste auf ein Instrument und wählen Sie "Chartfenster", um einen Chart zu öffnen.

Dadurch wird ein Diagramm eines anderen Instruments geöffnet als das, das Sie ausgewählt haben!!!

Damit dieser Fehler auftritt, müssen Sie ein anderes Werkzeug als das soeben hinzugefügte auswählen. (siehe Screenshots Bild1, Bild2, Bild3)

2) In meinem Screenshot können Sie sehen, dass das Instrument USDCHF im Fenster "Symbole" als ausgewählt markiert ist, obwohl es nicht in der "Marktbeobachtung" ist. (Bild 4)

Möglicherweise ist die erste Störung eine Folge der zweiten, weil die Nummerierung der Instrumente im Market Watch falsch ist.

Ich habe sehr schlechtes Internet, deshalb sind alle Screenshots im Archiv.

Hier ist der Linkhttp://www.sendspace.com/file/tbav73

 
dimonsky:

Störungen....

1) Wenn Sie unnötige Instrumente aus Market Watch entfernen und dann wieder hinzufügen, ergibt sich eine interessante Situation.

Klicken Sie mit der rechten Maustaste auf ein Instrument und wählen Sie "Chartfenster", um einen Chart zu öffnen.

Dadurch wird ein Diagramm eines anderen Werkzeugs geöffnet als das, das Sie ausgewählt haben!!!

Das ist mir auch schon bei der 401er Version aufgefallen.
 

Heute (oder eher gestern) am Morgen hatte ich eine seltsame Panne in MT4 - OrderSelect fand keine Order nach Ticketnummer in einem Expert Advisor.

Im EA werden zwei schwebende Orders platziert - BUY_STOP und SELL_STOP, auf gegenüberliegenden Seiten des aktuellen Kurses. Die Tickets dieser Bestellungen werden in t1 und t2 gespeichert. Der Code, bei dem der Fehler aufgetreten ist, wie unten gezeigt, macht Folgendes: Wenn einer dieser schwebenden Aufträge geöffnet wird, wird der zweite gelöscht und der nächste schwebende Auftrag mit der Nummer t3 wird stattdessen platziert. Wenn bei der ursprünglichen Vergabe von t1 und t2 ein Fehler aufgetreten ist, sollte das fehlerhafte Ticket nicht in der Auftragsliste erscheinen. Dies wird mit if (OrderSelect ...) überprüft und im Falle eines Fehlers schreiben wir eine Meldung in das Log und beenden die Serie mit restart().

Heute öffnete t1 um 6:30 Uhr. Die Order t2 wurde vom Expert Advisor sofort gelöscht (sie wurde aus dem Markt gelöscht, blieb aber in der Historie erhalten - "storniert", habe ich überprüft). Danach wurde t3 platziert. Diese Ereignisse sind alle in den Protokollen von MT und EA enthalten. Dann gibt die Prüfung "OrderSelect(t2, SELECT_BY_TICKET)" FALSE zurück und die Serie bricht mit dem Fehler "Unknown order t2" ab. Das ist seltsam, denn t2 wurde ohne Fehler gesetzt und gelöscht und blieb in der Historie. Der Verlaufsmodus in MT ist "Gesamter Verlauf". Wie konnte OrderSelect es nicht finden?

Der Computer ist eigenständig und wird nur für den Handel verwendet, für nichts anderes. Niemand außer mir fasst sie an. Die CPU-Last beträgt durchschnittlich 10 %. Arbeitsspeicher, Festplattenplatz usw. sind groß genug.
Die Version von MT4 ist 402. Seit einigen Monaten arbeitet der Expert Advisor in verschiedenen Varianten in Echtzeit auf einem Demokonto in einem MT parallel zu drei verschiedenen Paaren (auf drei Charts). Bis heute Morgen gab es keine Probleme mit diesem Teil des Codes. Danach ging es am Nachmittag und Abend für andere Paare auf demselben EA reibungslos weiter. Das heißt, der Fehler kann nicht beliebig reproduziert werden.

Frage: Wie konnte das passieren? Ist es ein Fehler in MT oder etwas, das ich im Code nicht berücksichtigt habe?

Dieser Code verwendet die Funktionen OrderDeleteX und OrderSendX - Wrapper für die Standardfunktionen OrderDelete und OrderSend, die einen Handelsthread daraufhin überprüfen, ob er nicht ausgelastet ist, und Ereignisse wie "Order löschen ..." und "Order senden ..." im Log des EAs registrieren.
Ich habe die Preisberechnungen entfernt, um den Code einfacher und übersichtlicher zu gestalten.

if (OrderSelect(t1, SELECT_BY_TICKET)) {
  if (OrderType() == OP_BUY) {
    Print("--------------------------------------------------");
    if (t2 > 0) OrderDeleteX(t2);
    // Расчёты цены, стоплосса и тейкпрофита
    // .....
    t3 = OrderSendX(Symbol(), OP_SELLSTOP, 0.02, Price1, slip, StopLoss, TakeProfit, "step 2", Magic, 0, ColorOrderSendSell);
  }   
} else {
  Print("ERROR: Unknown order t1 in step 1");
  restart(3);
}
 

if (OrderSelect(t2, SELECT_BY_TICKET)) {     
  if (OrderType() == OP_SELL) {
    Print("--------------------------------------------------");
    if (t1 > 0) OrderDeleteX(t1);
    // Расчёты цены, стоплосса и тейкпрофита
    // .....
    t3 = OrderSendX(Symbol(), OP_BUYSTOP, 0.02, Price1, slip, StopLoss, TakeProfit, "step 2", Magic, 0, ColorOrderSendBuy);
  }
} else {
  Print("ERROR: Unknown order t2 in step 1");
  restart(4);
}


Bestellnummern in Variablen:
t2 = 119732180
t3 = 119733656

Лог эксперта:
06:30:43 CheMurom v3.4.real EURUSD,H1: --------------------------------------------------
06:30:43 CheMurom v3.4.real EURUSD,H1: Deleting order #119732180; attempt number: 1
06:30:43 CheMurom v3.4.real EURUSD,H1: delete #119732180 sell stop 0.01 EURUSD at 1.46432 sl: 1.47032 tp: 1.43432 ok
06:30:43 CheMurom v3.4.real EURUSD,H1: Sending order cmd=SELL_STOP, lot=0.02, price=1.46032, slip=3, sl=1.46932, tp=1.44082; attempt number: 1
06:30:44 CheMurom v3.4.real EURUSD,H1: open #119733656 sell stop 0.02 EURUSD at 1.46032 sl: 1.46932 tp: 1.44082 ok
06:30:44 CheMurom v3.4.real EURUSD,H1: ERROR: Unknown t2 in step 1

Лог терминала:
06:30:43 '2871084': delete pending order #119732180 sell stop 0.01 EURUSD at 1.46432 sl: 1.47032 tp: 1.43432
06:30:44 '2871084': request was accepted by server
06:30:44 '2871084': request in process
06:30:44 '2871084': pending order #119732180 was deleted
06:30:44 '2871084': pending order sell stop 0.02 EURUSD at 1.46032 sl: 1.46932 tp: 1.44082
06:30:44 '2871084': request was accepted by server
06:30:45 '2871084': request in process
06:30:45 '2871084': order was opened : #119733656 sell stop 0.02 EURUSD at 1.46032 sl: 1.46932 tp: 1.44082
 

Ich kann keinen Auftrag finden. Aus dem DC-Bericht geht hervor, dass der Auftrag 67930924 offen war...

Dies sind geschlossene Geschäfte in der Kontohistorie ab dem 08.06.11. Wie wir sehen können, ist dieser Auftrag nicht hier.

Es muss sich also um einen offenen Handel handeln. Das Bild unten, offene Handelsgeschäfte.

Aber auch hier ist es nicht der Fall. Ich bin gespannt, welchen Bericht DC morgen vorlegen wird, aber ich möchte die Version der Softwareentwickler hören, wie es sein kann.

Und noch etwas, vielleicht ist es nicht wichtig, aber mein Datum ist nicht gespeichert, ich speichere es nicht und wähle den Zeitraum immer im Mai.


 
voinG:

Ich kann keinen Auftrag finden. Aus dem DC-Bericht geht hervor, dass der Auftrag 67930924 offen war...

Dies sind geschlossene Geschäfte in der Kontohistorie seit dem 08.06.11. Wie wir sehen können, ist dieser Auftrag nicht hier.

Es muss sich also um einen offenen Handel handeln. Das Bild unten, offene Handelsgeschäfte.

Aber auch hier ist es nicht der Fall. Ich frage mich, was Bericht wird morgen von DC gesendet werden, aber ich möchte die Version der Software-Entwickler zu hören, wie es sein kann.

Und noch etwas, vielleicht ist es nicht wichtig, aber mein Datum ist nicht gespeichert und ich habe keine Informationen darüber.



Es ist da. Ich habe "ganze Geschichte" geöffnet und es ist in dieser Version sichtbar.
 

Als Fortsetzung des Themas "OrderSelect hat keine Bestellung nach Ticketnummer gefunden".

Heute Morgen trat derselbe Fehler in demselben Expert Advisor bei einem anderen Paar auf. Die schwebende Order t2=#119899844 wurde erfolgreich platziert, dann wurde sie ebenfalls erfolgreich gelöscht, danach wurde die schwebende Order t3=#119903758 platziert, und danach wurde t2 von der OrderSelect-Funktion nicht gefunden.

Zwischen dem gestrigen und dem heutigen Fehler hat der in meiner vorherigen Nachricht angegebene Code im Expert Advisor mehrmals erfolgreich und ohne Fehler funktioniert, und die gelöschten Aufträge wurden ohne Probleme gefunden.

Zuvor hatte der Expert Advisor mehrere Monate lang in der Version MT4 229 gearbeitet. So etwas wurde zuvor noch nie beobachtet. Am Wochenende vor 4 Tagen habe ich auf Version 402 umgestellt. Ich weiß nicht, ob die Fehler mit der neuen Version zusammenhängen. Ich kann nicht zur alten Version zurückkehren, weil Alpari, wo dieser Expert Advisor gehandelt wird, die Zeitzone der Kurse geändert hat und nur die Version 402 diese Änderungen korrekt wiedergibt (so behauptet Alpari).

Die Fragen blieben offen:
Wie konnte das passieren, warum hat OrderSelect den Auftrag in der Historie nicht gefunden, während die Historie in ihrer Gesamtheit angezeigt wird und der verlorene Auftrag darin sichtbar ist? Ist dies ein MT-Fehler oder übersehe ich etwas im Code?

Лог эксперта:
10:15:33 CheMurom v3.4.real EURCHF,H1: --------------------------------------------------
10:15:33 CheMurom v3.4.real EURCHF,H1: Deleting order #119899844; attempt number: 1
10:15:34 CheMurom v3.4.real EURCHF,H1: delete #119899844 sell stop 0.01 EURCHF at 1.22245 sl: 1.22945 tp: 1.19735 ok
10:15:34 CheMurom v3.4.real EURCHF,H1: Sending order cmd=SELL_STOP, lot=0.02, price=1.21745, slip=3, sl=1.22845, tp=1.20015; attempt number: 1
10:15:36 CheMurom v3.4.real EURCHF,H1: open #119903758 sell stop 0.02 EURCHF at 1.21745 sl: 1.22845 tp: 1.20015 ok
10:15:36 CheMurom v3.4.real EURCHF,H1: ERROR: Unknown t2 in step 1

Лог терминала:
10:15:35 '2871084': delete pending order #119899844 sell stop 0.01 EURCHF at 1.22245 sl: 1.22945 tp: 1.19735
10:15:35 '2871084': request was accepted by server
10:15:35 '2871084': request in process
10:15:36 '2871084': pending order #119899844 was deleted
10:15:36 '2871084': pending order sell stop 0.02 EURCHF at 1.21745 sl: 1.22845 tp: 1.20015
10:15:36 '2871084': request was accepted by server
10:15:36 '2871084': request in process
10:15:37 '2871084': order was opened : #119903758 sell stop 0.02 EURCHF at 1.21745 sl: 1.22845 tp: 1.20015
 
Ich beschrieb Renate das Problem mit einem Screenshot, in Build 399 wurde es entfernt, aber in den Builds 401 und 402 trat der Fehler wieder auf, ich musste auf Build 399 zurückgehen.
 

Es gibt eine in Delphi7 geschriebene DLL. Es hat nur eine Funktion - zu prüfen, ob die Datei unter dem angegebenen Pfad existiert.

Hier ist der Code.

library FileGDV;

uses
  SysUtils,
  Classes;

//{$R *.res}

function FileExists(s:pchar):boolean; StdCall;
begin
   result:=sysutils.fileexists(s);
end;

exports FileExists;

begin
end.

Nichts Kompliziertes, nichts Besonderes, nur eine Funktion.

Hier ist der Code des Expert Advisors, der diese Funktion verwendet:

if (FileExists(s))
      {
         handleM=FileOpen(fn,FILE_BIN|FILE_WRITE|FILE_READ);
         
      }
      else
      {
         Alert("File not found   "+s);         
         handleM=FileOpen(fn,FILE_BIN|FILE_WRITE);
         s="Time;;M1;M5;M15;M30;H1;H4;D1\n";
         FileWriteString(handleM,s,StringLen(s));
      } 

und hier ist der Code der Header-Datei

#import "FileGDV.dll"


bool FileExists(string s);

 
#import


Hier ist der Code der Header-Datei. Wenn es nur einen Expert Advisor im Terminal gibt, läuft alles wie am Schnürchen.

Wenn ich zwei von ihnen im Terminal in verschiedenen Fenstern habe und sie diese Funktion aufrufen, dann arbeiten beide EAs alle paar Stunden nicht mehr und es erscheinen Meldungen im Journal

2011.06.09 14:33:57     gdv_e_MultiMACD_a_KSP_GBP_v082 GBPCHF,M5: expert stopped
2011.06.09 14:33:57     gdv_e_MultiMACD_a_KSP_GBP_v082 GBPCHF,M5: function 'FileExists' call from dll 'FileGDV.dll' critical error
Grund der Beschwerde: