Hallo zusammen,
ich bin absoluter Neuling bei MQL5 und möchte eine Strategie testen. Dazu schreibe ich mir einen EA. Dank YT bin ich schon recht weit. Nur habe ich keine Ahnung wie ich folgende Bedingungen an den EA weitergeben kann.
1) Bei jeder neuer Kerze soll er prüfen ob er eine gewisse Anzahl laufenden Positionen hat. Ist dies der Fall, soll er die Position mit dem höchsten Profit schließen. Wie kann ich jetzt herausfinden welche Position den höchsten Profit im Moment hat?
2) Ich möchte, dass der EA nur in einem bestimmten Zeitraum arbeitet. Nachts soll er nicht handeln. Wie kann ich An/Aus Zeiten erstellen?
Ich würde mich freuen wenn mir jemand helfen kann. Und wirklich, ich habe wenig Ahnung. Habe früher nur mit VB programmiert. Aber auch nur als Hobby...
VG Simon
Klar geht das. Wenn ich Funktionen mit bestimmten Fähigkeiten suche mach ich das meist hier: https://www.mql5.com/de/docs/function_indices.
Man kann aber auch die PDF-Datei nehmen und die nach Schlüsselworten durchsuchen. Beides ist schneller als eine Antwort hier.
add 1)
Such (Ctrl+F) da mal nach "PositionsTotal".
Dann lies weiter unten unter Eigenschaften der Positionen.
In einer Schleife über alle Positionen dann den höchsten Gewinn finden.
add 2)
Du musst nur ganz am Anfang von OnTick einer Variablen des Typs MqlDateTime die aktuelle Zeit zuweisen und dann sofort aus OnTick() zurückkehren, wenn zur Stunde und Minute nicht gehandelt werden soll
- www.mql5.com
Klar geht das. Wenn ich Funktionen mit bestimmten Fähigkeiten suche mach ich das meist hier: https://www.mql5.com/de/docs/function_indices.
Man kann aber auch die PDF-Datei nehmen und die nach Schlüsselworten durchsuchen. Beides ist schneller als eine Antwort hier.
add 1)
Such (Ctrl+F) da mal nach "PositionsTotal".
Dann lies weiter unten unter Eigenschaften der Positionen.
In einer Schleife über alle Positionen dann den höchsten Gewinn finden.
add 2)
Du musst nur ganz am Anfang von OnTick einer Variablen des Typs MqlDateTime die aktuelle Zeit zuweisen und dann sofort aus OnTick() zurückkehren, wenn zur Stunde und Minute nicht gehandelt werden soll
Hallo Carl,
vielen Dank für deine schnelle Antwort. Ich habe mir die "PositionsTotal" und die Eigenschaften angeschaut. Aber so richtig verstehe ich das nicht. Wie gesagt, ich habe von dieser Programmiersprache wenig bis keine Ahnung bis jetzt.
Im Internet habe ich folgende Zeilen gefunden die den höchsten Profit einer Position anzeigen soll. Der Code funktioniert bei mir aber nicht.
void OnTick()
{
{
int i = PositionsTotal();
while(i-->0)
{
ulong position_ticket=PositionGetTicket(i);// das Ticket der Position
PositionSelectByTicket(position_ticket);
string position_symbol=PositionGetString(POSITION_SYMBOL); // Symbol
double PositionProfit = PositionGetDouble(POSITION_PROFIT);
if(position_symbol==Währung
PositionProfit > hprofit
)
{
Ticket=position_ticket;
}
}
return(Ticket);
}
Comment(Ticket);
Als globale Variablen gibts dann noch:
ulong HighestProfit(const string symbol, const int MagicNumber); //Gewinn der Gesamtposition
double hprofit = DBL_MIN;
ulong Ticket = 0;
input string Währung = "BTCUSD"
Beim Komplilieren bekomme ich dann 1 Fehler:
"´return´- ´void´funktion retruns a value
Bin ich auf dem kompletten Holzweg?
VG Simon
Hallo Carl,
vielen Dank für deine schnelle Antwort. Ich habe mir die "PositionsTotal" und die Eigenschaften angeschaut. Aber so richtig verstehe ich das nicht. Wie gesagt, ich habe von dieser Programmiersprache wenig bis keine Ahnung bis jetzt.
Im Internet habe ich folgende Zeilen gefunden die den höchsten Profit einer Position anzeigen soll. Der Code funktioniert bei mir aber nicht.
void OnTick()
{
{
int i = PositionsTotal();
while(i-->0)
{
ulong position_ticket=PositionGetTicket(i);// das Ticket der Position
PositionSelectByTicket(position_ticket);
string position_symbol=PositionGetString(POSITION_SYMBOL); // Symbol
double PositionProfit = PositionGetDouble(POSITION_PROFIT);
if(position_symbol==Währung
PositionProfit > hprofit
)
{
Ticket=position_ticket;
}
}
return(Ticket);
}
Comment(Ticket);
Als globale Variablen gibts dann noch:
ulong HighestProfit(const string symbol, const int MagicNumber); //Gewinn der Gesamtposition
double hprofit = DBL_MIN;
ulong Ticket = 0;
input string Währung = "BTCUSD"
Beim Komplilieren bekomme ich dann 1 Fehler:
"´return´- ´void´funktion retruns a value
Bin ich auf dem kompletten Holzweg?
VG Simon
- Wenn Du Code postest, bitte als Code formatiert (Alt+S oder das Icon </> aus der Eiditierzeile).
- Schau die in der Refenerenz die Bedeutung von OnTick an: Kursor auf OnTick und dann F1 drücken.
- Lies mal das hier:
https://www.mql5.com/de/articles/496 // Quickstart for newbies
https://www.mql5.com/de/articles/211 // Orders, Positions und Abschlüsse in MetaTrader 5
- www.mql5.com
Hallo zusammen,
ich bin absoluter Neuling bei MQL5 und möchte eine Strategie testen. Dazu schreibe ich mir einen EA. Dank YT bin ich schon recht weit. Nur habe ich keine Ahnung wie ich folgende Bedingungen an den EA weitergeben kann.
1) Bei jeder neuer Kerze soll er prüfen ob er eine gewisse Anzahl laufenden Positionen hat. Ist dies der Fall, soll er die Position mit dem höchsten Profit schließen. Wie kann ich jetzt herausfinden welche Position den höchsten Profit im Moment hat?
2) Ich möchte, dass der EA nur in einem bestimmten Zeitraum arbeitet. Nachts soll er nicht handeln. Wie kann ich An/Aus Zeiten erstellen?
Ich würde mich freuen wenn mir jemand helfen kann. Und wirklich, ich habe wenig Ahnung. Habe früher nur mit VB programmiert. Aber auch nur als Hobby...
VG Simon
So grob ist das erstmal ein Ansatz für dich.
#include <Trade/trade.mqh> CTrade tr; int cnt = 0; int OnInit() { tr.Buy(0.1,"EURUSD",0,0,0); tr.Buy(0.2,"EURUSD",0,0,0); tr.Buy(0.3,"EURUSD",0,0,0); return(INIT_SUCCEEDED); } void OnTick() { cnt = cnt + 1; ulong ticket = GetTicketHighestPos(); if (!fmod(cnt,500)) { printf("Ticket: %s",(string)ticket); } } ulong GetTicketHighestPos() { int i = PositionsTotal(); double hprofit = 0; ulong Ticket = 0; while(i-->0) { ulong position_ticket=PositionGetTicket(i);// das Ticket der Position PositionSelectByTicket(position_ticket); string position_symbol=PositionGetString(POSITION_SYMBOL); // Symbol double PositionProfit = PositionGetDouble(POSITION_PROFIT); if(position_symbol=="EURUSD" && PositionProfit > hprofit) { Ticket=position_ticket; hprofit = PositionProfit; } } return(Ticket); }
So grob ist das erstmal ein Ansatz für dich.
- Freie Handelsapplikationen
- Über 8.000 Signale zum Kopieren
- Wirtschaftsnachrichten für die Lage an den Finanzmärkte
Sie stimmen der Website-Richtlinie und den Nutzungsbedingungen zu.
Hallo zusammen,
ich bin absoluter Neuling bei MQL5 und möchte eine Strategie testen. Dazu schreibe ich mir einen EA. Dank YT bin ich schon recht weit. Nur habe ich keine Ahnung wie ich folgende Bedingungen an den EA weitergeben kann.
1) Bei jeder neuer Kerze soll er prüfen ob er eine gewisse Anzahl laufenden Positionen hat. Ist dies der Fall, soll er die Position mit dem höchsten Profit schließen. Wie kann ich jetzt herausfinden welche Position den höchsten Profit im Moment hat?
2) Ich möchte, dass der EA nur in einem bestimmten Zeitraum arbeitet. Nachts soll er nicht handeln. Wie kann ich An/Aus Zeiten erstellen?
Ich würde mich freuen wenn mir jemand helfen kann. Und wirklich, ich habe wenig Ahnung. Habe früher nur mit VB programmiert. Aber auch nur als Hobby...
VG Simon