[ARCHIV] Alle Fragen von Anfängern, um das Forum nicht zu überladen. Fachleute, gehen Sie nicht vorbei. Nirgendwo ohne dich - 3. - Seite 261

 

Leute, was bedeutet eine ungültige Integer-Zahl als Parameter 10 für die Funktion OrderSend und wie kann man das beheben?

 
Pyxlik2009:

Leute, was bedeutet eine ungültige Integer-Zahl als Parameter 10 für die Funktion OrderSend und wie kann man das beheben?

Bitte geben Sie mir eine Codezeile an, in der das Problem auftritt

 
Pyxlik2009:

Leute, was bedeutet eine ungültige Integer-Zahl als Parameter 10 für die Funktion OrderSend und wie kann man das beheben?


Die Verfallszeit sollte eine ganze Zahl sein.
 
Roll:

Die Verfallszeit sollte eine ganze Zahl sein.
Ich habe in den Einstellungen nicht einmal einen Bruchteil.
 
sergey_r:
Ja, aber meine Order wird zum Schluss des Balkens platziert und ich brauche den aktuellen Preis. Wenn der aktuelle Preis niedriger ist als das Tief des vorherigen Balkens... Wenn der aktuelle Preis unter den vorherigen Preis gefallen ist, wird der Auftrag erteilt.

Versuchen Sie dies

if (Bid<iLow(NULL, 0, 1)


 
Pyxlik2009:
Ich habe in den Einstellungen nicht einmal einen Bruchteil.

Siehe den 10. Parameter der obigen Funktion. Setzen Sie ihn auf 0.
 
paukas:
Es gibt so etwas wie ein Drehbuch. Wenn es gebraucht wird, führen Sie es einfach aus.


Es geht nicht darum, die Aktion einmal durchzuführen. Der Punkt ist, dass dieses Skript zwar die Zeit seiner Einstellung, nicht aber die ausgelöste Zeit liest.

Daher wird der Zeitpunkt der Auslösung eines schwebenden Auftrags nirgendwo im Terminal gespeichert. Ich muss nur diese Zeit wissen, und es wäre ideal, die eingebaute MQL4-Funktion PendingOrderFilledTime() zu verwenden, falls sie existiert. In diesem Fall würde MT4 selbst die ausstehenden Aufträge überwachen und mir ein fertiges Ergebnis liefern.

Ich sehe also keine andere Lösung als die Verwendung eines Expert Advisors oder eines Skripts mit Schleifen in einem Diagramm. Warum frage ich hier? Vielleicht hatte jemand ein ähnliches Problem und es wurde ohne Expert Advisor oder Skript gelöst, nur mit den Mitteln von MQ4.


LazarevDenis:

Ich verstehe nicht, warum Sie nicht mit dem EA zufrieden sind, scheinen Sie nicht gehen, um eine komplexe neuronale Netzwerk-Handelssystem mit Selbst-Optimierung zu bauen, müssen Sie nur jeden Tick zu überprüfen, um zu sehen, ob das Pendel funktioniert und wenn es ausgelöst wird, würden Sie eine Textnachricht auf dem Bildschirm oder Audio ein oder beides zu bekommen, kann der Rechner diese Aufgabe zu bewältigen, keine Sorge über Computer oder Sie haben nur schriftlich Probleme?

Ich habe keine Probleme damit, es zu schreiben. Ich möchte kein improvisiertes Werkzeug benutzen, um Informationen vom Terminal zu erhalten. Ein Expert Advisor ist eine direkte Lösung für ein Problem.

Wenn jede Aufgabe, für die es keine Standard-MQ4-Funktion gibt, durch einen Expert Advisor gelöst würde, hätte das Terminal sie. Und es ist nicht gut, zusätzliche schwache Glieder in der Kette zu schaffen. Wenn Sie viele offene Terminals haben und für jedes dieser Terminals ein EA benötigt wird und Sie überprüfen müssen, ob dieser vorhanden ist oder nicht, werden Sie zustimmen, dass dies unbequem und unklug ist. Eine Prüfung für den EA-Anhang zu schreiben und zu erzwingen, dass er dort ausgeführt wird, ist dasselbe. Warum also die Angelegenheit verkomplizieren, wenn vielleicht schon jemand dieses Problem mit der Kombination vorhandener MQL4-Funktionen gelöst hat?

 
Starting:
...vielleicht hat ja schon jemand ein ähnliches Problem mit einer Kombination aus bestehenden MQL4-Funktionen gelöst.
Ich habe es gelesen und verstehe die Logik nicht. Angenommen, die von Ihnen benötigte Funktion ist verfügbar, wie würden Sie sie nutzen? Sie müssen sie ohnehin in einen Expert Advisor oder in ein Skript einfügen.
Es geht also nicht um das Fehlen einer speziellen Funktion (und man kann nicht für jedes Niesen danken), sondern um die Komplexität des Schreibens eines Codes, der Ihre Anforderungen erfüllt.
 
granit77:
Ich habe es gelesen und verstehe die Logik nicht. OK, nehmen wir an, es gibt eine Funktion, die Sie brauchen, wie werden Sie sie verwenden? Sie müssen es ohnehin in Expert Advisor oder ein Skript einfügen.
Die Frage bezieht sich also nicht auf das Fehlen einer speziellen Funktion (und man kann sich nicht für jedes Niesen bedanken), sondern auf die Schwierigkeit, Code zu schreiben, der Ihren Anforderungen entspricht.

Die Anwendung ist einfach - ich lasse ein Skript laufen, das die Daten des letzten geschlossenen Handels mit der frühesten Öffnungszeit schreibt. Die durch das Skript ausgelösten Pendants verursachen Verwirrung in den Reihen der abgeschlossenen Aufträge. In dem Moment, in dem das Skript startet, hat es keine Möglichkeit, die Daten über die ausstehenden Aufträge, die ausgelöst werden, zu erhalten, da ihr Auslösedatum in der Historie festgelegt ist und nicht das Datum ihres Abschlusses.


Ein einfaches Beispiel.

Die ausstehende Bestellung 1 wurde am 01.01.2011 eingestellt.

02.01.2011 wurde eine Marktorder 2 eröffnet.

Am 03.01.2011 wurde die schwebende Order 1 ausgelöst und wurde zur Marktorder 1, deren OrderOpenTime() den 01.01.2011 anzeigt, obwohl sie tatsächlich am 03.01.2011 zur Marktorder wurde.

04.01.2011 wurde der Marktauftrag 2 geschlossen.

05.01.2011 wurde der Marktauftrag 1 geschlossen.

In der Historie wird das Datum 02.01.2011 des Marktauftrags 2 als das Datum der Eröffnung des letzten geschlossenen Auftrags mit dem spätesten Eröffnungsdatum angegeben.

Das jüngste Eröffnungsdatum (ausgelöst) des letzten geschlossenen schwebenden Auftrags 1 ist der 03.01.2011.

Das ist die Frage, ist es möglich, das tatsächliche Datum der Auftragsauslösung zu erhalten, um die geschlossenen Aufträge korrekt nach ihrem Eröffnungsdatum zu sortieren, ohne dass ein Expert Advisor das Konto überwacht?


Stellen Sie sich vor, Sie handeln mit schwebenden Aufträgen, die Sie schon vor längerer Zeit festgelegt haben. Und jetzt sehen Sie, dass einige von ihnen ausgelöst und nach einiger Zeit wieder geschlossen wurden. Sie werden jedoch nach ihrem "zotteligen" Zeitpunkt der Platzierung berücksichtigt, auch wenn sie vor einem Jahr platziert, aber erst heute ausgelöst und abgeschlossen wurden. Sie wollen sehen, was wirklich zuletzt auf dem Markt geöffnet oder ausgelöst wurde, so dass es als Letztes gegeben wird und nicht alles, was einmal auf dem Markt war, mit denen vermischt wird, die erst kürzlich geöffnet wurden. Ich danke Ihnen für Ihre Aufmerksamkeit auf meine Frage.

 

Meine Herren, können Sie mir sagen, wo ich einen Fehler gemacht habe, als ich diese Timing-Funktion in meinen EA-Code eingefügt habe?

int init()
  {
  
bool isTradeTimeInt (int hb=05,int mb=50,int he=23,int me=00) 
    {
  datetime db, de;           // Время начала и окончания работы
  int      hc;               // Часы текущего времени торгового сервера

  db=StrToTime(TimeToStr(TimeCurrent(), TIME_MINUTES)+" "+hb+":"+mb);
  de=StrToTime(TimeToStr(TimeCurrent(), TIME_MINUTES)+" "+he+":"+me);
  hc=TimeHour(TimeCurrent());
  if (db>=de) {
    if (hc>=he) de+=24*60*60; else db-=24*60*60;
  

  if (TimeCurrent()>=db && TimeCurrent()<=de) return(True);
  else return(False);
}
   return(0);
  }

Der Compiler hat mich mit Fehlern überschüttet.