Jede Anfängerfrage, um das Forum nicht zu überladen. Fachleute, gehen Sie nicht vorbei. Nirgendwo ohne dich - 6. - Seite 976

 
AlexeyVik:
Und Ihre Mutter erlaubt Ihnen nicht, die Dokumentation zu lesen? Zum Beispiel SendMail

Ja, diese Funktion kenne ich natürlich, ich meine - eine Registerkarte im Fenster des Terminals, (Handel, Vermögen, Konto-Geschichte, Nachrichten, Alarme, Mail, etc.), wenn Mail kommt es (in der internen Mail-Terminal) SMS oder E-Mail (zB Nachrichten über Server-Neustart, etc.) zu erhalten?

 
optionany:

Ja, diese Funktion kenne ich natürlich, ich meine - eine Registerkarte im Fenster des Terminals, (Handel, Vermögen, Konto-Geschichte, Nachrichten, Alarme, Mail, etc.), wenn die E-Mail kommt es (in der internen Mail-Terminal) SMS oder E-Mail (zB Nachrichten über den Neustart des Servers, etc.) zu erhalten?

Formulieren Sie die Frage also so, wie Sie es für richtig halten.

Wenn Sie klar denken, denken Sie auch klar...

 

Hallo. Ich kann nicht verstehen, was mein Fehler ist, oder vielmehr, was der Fehler in diesem Block in meinem Programm ist:

//--getrennte Buchführung über offene Aufträge

for(int i=OrdersTotal()-1;i>=0;i--)//OrdersTotal()-1;i>=0;i-- //Schleife der Aufträge
{
OrderSelect(i,SELECT_BY_POS,MODE_TRADES);// Wenn ein Auftrag gefunden wird, dann:
{
if(OrderSymbol()!=Symbol()||OrderMagicNumber()!=Magic) continue;
}

{
if(OrderSymbol()==Symbol()&&OrderMagicNumber()==Magic)
if(OrderType()==OP_BUY)
Total++;
}
return;
}
//---

for(int i=OrdersTotal()-1;i>=0;i--)
{
OrderSelect(i,SELECT_BY_POS,MODE_TRADES);
{
if(OrderSymbol()!=Symbol()||OrderMagicNumber()!=Magic) continue;
}

{
if(OrderSymbol()==Symbol()&&OrderMagicNumber()==Magic)
if(OrderType()==OP_SELL)
Total++;
}
return;
}
//---

Der EA funktioniert stabil im Strategy Tester und auf einem Demokonto, aber beim Kompilieren erzeugt er 2 Warnungen: Der Rückgabewert von 'OrderSelect' sollte überprüft werden, was ich nicht umgehen kann. Wenn es möglich ist, sagen Sie mir bitte, was ich falsch oder unvollständig geschrieben habe.

 
YuryVL:

Hallo. Ich kann nicht verstehen, was mein Fehler ist, oder vielmehr, was der Fehler in diesem Block in meinem Programm ist:

//--getrennte Buchführung über offene Aufträge

for(int i=OrdersTotal()-1;i>=0;i--)//OrdersTotal()-1;i>=0;i-- //Schleife der Aufträge
{
OrderSelect(i,SELECT_BY_POS,MODE_TRADES);// Wenn ein Auftrag gefunden wird, dann:
{
if(OrderSymbol()!=Symbol()||OrderMagicNumber()!=Magic) continue;
}

{
if(OrderSymbol()==Symbol()&&OrderMagicNumber()==Magic)
if(OrderType()==OP_BUY)
Total++;
}
return;
}
//---

for(int i=OrdersTotal()-1;i>=0;i--)
{
OrderSelect(i,SELECT_BY_POS,MODE_TRADES);
{
if(OrderSymbol()!=Symbol()||OrderMagicNumber()!=Magic) continue;
}

{
if(OrderSymbol()==Symbol()&&OrderMagicNumber()==Magic)
if(OrderType()==OP_SELL)
Total++;
}
return;
}
//---

Der EA funktioniert stabil im Strategy Tester und auf einem Demokonto, aber beim Kompilieren zeigt er eine Warnung an: Der Rückgabewert von 'OrderSelect' sollte überprüft werden, was ich nicht umgehen kann. Wenn es möglich ist, sagen Sie mir bitte, was ich falsch oder unvollständig geschrieben habe.


SRS zum Einfügen von Code! Und warum 2 Schleifen, nach der Prüfung, ob nein, wenn ja und Total sollte beide Arten zu lesen und im Speicher für jede getrennt zu halten? Das wird niemand verstehen! Man muss eine Logik aufbauen, die jedem klar macht, was man will, dann versteht es auch der Compiler!
 
YuryVL:

Hallo. Ich kann nicht verstehen, was mein Fehler oder vielmehr der Mangel dieses Blocks in meinem Programm ist:

...

1) Um den Code hier korrekt einzufügen, klicken Sie auf SRC und kopieren Sie dann Ihren Code in das Feld (Bild unten).


2) Versuchen Sie diesen Code:

int Total_BUY=0, Total_SELL=0; // новые переменные как счетчики ордеров

//---Раздельный учёт открытых ордеров
for(int i=OrdersTotal()-1; i>=0; i--) // Цикл перебора ордеров
  {
   // OrderSelect() надо выбирать с помощью if
   if(OrderSelect(i,SELECT_BY_POS,MODE_TRADES)); // Если найден ордер, то:
     {
      if(OrderSymbol()!=Symbol() || OrderMagicNumber()!=Magic) continue;
      else
        {
         if(OrderType()==OP_BUY)  Total_BUY++;  // считает открытые позиции на покупку
         if(OrderType()==OP_SELL) Total_SELL++; // считает открытые позиции на продажу
        }
     }
  }
 

Wie erhalte ich eine Warnmeldung?

Alert(OrderOpenPrice());

den Auftragseröffnungskurs mit 5 Dezimalstellen anzeigen? NormalizeDouble(OrderOpenPrice(),Digits) hilft nicht(der Auftrag ist vorselektiert).

 
JoinDoe:

Wie erhalte ich eine Warnmeldung?

den Auftragseröffnungskurs mit 5 Dezimalstellen anzeigen? NormalizeDouble(OrderOpenPrice(),Digits) hilft nicht(der Auftrag ist vorselektiert).

Alert(DoubleToString(OrderOpenPrice(),Digits));
 
Leo59:
Hallo meine Liebe!

Bitte helfen Sie bei der Übersetzung des Algorithmus zur Bestimmung der Koordinaten des Schnittpunkts zweier Segmente

Aus dem Artikel:

Es ist ganz einfach!
x1,y1 und x2,y2 sind die Koordinaten der Eckpunkte des ersten Segments;
x3,y3 und x4,y4 sind die Koordinaten der Scheitelpunkte des zweiten Segments;

Um den Schnittpunkt zu finden, stellen wir die Gleichungen der Linien auf:
erste Gleichung:
(x-x1)/(x2-x1)=(y-y1)/(y2-y1);
zweite Gleichung
(x-x3)/(x4-x3)=(y-y3)/(y4-y3);
Diese Gleichungen definieren eine Linie, die durch zwei Punkte verläuft, und das ist es, was wir brauchen.
Aus diesen Gleichungen lassen sich x und y mit den folgenden Formeln ermitteln:
x:=((x1*y2-x2*y1)*(x4-x3)-(x3*y4-x4*y3)*(x2-x1))/((y1-y2)*(x4-x3)-(y3-y4)*(x2-x1));
y:=((y3-y4)*x-(x3*y4-x4*y3))/(x4-x3);
Da sich unsere Linien schneiden, haben sie einen gemeinsamen Schnittpunkt mit den Koordinaten (x,y), den wir finden müssen.
Damit der Schnittpunkt zu unseren Liniensegmenten gehört, müssen wir ihn einschränken, d. h. die Bedingung überprüfen:
wenn
(((x1<=x)und(x2>=x)und(x3<=x)und(x4 >=x))oder((y1<=y)und(y2>=y)und(y3<=y) und(y4>=y))
dann gibt es einen Schnittpunkt dieser Segmente, und wenn nicht, gibt es keinen Schnittpunkt.
Sie sollten auch die Parallelität dieser Segmente mit Hilfe von Winkelkoeffizienten überprüfen:
k1:=(x2-x1)/(y2-y1);
k2:=(x4-x3)/(y4-y3);
wobei k1 und k2 die Tangenten des Neigungswinkels der Segmente an die positive Richtung der Achse ОХ sind, wenn k1=k2, dann sind die Segmente parallel, sie haben also keine Schnittpunkte.

Und vielleicht hat jemand ein fertiges Exemplar in den Archiven?


vielleicht
 

Gibt es eine Möglichkeit oder Funktion in MT4, Nachrichten an die interne Terminal-Mail (über Hebelwechsel, Server-Neustart, etc.) per SMS oder E-Mail weiterzuleiten?

P.s eine Registerkarte im Terminalfenster (Handel, Vermögenswerte, Kontohistorie, Nachrichten, Warnungen, MESSAGE usw.)?

 
Hallo liebe Forumsnutzer!

Ich habe begonnen, MQL4 zu studieren und beim Schreiben eines einfachen Indikators bin ich auf ein Problem gestoßen, das ich nicht lösen kann. Der Kern des Problems:

1_Wie finde ich High[i - Ende des Tages], ich habe eine einfache Schleife Close[i]-Open[i+1], ich muss High[i - Ende des Tages] finden. Zum Beispiel von[i],[1],[2] und bis zum Ende des Tages (PERIOD_H1). Ich bin mir nicht sicher, wie ich es machen soll. Es gibt die Funktion "iHigh", aber sie ist etwas anders.

2_ Das ist noch nicht alles, sorry für die Frechheit, es gibt die Funktion "iBars" (gibt die Anzahl der Balken in der Geschichte für ein entsprechendes Symbol und Zeitraum). Können Sie mir bitte sagen, welche Kombination von Funktionen nicht nur die Anzahl der Balken mit Zeit, sagen wir '12:00' oder '15:00' in history(PERIOD_H1), sondern auch wie viele Balken mit Zeit berechnen kann.

Ich habe das ganze Handbuch durchgeblättert, vielleicht habe ich etwas übersehen, aber ich habe nichts Passendes gefunden. Benutzte Suchmaschine, das Ergebnis ist das gleiche. Wenn Sie wissen, wo diese Fragen diskutiert wurden, schicken Sie mir bitte den Link.

Vielen Dank im Voraus!