[Archiv!] Jede Anfängerfrage, um das Forum nicht zu überladen. Fachleute, gehen Sie nicht daran vorbei. Könnte nirgendwo ohne dich hingehen - 2. - Seite 147

 

Fachleute kommen nicht vorbei, sie brauchen Ihre Hilfe. Bot öffnet Verkaufsposition, dann sollte diese Position unten geschlossen werden, siehe Code und wo Verkaufsposition geschlossen werden sollte, sollte Kaufposition geöffnet werden, Anzahl der offenen Positionen sollte 1 sein (OrdersTotal()). Die Frage ist, wie man so etwas wie eine Warteschlange für die Auftragsausführung erstellen kann: zuerst sollte eine Verkaufsposition geschlossen und dann eine Kaufposition eröffnet werden, und die Anzahl der offenen Positionen sollte gleich 1 sein.

OrderSend(Symbol(),OP_BUY,Lots,Ask,4,0,0,"",0,0,Green);
    for(cnt=0;cnt<total;cnt++)
     {
      OrderSelect(cnt, SELECT_BY_POS, MODE_TRADES);
         if(OrderType()==OP_SELL)   // long position is opened
           {
                 OrderClose(OrderTicket(),OrderLots(),Ask,4,Violet); // close position
                }
    }
 
 
eddy:
Ich meine, dass sie nur auf einen Puffer und nicht auf eine externe Variable gesetzt wird.

verwenden Sie also diesen indicator_colorN

 
eddy:
Ich meine, dass es nur auf einen Puffer gesetzt wird, nicht auf eine externe Variable
Mit MQL ist das nicht möglich. Aber wenn Sie es brauchen, können Sie es natürlich tun))))
 
alsu:
Das ist in MQL nicht möglich. Aber wenn es SEHR, SEHR notwendig ist, kann es natürlich gemacht werden)))

Sie wissen nicht einmal, was Sie brauchen...

Ich bin sicher, dass Eddys Bedürfnisse durch MQL gelöst werden können.

 
sergeev:

Sie wissen nicht einmal, was Sie brauchen...

Ich bin sicher, dass die Bedürfnisse von eddy durch MQLs gelöst werden.

Nein, ich habe es verstanden... er muss die Rendering-Farbe aus dem Indikatorpuffer im Indikatorcode erhalten (richtig, Eddy?). Soweit ich weiß, ist das in MQL unmöglich.
 
alsu:
Nein, ich habe es verstanden... er muss die Zeichenfarbe aus dem Indikatorpuffer programmatisch im Indikatorcode abrufen (richtig, Eddy?). Soweit ich weiß, ist dies in MQL nicht möglich.
ist es möglich.
verwenden Sie einfach den Parameter indicator_colorN. Man kann sagen, es ist die gleiche Variable.
 
sergeev:
vielleicht.
verwenden Sie einfach den Parameter indicator_colorN. Man kann sagen, dass dies dieselbe Variable ist.

Neeeeiiin.

Angenommen, wir haben einen Indikator, der eine Linie zeichnet. Angenommen, wir wollen mit diesem Indikator einen Kreis zeichnen. Aber wir wollen, dass sie grün ist, wenn die Indikatorlinie grün ist, und rot, wenn sie rot ist.

 

Meine Herren Programmierer, bitte beraten Sie mich, wie man alle Aufträge korrekt schließt. Nachstehend finden Sie das zu lösende Problem und die Ratschläge, die Ihnen gegeben wurden. Alles in allem funktioniert alles, außer dem Schließen von Aufträgen und dem Setzen von Flaggen, die den Handel verbieten.

Ich bin sicher, dass es unter Ihnen erfahrene Programmierer gibt. Bitte helfen Sie mir, die folgenden Bedingungen in meinem Expert Advisor zu schreiben:
1) С+=Gewinn bei Order(1)+Gewinn bei Order(2)+...+Gewinn bei Order(n) - Gesamtgewinn bei allen offenen Orders in der aktuellen Zeit.
2) C-=(c+)Verlust bei Auftrag(1)+Verlust bei Auftrag(2)+...+Verlust bei Auftrag(n) - Summe der Verluste bei allen offenen Aufträgen zum aktuellen Zeitpunkt.
3) X=(c+)/(c-) - das aktuelle Gewinn/Verlust-Verhältnis
4) Wenn das Eigenkapital (S) multipliziert mit dem Gewinn/Verlust-Verhältnis (X) höher ist als der festgelegte Sollwert (K), können Sie handeln. (Wenn S*X>K, OK)
5) Wenn das Eigenkapital (S) multipliziert mit dem Gewinn/Verlust-Verhältnis (X) kleiner ist als das definierte Ziel (K), dann werden alle offenen Aufträge zu den aktuellen Kursen geschlossen und der Expert Advisor wird deaktiviert, bis er manuell wieder aktiviert wird. (S*X<K, alle Aufträge schließen und aus)

Dies scheint mir ein guter Schutz gegen Geldverluste zu sein.

Es sieht so aus. Erstellen wir zwei Funktionen, die Gewinn und Verlust zählen:
double CalculateProfitTotal()
{
double Result = 0;
for(int i = 0; i < OrdersTotal(); i++)
if(OrderSelect(i, SELECT_BY_POS, MODE_TRADES))
if(OrderProfit() > 0)
Result = Result + OrderProfit();
return(Result);
}

double CalculateLossTotal()
{
double Ergebnis = 0;
for(int i = 0; i < OrdersTotal(); i++)
if(OrderSelect(i, SELECT_BY_POS, MODE_TRADES))
if(OrderProfit() < 0)
Ergebnis = Ergebnis + MathAbs(OrderProfit());
return(Ergebnis);
}

Schreiben Sie in die Funktion start() Ihre Bedingungen.
Zum Beispiel:
X = CalculateProfitTotal() / CalculateLossTotal();
if(AccountEquity() * X < K)
{
//Wo wir alle Aufträge schließen und
//Setzen der Flagge, die den Handel verbietet
return(0);
}

 
alsu:

Angenommen, wir wollen einen Kreis als Indikator zeichnen. Aber wir wollen, dass sie grün ist, wenn die Indikatorlinie grün ist

Ich möchte also ein Objekt in Blau erstellen)

sergeev, alsoist indicator_color1 eine Farbvariable?