Jede Anfängerfrage, um das Forum nicht zu überladen. Fachleute, gehen Sie nicht vorbei. Nirgendwo ohne dich - 6. - Seite 646

 
valeryk:


Nein, ich habe es gerade überprüft. Es stimmt, der Timer ist ausgeschaltet, wenn das Internet ausgeschaltet ist.
Da!) Ich dachte, ich wäre der Einzige mit Pannen.) Wie würden Sie dieses Problem lösen?
 
Gut, dass ich keine Neuerungen einsetze, auf die die Erfahreneren noch nicht gekommen sind! :)
 
Megan:
Da!) Ich dachte, ich wäre der Einzige mit Pannen.) Wie würden Sie dieses Problem lösen?



Wenn die Entwickler dieses Verhalten des Timers nicht als "narrensicher" beabsichtigt haben, dann ist der Fehler eindeutig. Schließlich beginnt der Timer in der Inite und sollte ab diesem Zeitpunkt autonom arbeiten. Sie müssen einen Antrag bei servicedesk stellen.
 
der Moderator scheint ihn gelesen zu haben. barabashkakvn- kann er bestätigen, dass es ein Problem gibt, und sollte er an servicedesk schreiben?
 
Megan:
EventSetTimer(1); steht. Und wenn eine Verbindung besteht, funktioniert alles, seltsamerweise. Es gibt kein Entladen bei OnInit() . Ich weiß nicht, warum das so ist(...

MetaTrader 4 Build 660. Wenn zum Zeitpunkt des Terminalstarts keine Verbindung besteht, wird OnInit() nicht ausgeführt.

Abhilfe: Experte neu anbringen oder Zeitrahmen zweimal wechseln.


 
barabashkakvn:

MetaTrader 4 Build 660. Wenn zum Zeitpunkt des Terminalstarts keine Verbindung besteht, wird OnInit() nicht ausgeführt.

Dies kann mit einer halben Maßnahme behoben werden: Hängen Sie den Expert Advisor erneut an oder wechseln Sie den Zeitrahmen zweimal.


Es gibt ein Problem mit ihm) Mein EA ist entworfen, um offline zu arbeiten(
 
Megan:
Problem damit) Ich habe einen EA, der für den Standalone-Betrieb konzipiert ist (


Sie müssen einen Antrag an servicedesk schreiben.
 

Hallo. Freunde, bitte helft einem Neuling. Ich kann nicht herausfinden, wie ich die in der .xls-Datei vorbearbeiteten Zitate in das Terminal laden kann. Ich habe den ganzen Tag mit dieser Frage zu kämpfen gehabt.

Danke!

 

Hallo noch mal. Ich habe mich selbst gefragt und selbst geantwortet: Bei der Bearbeitung des Namens habe ich einen anderen als den ursprünglichen Namen gewählt. Korrigiert zu - RTSI1440.csv und hochgeladen.

Ich danke Ihnen.

 
Top2n:

Guten Tag!

Ziel ist es, einen Algorithmus für die Mittelwertbildung von Geschäften zu schreiben.

Ich beschloss, es zu implementieren, indem ich die Preiswerte der offenen Positionen in ein Array füllte. Dadurch füllt sich das Feld ohne Veränderung. Ich habe irgendwo etwas übersehen.

Nullstellung des Arrays vor dem Anfang:

  if (ArrayResize(array, 0) != 0) {
    return false;
  }

Übrigens, wenn OrderSelect() in mindestens einer Iteration der Schleife einen Fehler zurückgibt, kann man den Ergebnissen nicht trauen. Mit anderen Worten, wir sollten nicht versuchen, die verbleibenden Aufträge zu bearbeiten, wenn einige von ihnen fehlgeschlagen sind. Es wäre sinnvoller, den Fehler sofort zu melden. Ein übergeordneter Code könnte beispielsweise folgendermaßen auf einen Fehler reagieren: Versuchen Sie, den Vorgang noch ein paar Mal mit diesem Tick zu wiederholen, oder brechen Sie die Aktionen für diesen Tick ab, verschieben Sie sie und versuchen Sie es mit dem nächsten Tick erneut.

Es ist logischer, Usred() und Zapis() zu vereinen, und die Filterbedingung sollte folgendermaßen kombiniert werden: "if (OrderSymbol() == Symbol() && OrderType() == type)". Jedenfalls besteht keine Notwendigkeit für eine wiederholte OrderSelect() in Zapis().

Um den Durchschnittspreis einer Position für einzelne Aufträge zu berechnen, müssen wir nicht alles in einem Array speichern. Wir können sie im laufenden Betrieb berechnen.

S1 = order1_lots * order1_openprice + order2_lots * order2_openprice + ... orderN_lots * orderN_openprice.

S2 = Auftrag1_Lose + Auftrag2_Lose + ... + orderN_lots.

Der Preis der gesuchten Position = S1 / S2.

Wenn wir zwei Variablen, für S1 und für S2, erstellen, sie auf Null setzen und in der Schleife jedes Mal einen entsprechenden Wert zu jeder der Variablen hinzufügen, dann müssen wir nach der Schleife nur noch S1 durch S2 dividieren, nachdem wir zuvor überprüft haben, dass S2 nicht 0 ist (in diesem Fall - Fehler, d.h. das Ergebnis wird NICHT berechnet, es existiert nicht). Möglicherweise muss der resultierende Wert auch mit NormalizeDouble() normalisiert werden - es hängt vom Algorithmus ab, ob eine Normalisierung erforderlich ist, und von den Programmkonventionen, welche Funktion zur Normalisierung aufgerufen wird oder aufgerufen werden soll.

In diesem Fall brauchen Sie nicht einmal ein Array.

Wenn Sie andere Berechnungen als den Gesamtpositionspreis benötigen, können Sie die Werte S1 und S2 an die aufgerufene Funktion "zurückgeben", indem Sie die Variablen selbst als Referenz übergeben, und das Fehlerzeichen von der Funktion zurückgeben. Das heißt, der Prototyp der aufgerufenen Funktion könnte wie folgt aussehen: "bool fun(double &S1, double &S2);". Die aufrufende Funktion startet die Variablen, übergibt sie an fun() und verwendet, wenn fun() true zurückgibt, die Werte der übergebenen Variablen (die ihrerseits unterschiedliche Namen haben können) als S1 und S2.