Fragen Sie! - Seite 64

 
ryanklefas:
Ich denke, die Funktion normalizeDouble würde auch bei Ihnen funktionieren. Ich habe auch schon Code gesehen, der die Funktionen MathFloor und MathCeiling verwendet, um das Gleiche zu erreichen.

Was Sie also sagen, ist, dass die Berechnung so funktionieren sollte, wie ich sie im Abschnitt "Variable Begin" wie unten angegeben kodiert habe:

double LotSize = NormalizeDouble(Lot_Size_Ratio*((AccountBalance()/1000)), 3);

Dann liegt mein Problem vielleicht woanders, denn wenn ich das Folgende einstelle:

extern bool LotSizeManager = True;

führt der EA keine Trades aus. Wenn ich ihn auf false setze, führt er Trades aus. Ich nehme an, dass er keine Trades ausführt, wenn dieser Wert True ist, weil es ein Problem mit der Berechnung gibt.

 
waaustin:
double LotSize = NormalizeDouble(Lot_Size_Ratio*((AccountBalance()/1000)), 3);

double LotSize = NormalizeDouble(Lot_Size_Ratio*((AccountBalance()/1000)), 1); // 0: Fulllots, 1: Minilots, 2: Microlots, 3: never used

 
Michel:
double LotSize = NormalizeDouble(Lot_Size_Ratio*((AccountBalance()/1000)), 1); // 0: Fulllots, 1: Minilots, 2: Microlots, 3: nie verwendet

Es kommt also darauf an, wie genau ich die Losgröße haben möchte. Wenn ich also eine Mikrolot-Genauigkeit möchte, z. B. 0,75 Lots, dann würde ich einen Wert von 2 verwenden.

 
waaustin:
Sie sagen also, dass es davon abhängt, wie genau ich die Losgröße haben möchte. Wenn ich also eine Mikrolot-Genauigkeit möchte, wie z.B. 0,75 Lots, dann würde ich einen Wert von 2 verwenden.

Ja, Sie haben es geschafft!

Aber vergewissern Sie sich, dass Microlots (2 Dezimalstellen) für Ihren Broker und die Art des Kontos, das Sie haben, in Ordnung sind.

Ich weiß nicht genau, wie IBFX mit Minikonten arbeitet, d.h. ob Microlots auf Minikonten auch Minilots genannt werden und nur 1 Dezimalstelle haben. Vielleicht kann jemand, der IBFX nutzt, hier antworten?

Am besten ist es jedoch, wenn Sie Ihren Broker fragen.

 
Michel:
Ja, Sie haben es verstanden!

Aber seien Sie sicher, dass Microlots (2 Dezimalstellen) für Ihren Broker und die Art des Kontos, das Sie haben, in Ordnung sind.

Ich weiß nicht genau, wie IBFX mit Minikonten arbeitet, d.h. ob Microlots auf Minikonten auch Minilots genannt werden und nur 1 Dezimalstelle haben. Vielleicht kann jemand, der IBFX nutzt, hier antworten?

Am besten fragen Sie jedoch Ihren Broker.

Herzlichen Dank. Der LotSizing-Code scheint gut zu funktionieren. Es scheint jedoch, dass ich irgendwo einen anderen Fehler im Code habe und ich kann ihn nicht herausfinden.

Ich habe den EA auf mehr als ein Paar geladen, er platziert aber nur auf einem Paar Trades. Der LotSizing-Code funktioniert einwandfrei. Aber, es platziert keine weiteren Trades auf anderen Währungspaaren. Wenn ich jedoch den folgenden Wert einstelle:

extern bool LotSizeManager = False;

platziert der EA Geschäfte für jedes Währungspaar, an das ich den EA angehängt habe.

 
waaustin:
Herzlichen Dank. Der LotSizing-Code scheint gut zu funktionieren. Es scheint jedoch, dass ich irgendwo einen anderen Fehler im Code habe und ich kann ihn nicht herausfinden.

Ich habe den EA auf mehr als ein Paar geladen, er platziert aber nur auf einem Paar Trades. Der LotSizing-Code funktioniert gut. Aber, es platziert keine weiteren Trades auf anderen Währungspaaren. Wenn ich jedoch den folgenden Wert einstelle:

extern bool LotSizeManager = False;

der EA platziert Trades für jedes Währungspaar, an das ich den EA angehängt habe.

Macht nichts. Ich habe herausgefunden, wo das Problem liegt! Vielen Dank für die Hilfe.

 

Problem: Zum benutzerdefinierten Zeitpunkt versucht der EA, eine Pending Order zu platzieren, aber der aktuelle Kurs ist zu niedrig, als dass der Broker die Order akzeptieren könnte.

Frage: Wie würde ich eine Schleife programmieren, die das iOpen des 1-Minuten-Balkens jede Minute überprüft, bis die Order akzeptiert wird? Ich bin mir nur nicht sicher, wie ich die Prüfung jede Minute einbauen kann, bis die Order eingegeben werden kann. Es scheint, als ob der aktuelle Code nach ein paar Minuten vergisst, wonach er sucht, denn sobald der Preis aus dem Weg der Eingabe ist, passiert nichts mehr.

Ich denke, ein Teil davon ist wie folgt:

double Open_Price_Every_Minute;

Open_Price_Every_Minute = iOpen(NULL,PERIOD_M1,0);

Open_Price_Every_Minute = NormalizeDouble(Open_Price_Every_Minute, Digits);

if (Allow_LimitOrder_for_Entry_A==false)

{

OrderSend(Symbol(), OP_BUYSTOP, Lots, LA, Slippage, LASL, LATP, "", Magic, 0, FireBrick);

OrderSend(Symbol(), OP_SELLSTOP, Lots, SA, Slippage, SASL, SATP, "", Magic, 0, FireBrick);

}

Wie immer, vielen Dank für Ihre Hilfe und Ihre Zeit.

James

 
proverbs:
Scheint, wie der aktuelle Code vergisst, was es nach ein paar Minuten suchen, weil, sobald der Preis ist aus dem Weg der Eingabe nichts passiert.

Ich glaube nicht, dass Sie die Schleife in einem EA auf unbestimmte Zeit laufen lassen wollen. Ich habe es noch nie versucht, aber ich glaube nicht, dass es eine gute Sache sein würde. Wenn Sie möchten, dass der EA sich "merkt", was er getan hat, speichern Sie die Daten, die Sie sich merken müssen, als statische Variablen (Variablen, die außerhalb der Hauptfunktion deklariert werden) oder als globale MT4-Variablen.

 
ryanklefas:
Ich glaube nicht, dass du die Schleife in einem EA unendlich lange laufen lassen willst. Ich habe es noch nie ausprobiert, aber ich glaube nicht, dass es eine gute Sache wäre. Wenn Sie möchten, dass der EA sich "merkt", was er getan hat, speichern Sie die Daten, die Sie sich merken müssen, als statische Variablen (Variablen, die außerhalb der Hauptfunktion deklariert werden) oder als globale MT4-Variablen.

Hey!

Die Einbindung von ea procesing in die Schleife ist ein guter Weg, lesen Sie dies:

https://www.mql5.com/en/articles/1462

Du musst es nur auf die richtige Weise tun

 

Kalenzo,

vielen Dank für den Artikel. Es sieht so aus, als würde ich mehr lernen, als ich wollte.

Grund der Beschwerde: