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

 
Es gibt eine Frage zu TimeLocal(), diese Funktiongibt die lokale Zeit des Computers zurück, auf dem das Client-Terminal läuft. Gleichzeitig wandelt TimeToStr einen Wert um, der die Zeit in Sekunden seit dem 01.01.1970 enthält .
Zum Beispiel:


void init() {
   Print("Time_Start = " + TimeToStr(TimeLocal(),TIME_DATE|TIME_SECONDS) );
}

get:

2014.04.11 15:05:50.031 2001.01.03 07:25 : Time_Start = 2001.01.03 07:25:00
Wie konvertiert man das von
TimeLocal() erhaltene Zeitformat in "2014.04.11 15:05:50"?

 
Bitte sagen Sie mir, diese Frage mag unpassend erscheinen, aber haben Sie jemals einen Expert Advisor getroffen, der nach Candlestick-Mustern handelt?
 
Profitov:
Bitte sagen Sie mir, diese Frage mag unpassend erscheinen, aber haben Sie jemals einen Expert Advisor getroffen, der nach Candlestick-Mustern handelt?

Ja, das habe ich :) Ich arbeite nur in dieser Richtung. Im Allgemeinen sind Sie an der falschen Stelle. Wenn man etwas lernen will, muss man fragen.
 

Ich habe die folgende Frage. Soweit ich weiß, geht es um das Layout des Codes vor der Kompilierung. Das Wesentliche ist Folgendes:

Wie sich herausstellte, habe ich alle Bibliotheken separat geschrieben. Jede Bibliothek hat ihre eigene Einschlussdatei, die in den Code des Expert Advisors oder in eine andere Bibliothek aufgenommen wird, wenn Sie eine Bibliothek hinzufügen möchten. Hier ist es das Gleiche wie immer.

Ich habe eine Bibliothek geschrieben, die, wie ich sagen würde, grundlegend ist, aber auch sehr häufig verwendet wird. Im Allgemeinen werden einige Funktionen dieser Bibliothek von einigen Bibliotheken verwendet und einige von anderen. Die Header-Datei dieser Bibliothek hat relativ viele globale Variablen. Ich bin an diesem Punkt interessiert. Wenn ich diese Bibliothek mit verschiedenen Bibliotheken verknüpfe, von denen jede nur einige Funktionen dieser Bibliothek benötigt, wird der Linker den Code irgendwie optimieren? Oder wird die gesamte Bibliothek zu den Bibliotheken hinzugefügt, in die ich sie importiert habe?

 
hoz:

Ich habe eine Frage ...

Die Frage scheint bereits vor einigen Monaten gestellt worden zu sein. Eine normale Antwort können Sie nur von den Entwicklern erhalten, da die Besonderheiten und die Sprache der Aufgabenverwaltung nur ihnen bekannt sind. Nachfolgend sind meine Spekulationen aufgeführt.

Der Mechanismus des dynamischen Ladens von Bibliotheksfunktionen - DLL - impliziert nicht das dynamische Entladen dieser Funktionen.

Jede Funktion in der dynamischen Aufrufbibliothek wird in dem Moment geladen, in dem auf sie (die Funktion) verwiesen wird.

Wenn das Laden einer Funktion das Laden einigerUmgebungsvariablen (globale Variablen) impliziert, dann sehe ich keine andere einfache Lösung als das Laden der gesamten Bibliothek.

Wenn eine Bibliotheksfunktion in einer DLL eine Funktion aus einer anderen Bibliothek mit denselben Eigenschaften aufruft, wird letztere vollständig geladen.

Jetzt kommt der lustige Teil.

Die Frage, was passiert, wenn die obige Abfolge von Funktionsaufrufen wiederholt wird, können nur Entwickler beantworten.

Meine Empfehlung: Verwenden Sie niemals globale Variablen in Bibliotheksfunktionen und lesen Sie zum Frühstück keine sowjetischen Zeitungen.

 
tara:

Die Frage scheint schon vor einigen Monaten gestellt worden zu sein. Eine normale Antwort kann nur von den Entwicklern gegeben werden, da die Besonderheiten und die Sprache der Aufgabenverwaltung nur ihnen bekannt sind. Nachfolgend sind meine Spekulationen aufgeführt.

Der Mechanismus des dynamischen Ladens von Bibliotheksfunktionen - DLL - bedeutet nicht, dass sie dynamisch entladen werden.

Jede Funktion in der dynamischen Aufrufbibliothek wird in dem Moment geladen, in dem auf sie (die Funktion) verwiesen wird.

Wenn das Laden einer Funktion das Laden einiger Umgebungsvariablen (globale Variablen) impliziert, dann sehe ich keine andere einfache Lösung als das Laden der gesamten Bibliothek.

Wenn eine Bibliotheksfunktion in einer DLL eine Funktion aus einer anderen Bibliothek mit denselben Eigenschaften aufruft, wird letztere vollständig geladen.

Jetzt kommt der lustige Teil.

Die Frage, was passiert, wenn die obige Abfolge von Funktionsaufrufen wiederholt wird, können nur Entwickler beantworten.

Meine Empfehlung: Verwenden Sie niemals globale Variablen in Bibliotheksfunktionen und lesen Sie zum Frühstück keine sowjetischen Zeitungen.

Eine Bibliothek wird entladen, wenn der Thread, der diese Bibliothek aufgerufen hat, beendet wird, wenn es keinen anderen Mechanismus zum Halten der Bibliothek gibt. Zum Beispiel mit einem Anrufzähler.

Globale Variablen sind böse :-) Es ist besser, sie nie zu benutzen.

 

Guten Tag,

Ich teste die Roboter im Tester und erhalte zufällige Positionsschließungen gefolgt von Positionseröffnungen. Was bedeuten diese Vertauschungen in den Testergebnissen? Ich bekomme alle meine martingale gehen in die Hölle wegen dieser :)

107 2014.04.01 17:19 sell 54 1.23 1.38105 1.38204 1.37891 0.00 9664.86

108 2014.04.02 00:00 swap close 54 1.23 1.37934 1.38204 1.37891 210.33 9875.19

109 2014.04.02 00:00 swap open 55 1.23 1.37934 1.38204 1.37891 0.00 9875.19

110 2014.04.02 08:31 s/l 55 1.23 1.38204 1.38204 1.37891 -332.10 9543.09


 
Zhunko:

Eine Bibliothek wird entladen, wenn der Thread, der diese Bibliothek aufgerufen hat, beendet wird, wenn es keinen anderen Mechanismus zum Halten der Bibliothek gibt. Zum Beispiel mit einem Anrufzähler.

Globale Variablen sind böse :-) Es ist besser, sie nie zu benutzen.


Wie wird dann mit solchen Fragen umgegangen? Angenommen, es gibt eine Liste von Variablen, die in verschiedenen Bibliotheken verwendet werden. Nehmen wir zum Beispiel die Variable bi_Err, die den letzten Fehler enthält. Es stellt sich heraus, dass ich ohne eine globale Variable in jeder Bibliothek dieselbe Variable deklarieren und das Analogon der bi_Err-Variable behandeln muss. Und es gibt viele solcher Variablen. Die Frage wurde gestellt, weil sich herausgestellt hat, dass ich in jeder Bibliothek, in der solche Variablen verwendet werden, diese Variablen (die jetzt global sind) und die Werte dieser Variablen über die Parameter der Funktionen, die diese Variablen verwenden, deklarieren muss, ohne dass in solchen Fällen globale Variablen verwendet werden.

Es stellt sich heraus, dass ich diese Variablen nicht einmal global deklarieren kann, sondern sie in jeder Bibliothek separat deklarieren muss. Und das macht nicht wirklich Sinn.

 
hoz:

Erfüllt... ihre eigenen :) Das ist so ziemlich alles, wovon ich triefe. Im Allgemeinen haben Sie die falsche Richtung eingeschlagen. Wenn Sie etwas lernen wollen, fragen Sie...

Danke, das ist es, was ich fragen wollte, wo ich anfangen soll, in dieser Richtung zu graben, da Sie bereits in dieselbe Richtung arbeiten.
 
Profitov:

Danke, das ist es, was ich fragen wollte, wo ich anfangen soll, in diese Richtung zu graben, da Sie bereits in dieselbe Richtung arbeiten.

Ich verstehe den Grund für diese Frage nicht ganz. Was den Algorithmus angeht, so ist das Ihre Entscheidung. Was den Code anbelangt, so ist dieser nicht kompliziert. Die Candlesticks haben ihren Hoch-, Tief-, Eröffnungs- und Schlusskurs. Und wenn Sie diese Daten haben, können Sie alle anderen Marktdaten, einschließlich der Fibo-Levels, abrufen, falls erforderlich.
Grund der Beschwerde: