Fragen von Neueinsteigern zu MQL4 und MQL5, Hilfe und Diskussion über Algorithmen und Codes - Seite 1559

 
Tsaryoff5614:

Guten Tag meine Herren Programmierer!!!

Bitte helfen Sie einem Neuling bei einer Funktion.

Die Funktion zählt die Gesamtgewinne in der Vergangenheit.

Das Problem ist, dass es bei dem einen Makler funktioniert und bei einem anderen nicht funktionieren will.

Es funktioniert bei Hercic, aber nicht bei RoboForex. Ich habe ein ECN-Konto bei RoboForex.

Ich weiß nicht, was das Problem ist. Hier ist der Code:

double lastloss()

{

int typ = -1,cnt = 0;

double lastloss = 0;

for(int i = OrdersHistoryTotal()-1; i>=0; i--)

{

if(OrderSelect(i,SELECT_BY_POS,MODE_HISTORY))

{

if(OrderSymbol() == Symbol() && OrderMagicNumber() == Magic)

{

if(cnt == 0) typ = OrderType();

if(cnt > 0 && OrderType()!= typ) break;

lastlos += OrderProfit() + + OrderSwap() + OrderCommission();

cnt++;

}

}

}

return(lastlos);

}

Ich frage mich, ob der Compiler bei dieser Zeile nicht flucht?

lastlos += OrderProfit() + + OrderSwap() + OrderCommission();

Vielleicht muss ein + entfernt werden, damit es richtig funktioniert?

Und warum addieren Sie Swap und Provision zu den Gewinnen? Auch wenn
OrderProfit()

Könnte auch negativ sein...

Und von welchem Gesamtgewinn sprechen wir, wenn Sie nur einen oder wenige passende Aufträge bearbeiten, aber nicht alle?

Nächste:

 if(cnt > 0 && OrderType()!= typ) break;

Anhalten des Fahrrads.

 
MakarFX:

1) Bei hoher Geschwindigkeit oder wenn nicht auf Ticks im Tester wird er zum ersten verfügbaren Preis schließen.

2) Sie haben eine Erhöhung der Menge, und bei einer großen Menge kann 1 Punkt mehr als der zulässige Wert sein.

3) Ich verstehe nicht, was Sie wollen, was Sie brauchen, um zu verfolgen, wenn Zeroing nach jedem Handel?

3) Ich verstehe nicht, was Sie verfolgen wollen, wenn Sie nach jedem Handel eine Nullstellung vornehmen?

Ich spreche von der Verfolgung des Gewinns/Verlusts "innerhalb" jedes Handels, d.h. während der Kurs zwischen Stop und Take "schwebt", ändert sich auch der Betrag des Gewinns und Verlusts des aktuellen Handels. Es kommt oft vor, dass der Kurs in die Gewinnzone kommt, aber den Take Point nicht erreicht - er dreht um und das Geschäft wird am Stop geschlossen. Ich benötige eine Verfolgung von Gewinn und Verlust (in Geld), damit ich sie rechtzeitig korrigieren kann, ohne einen Stop und Take zu verschieben, d.h. ohne die festgelegten Parameter von Take und Stop zu verletzen. Dies ist relevant für große Grundstücke mit einem aktivierten Martin.

Wenn ein Geschäft abgeschlossen ist, wird die Verfolgung angehalten und für ein neues Geschäft neu begonnen.

 
законопослушный гражданин:

3) Ich verstehe nicht, was Sie verfolgen wollen, wenn Sie nach jedem Handel eine Nullstellung vornehmen?

Ich spreche von der Verfolgung des Gewinns/Verlusts "innerhalb" jedes Handels, d.h. während der Kurs zwischen Stop und Take "schwankt", ändert sich die Höhe des Gewinns und Verlusts des aktuellen Handels. Oft kommt es vor, dass der Kurs in die Gewinnzone kommt, aber den Take Point nicht erreicht - er dreht um und das Geschäft wird am Stop geschlossen. Ich benötige eine Verfolgung von Gewinn und Verlust (in Geld), damit ich sie rechtzeitig korrigieren kann, ohne einen Stop und Take zu verschieben, d.h. ohne die festgelegten Parameter von Take und Stop zu verletzen. Dies ist relevant für große Grundstücke mit einem aktivierten Martin.

Wenn ein Handel geschlossen wird, wird die Verfolgung gestoppt und für einen neuen Handel neu begonnen.

Sie müssen nur die Parameter für Gewinn und Verlust abzüglich Stoploss und Takeprofit angeben, d.h.

wenn TakeProfit 200 pips 0.1 lot ist, dann ist der Gewinn $20, setzen Sie das Profit Level von $15 und der Handel wird früher geschlossen

 
Mihail Matkovskij:

Und warum addieren Sie den Swap mit Provision zum Gewinn? Mit
OrderProfit()

kann auch negativ sein...

Vielen Dank dafür, ich habe diese dumme Sache auch schon gemacht.

 
MakarFX:

Sie müssen lediglich die Gewinn- und Verlustparameter abzüglich Stoploss und Takeprofit angeben, d.h.

Wenn TakeProfit 200 Pips 0.1 Lot ist, dann ist der Gewinn $20, setzen Sie das Profit Level auf $15 und der Handel wird früher geschlossen


Ok, danke, ich werde darüber nachdenken und es im Testprogramm ausführen.

 
Haben Sie einen Link zu einer Funktion, die den Gewinn auf der Grundlage der Auftragshistorie berechnet?
 

Ich bitte um die Hilfe der Gemeinschaft...
Wie deklariert und erstellt man globale MQL5-Objekte richtig?

Wenn ich es auf diese Weise mache:

int OnInit()
{
   CIsNewBar* NB_M1=new CIsNewBar(_Symbol,PERIOD_M1);  // Эта строка потом будет в цикле для разных символов
}

void OnTick()
{
    if (NB_M1.IsNewBar())  // (1) Если появился новый бар M1
        {....}
    ......
}

Der Compiler beschwert sich über die Zeile in OnTick(): 'NB_M1' - nicht deklarierter Bezeichner, was logisch ist, da eine lokale Variable in OnInit() erstellt wird.

Wenn Sie die globale Deklaration vor OnInit() einfügen:

CIsNewBar* NB_M1;

es kompiliert ohne Fehler und der Experte arbeitet. Es scheint, dass das Objekt zweimal erstellt wird - während der globalen Deklaration und in OnInit().
Aber derCompiler gibt dieseWarnung aus

Deklaration von 'NB_M1' versteckt globale Variable -> pro Zeile in OnInit()

siehe vorherige Deklaration von 'NB_M1'

Bedeutet dies, dass eine lokale Variable (innerhalb einer Funktion) in OnInit() erstellt wird, die eine globale Variable mit demselben Namen versteckt?
Und wenn ja, wie kann diese lokale Variable von einer anderen Funktion, OnTick(), "gesehen" werden?


 
MakarFX:

Vielen Dank dafür, ich habe diese Dummheit auch gemacht.

Makar, früher hast du das Richtige getan und jetzt willst du das Dumme tun...

Erinnern Sie sich an Ihre Mathearbeit in der 5. Wie viel ist (-3)-(-7) und wie viel ist (-3)+(-7)?

Es ist schwer, das mit einem Taschenrechner zu überprüfen, Excell hilft Ihnen dabei.


 
Mihail Matkovskij:
Hallo. Kennen Sie eine Bibliothek, die in MQL verfügbar ist, um Datenstrukturen in eine Datei zu schreiben und sie anschließend zu laden? Idealerweise eine Bibliothek, die mit dem json-Format,json-Parser usw. arbeitet.

Ich weiß nicht, wie ich Ihnen sagen soll, dass Sie die Dokumentation lesen sollen. Wenn Sie es gelesen haben und die Standardfunktion aus irgendeinem Grund nicht geeignet ist, hätten Sie das gleich sagen sollen...

 
Alexey Viktorov:

Makar, früher hast du das Richtige getan und jetzt willst du das Dumme tun...

Erinnern Sie sich an Ihre Mathearbeit in der 5. Wie viel ist (-3)-(-7) und wie viel ist (-3)+(-7)?

Es ist schwer, das mit einem Taschenrechner zu überprüfen, Excell hilft Ihnen dabei.


Ja, ich danke Ihnen. Ich habe voreilige Schlüsse gezogen. Ich habe es richtig gemacht)

Grund der Beschwerde: