[Archiv!] Jede Anfängerfrage, um das Forum nicht zu überladen. Fachleute, gehen Sie nicht daran vorbei. Könnte nirgendwo ohne dich hingehen - 2. - Seite 191

 
eddy:

der falsche Preis ist 1,37197000.

der korrekte Kurs ist 1,37197 oder 1,3719, je nachdem, welche DNS verwendet wird.

NormalizeDouble() wird verwendet, um die Anzahl der Stellen nach dem Dezimalpunkt festzulegen


NormalizeDouble() für den Preis in OrderSend() hinzugefügt, kein Fehler mehr, danke!
 
artmedia70:

Einfacher geht's nicht:

Platzieren Sie die Funktionen selbst außerhalb der start()-Funktion oder ganz am Ende des gesamten Codes.



Ich danke Ihnen!
 
eddy:

Ich muss GetTickCount auf den ersten Tick nach dem Start des Indikators zu erinnern, aber der Code unten funktioniert nicht - das Terminal hängt. vielleicht RefreshRates funktioniert überhaupt nicht in init()...?

while(true){ if(RefreshRates()) { tik=GetTickCount(); break; } Sleep(1 ); }

Hat jemand eine Idee, wie man das implementieren kann? Ich würde es gerne in init machen, denn wenn ich ein Flag in start setze - wird es jedes Mal überprüft
 
eddy:
Wer hat eine Idee, wie man das implementieren kann? Ich möchte es in init machen, denn wenn man ein Flag beim Start setzt, wird es jedes Mal überprüft
Wenn Sieeine globale Variable deklarieren, weisen Sie ihr einen Wert zu und setzen Sie sie beim Start zurück. Dann hat er nur beim ersten Tick einen Anfangswert, bevor er zugewiesen wird, und bei allen folgenden Ticks den beim Start zugewiesenen Wert. Dann können alle Aktionen, die beim Start des EA einmalig durchgeführt werden, auf den Start übertragen werden.
 
eddy:

Könnten Sie bitte mitteilen, wie man einen Indikator programmatisch in ein Diagramm lädt?

Es gibt die Funktion bool ServiceLoadCustomIndicator(int hwndChart,...); //hwndChart- Systemdeskriptor des Chartfensters, in das der Indikator geladen wird.

Ich weiß nicht, woher ich den Deskriptor des Diagrammfensters kenne.

Ich muss nur GetTickCount auf den ersten Tick nach dem Start des Indikators zu erinnern, aber der Code unten funktioniert nicht - das Terminal hängt. Vielleicht in init() RefreshRates funktioniert überhaupt nicht...?

https://docs.mql4.com/ru/windows/WindowHandle
 
granit77:
Weisen Sie der globalen Variablen in der Deklaration einen Wert zu und setzen Sie sie beim Start zurück. Dann hat er nur beim ersten Tick vor der Zuweisung den ursprünglichen Wert und bei allen folgenden Ticks den beim Start zugewiesenen Wert. Dann können Sie zum Start aller Aktionen übergehen, die einmalig beim Start des Expert Advisors ausgeführt werden.

Ich brauche dieser Variablen beim Start nichts zuzuweisen.

Ich habe beschlossen, einen separaten Indikator zu erstellen, der die Ticks in einer globalen Variable speichert, deren Wert dem Hauptindikator beim Start bekannt ist

Zhunko, was ist, wenn es mehrere Fenster mit demselben TF und Symbol gibt?

 
eddy:

Ich brauche dieser Variablen beim Start nichts zuzuweisen.

Ich habe beschlossen, einen separaten Indikator zu erstellen, der die Ticks in einer globalen Variable speichert, deren Wert dem Hauptindikator beim Start bekannt ist

Zhunko, was ist, wenn es mehrere Fenster mit demselben Zeitrahmen und Symbol gibt?

Vor langer Zeit überprüft (Sie können es auch tun), gibt es die letzte oder die aktive.
 
Zhunko: Gibt die letzte oder die aktive zurück.

d.h. wenn keiner von ihnen aktiv ist, wird der letzte zurückgegeben?

Das macht aber nichts, denn ich denke, wenn man sie hinzufügt, ist diejenige, die man hinzufügen möchte, sowieso immer aktiv.

 
eddy:

Aber das macht nichts, ich denke, es ist sowieso immer aktiv, wenn man es dort hinzufügt, wo man es hinzufügen möchte.

Ja, ganz genau. Ich habe eine Funktion, die Deskriptoren für alle gleichen Diagrammfenster in Z-Reihenfolge zurückgibt. Sie wurde nicht in die Bibliothek aufgenommen. Aber es wird nicht viel helfen.
 
eddy:

Ich brauche dieser Variablen beim Start nichts zuzuweisen, sondern nur einmal, um mir den Tick zu merken.

Ich beschloss, einen separaten Indikator zu erstellen, der die Ticks in einer globalen Variable speichert, deren Wert der Hauptindikator beim Start erkennt

Was ich meinte, war Folgendes:
bool FirstStart=true;

int start(){

    if(FirstStart){
      if(RefreshRates()) tik=GetTickCount();
      FirstStart=false;
    } 
}