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

 

Guten Tag.

Können Sie mir sagen, wie ich den richtigen Balken nach Datum und Uhrzeit finden kann, ohne alle Balken einzeln durchgehen zu müssen?

 
Sergey:

Guten Tag.

Können Sie mir sagen, wie ich den richtigen Balken nach Datum und Uhrzeit finden kann, ohne alle Balken einzeln durchgehen zu müssen?


Lesen Sie mehr über iBarShift
 

int TotalPos=-1;

void start()

{
//der Rest des Codes

//--
if(OrdersTotal()!=TotalPos) { // nicht jeden Tick foltern
for(int i=OrdersHistoryTotal()-1; i>=0; i--) {
if(OrderSelect(i, SELECT_BY_POS, MODE_HISTORY)) {
if(OrderSymbol()==Symbol() && OrderType()<=1) {
Geschichte();


}
}}} TotalPos=OrdersTotal(); // Menge merken
//--
}



void Geschichte() {
string Ticket=(string)OrderTicket();
color col=Red;
if(OrderType()==0)col=Blue;
datetime a=OrderOpenTime();
double b=OrderOpenPrice();
datetime c=OrderCloseTime();
double d=OrderClosePrice();
double prSep=OrderProfit()+OrderCommission()+OrderSwap();
double prAll=0;
int cn=0;
string hTicket;
for(int i=OrdersHistoryTotal()-1; i>=0; i--) {
if(OrderSelect(i, SELECT_BY_POS, MODE_HISTORY)) {
if(OrderSymbol()==Symbol() && OrderType()<=1) {
datetime ct=OrderCloseTime();
// 60 Sekunden Unterschied zwischen dem Abschluss des ersten und des letzten Auftrags im Raster
if(c<=ct+60 && c>=ct-60) {
prAll+=OrderProfit()+OrderCommission()+OrderSwap();
hTicket=(string)OrderTicket();
cn++;
}
}}}
ObjectCreate(Ticket+"Open",OBJ_ARROW,0,a,b);
ObjectSet(Ticket+"Open",OBJPROP_COLOR,col);
ObjectSet(Ticket+"Open",OBJPROP_ARROWCODE,1);

ObjectCreate(Ticket+"Line",OBJ_TREND,0,a,b,c,d);
ObjectSet(Ticket+"Line",OBJPROP_COLOR,col);
ObjectSet(Ticket+"Line",OBJPROP_WIDTH,1);
ObjectSet(Ticket+"Line",OBJPROP_STYLE,STYLE_DOT);
ObjectSet(Ticket+"Line",OBJPROP_RAY,0);

ObjectCreate(Ticket+"Close",OBJ_ARROW,0,c,d);
ObjectSet(Ticket+"Close",OBJPROP_COLOR,Green);
ObjectSet(Ticket+"Close",OBJPROP_ARROWCODE,3);

Ticket=cn>1?hTicket:Ticket;
ObjectCreate(Ticket+"Profit",OBJ_TEXT,0,c,d);
ObjectSet(Ticket+"Profit",OBJPROP_ANCHOR,0);
ObjectSetText(Ticket+"Gewinn",DoubleToString(prAll,2),10, "Arial",White);
ObjectSet(Ticket+"Gewinn",OBJPROP_PRICE1,d);
ObjectSet(Ticket+"Gewinn",OBJPROP_TIME1,c+Period()*60*2);
}

was dem Code dieser Funktion hinzuzufügen ist, um an diesen Stellen des Gewerbes eine waagerechte Linie zu ziehen

Koordinate von den Gewerben zum Rand des Diagramms Offset

 

Bitte um Hilfe beim Einlesen einer .crv-Datei

hat den folgenden Eintrag:

2010.03.18 01:35:00;1.37409;1.37119

wie man Code schreibt, um jeden Wert separat in einer Variablen zu erhalten

 
missha32:

Bitte um Hilfe beim Einlesen einer .crv-Datei

hat den folgenden Eintrag :

2010.03.18 01:35:00;1.37409;1.37119

wie man Code schreibt, um jeden Wert separat in einer Variablen zu erhalten

Lesen/studieren Sie hier.
Основы программирования на MQL5: Файлы
Основы программирования на MQL5: Файлы
  • 2016.09.28
  • Dmitry Fedoseev
  • www.mql5.com
Статья-практикум по работе с файлами в MQL5. Читайте, выполняйте несложные задания, и к концу статьи вы обретете не только теоретические знания, но и практические навыки по работе с файлами в MQL5.
 
Alexander Antoshkin:

int TotalPos=-1;

void start()

{
//der Rest des Codes

//--
if(OrdersTotal()!=TotalPos) { // nicht jeden Tick foltern
for(int i=OrdersHistoryTotal()-1; i>=0; i--) {
if(OrderSelect(i, SELECT_BY_POS, MODE_HISTORY)) {
if(OrderSymbol()==Symbol() && OrderType()<=1) {
Geschichte();


}
}}} TotalPos=OrdersTotal(); // Menge merken
//--
}



void Geschichte() {
string Ticket=(string)OrderTicket();
color col=Red;
if(OrderType()==0)col=Blue;
datetime a=OrderOpenTime();
double b=OrderOpenPrice();
datetime c=OrderCloseTime();
double d=OrderClosePrice();
double prSep=OrderProfit()+OrderCommission()+OrderSwap();
double prAll=0;
int cn=0;
string hTicket;
for(int i=OrdersHistoryTotal()-1; i>=0; i--) {
if(OrderSelect(i, SELECT_BY_POS, MODE_HISTORY)) {
if(OrderSymbol()==Symbol() && OrderType()<=1) {
datetime ct=OrderCloseTime();
// 60 Sekunden Unterschied zwischen dem Abschluss des ersten und des letzten Auftrags im Raster
if(c<=ct+60 && c>=ct-60) {
prAll+=OrderProfit()+OrderCommission()+OrderSwap();
hTicket=(string)OrderTicket();
cn++;
}
}}}
ObjectCreate(Ticket+"Open",OBJ_ARROW,0,a,b);
ObjectSet(Ticket+"Open",OBJPROP_COLOR,col);
ObjectSet(Ticket+"Open",OBJPROP_ARROWCODE,1);

ObjectCreate(Ticket+"Line",OBJ_TREND,0,a,b,c,d);
ObjectSet(Ticket+"Line",OBJPROP_COLOR,col);
ObjectSet(Ticket+"Line",OBJPROP_WIDTH,1);
ObjectSet(Ticket+"Line",OBJPROP_STYLE,STYLE_DOT);
ObjectSet(Ticket+"Line",OBJPROP_RAY,0);

ObjectCreate(Ticket+"Close",OBJ_ARROW,0,c,d);
ObjectSet(Ticket+"Close",OBJPROP_COLOR,Green);
ObjectSet(Ticket+"Close",OBJPROP_ARROWCODE,3);

Ticket=cn>1?hTicket:Ticket;
ObjectCreate(Ticket+"Profit",OBJ_TEXT,0,c,d);
ObjectSet(Ticket+"Profit",OBJPROP_ANCHOR,0);
ObjectSetText(Ticket+"Gewinn",DoubleToString(prAll,2),10, "Arial",White);
ObjectSet(Ticket+"Gewinn",OBJPROP_PRICE1,d);
ObjectSet(Ticket+"Gewinn",OBJPROP_TIME1,c+Period()*60*2);
}

was dem Code dieser Funktion hinzuzufügen ist, um an diesen Stellen des Gewerbes eine waagerechte Linie zu ziehen

Koordinate von den Gewerben zum Rand des Diagramms Offset

etwa so:

string level="Level"+IntegerToString(iTime(_Symbol,iBarShift(OrderCloseTime())); // ид.уровня - по времени бара (!! не по тикету)

if (ObjectFind(level)‌==-1) {

  // гор.вектора нет - видимо первый ордер из закрытых на баре

  // сделать горизонтальную линию‌

  ObjectCreate(0,level,OBJ_TREND,0,OrderCloseTime(),OrderClosePrice(),OrderCloseTime()+PeriodSeconds(_Period)*3,OrderClosePrice);

 // указывающую только вправо‌

  ObjectSetInteger(level,‌OBJPROP_RAY,1);

  ObjectSetInteger(level,OBJPROP_RAYLEFT,0);

‌ // украсить её как-то :-)

 ObjectSetInteger(level,OBJPROP_‌COLOR,....)

 ....‌

} else {

  // гор.уровень есть - значит были ордера закрытые на этом баре

  // по фантазии - обновить метки/корректировать уровень/etc‌

}‌

 

Guten Tag!

Was sind die Gründe dafür, dass das Terminal keinen Roboter sieht? Es wurde von einem lokalen Programmierer geschrieben. Die anderen Roboter sind teilweise sichtbar und teilweise nicht.

 
Serg_72:

Guten Tag!

Was sind die Gründe dafür, dass das Terminal keinen Roboter sieht? Es wurde von einem lokalen Programmierer geschrieben. Die anderen Roboter sind teilweise sichtbar und teilweise nicht.

Und der "lokale Programmierer" kann Ihnen nicht sagen, warum Sie seinen Roboter nicht laufen lassen können?
 

Guten Abend!

Bitte helfen Sie mir, diesen Code zu schreiben, denn ich habe das Gefühl, dass ich es nicht selbst tun kann:

Wenn ich einen EA auf EURUSD laufen lasse, sollte ich zwei ausstehende Aufträge platzieren, wenn ich keine offenen/ausstehenden Aufträge für dieses Paar habe,

Wenn einer von ihnen ausgelöst wird, wird ein anderer nicht angezeigt, d.h. die Gesamtsumme aller schwebenden Aufträge für das Paar sollte 2 nicht überschreiten und schwebende/offene Aufträge, die bereits für andere Paare angezeigt werden, sollten nicht berücksichtigt werden.

Ich habe mir schon den Kopf zerbrochen, erst platziert er gar nichts, dann platziert er jedes Häkchen.

Dafür bin ich sehr dankbar.

Ich werde dafür sehr dankbar sein.

 
Serg_72:

Guten Tag!

Was sind die Gründe dafür, dass das Terminal keinen Roboter sieht? Es wurde von einem lokalen Programmierer geschrieben. Die anderen Roboter sind teilweise sichtbar und teilweise nicht.

Der Roboter sollte sich im Ordner "experts" befinden und in der Form *.ex4 (*.ex5 für 5) vorliegen.
Im Terminal - Menü "Datei/Datenordner öffnen" dann "MQL4/Experts".

Und der *.mq4 *.mq5-Quellcode lässt sich nicht starten - er muss erst kompiliert werden.

Und in der Zwischenzeit reißen Sie dem Programmierer den Kopf ab, der Ihnen nicht gesagt hat, wie Sie sein Produkt benutzen sollen.

Grund der Beschwerde: