[ARCHIV!] Alle Fragen von Anfängern, um das Forum nicht zu überladen. Fachleute, gehen Sie nicht vorbei. Ohne dich kann ich nirgendwo hingehen - 4. - Seite 52

 
FAQ:

Völlig unabhängig davon. Vielleicht hängt es von etwas anderem ab, aber nicht von Zecken - ich habe es überprüft. Im Allgemeinen hat der Neubau den Betrieb des Terminals im Hinblick auf den EA-Fluss völlig verändert. Jetzt führt der EA in der Schleife eindeutig alle Iterationen der Schleife durch, unabhängig von der Terminaloperation, in alten Versionen gab es Verzögerungen beim Laden des Hauptthreads. Übrigens wurde die von der EA-Schleife verbrauchte CPU-Ressourcenmenge drastisch reduziert.
Ich hatte auch ein ähnliches Problem mit dem Terminal - es gab keine Schleifen - es sah so aus, als ob das Terminal mit der Verarbeitung von etwas beschäftigt war... Als ich wiederholt versuchte, das Fenster Eigenschaften mit der Maus aufzurufen - nach 5-8 Versuchen - öffnete es sich erfolgreich...
 
Roman.:
Ich hatte auch ein ähnliches Problem mit dem Terminal - es gab keine Schleife - es sah so aus, als ob das Terminal mit der Verarbeitung von etwas beschäftigt wäre... als ich wiederholt versuchte, das Fenster Eigenschaften mit der Maus aufzurufen - nach 5-8 Versuchen - öffnete es sich erfolgreich...

Möglicherweise, aber das hat nichts mit den Zecken zu tun.
 
FAQ:

Vielleicht, aber das hat nichts mit Tics zu tun.

Ich verstehe.
 

Ich hoffe, ich bin beim richtigen Thema ; )

Es ist eher eine nubische Frage, aber ich hänge jetzt schon eine Weile daran.

int total=OrdersTotal();

int Q,W;
wenn (Gesamt == Q + W)

und dann öffne ich mehrere verschiedene Aufträge. Einige stehen unter Q, andere unter W. Wie kann man einen Auftrag (z.B. wenn er geschlossen wird) in Q ändern, so dass er Q wieder öffnet... Wenn sie beide geschlossen sind - Q und W -, werden sie nur wieder geöffnet, wenn sie beide geschlossen sind.

 
Keda:

Ich hoffe, ich bin beim richtigen Thema ; )

Es ist eher eine nubische Frage, aber ich hänge jetzt schon eine Weile daran.

int total=OrdersTotal();

int Q,W;
wenn (Gesamt == Q + W)

und dann eröffne ich mehrere verschiedene Aufträge. Einige stehen unter Q, andere unter W. Wie kann man einen Auftrag (z.B. wenn er geschlossen wird) in Q ändern, so dass er Q wieder öffnet... Ansonsten werden sie nur dann wieder geöffnet, wenn Q und W beide geschlossen sind.


Die Variablen Q und W sind - soweit man das erkennen kann - ganze Zahlen.

Dann werden die Ordnungen einiger ganzer Zahlen geöffnet (wie meinen Sie das?), und Sie fragen, wie man das macht, wenn eine Ordnung (einer ganzen Zahl) geschlossen ist, um eine andere ganze Zahl wieder zu öffnen. Jetzt öffnen sie sich, wenn zwei ganze schließen (welche was?).

Die Frage ist super. Sie haben ganz richtig gesagt: "Die Frage ist ziemlich heikel". Genau: ein Kernpunkt des Fragenstellens. Seien Sie kein Noubet, wenn es darum geht, Fragen zu stellen, trainieren Sie, sie so zu stellen, dass Sie verstanden werden.

In der Zwischenzeit sollten Sie sich hier informieren.

 

Aus der Frage geht hervor, dass die Person, die sie stellt, völlig neu in mql4 ist. Danke für die Antwort, jetzt verstehe ich, was das Problem ist.

Ich habe versucht, sie zu verstehen, und war noch mehr verwirrt. Ich verwende nur 2 Lose. 2 verschiedene Lose werden eröffnet. Sie sollten zusammenarbeiten. Wie kann ich, wenn sich eine davon schließt, die geschlossene wieder öffnen? Wenn ein Los geschlossen ist, arbeitet das andere mit. Nur wenn beide Lose geschlossen sind, werden 2 Lose geöffnet. Ich wäre für einen Ratschlag dankbar.

 
yosuf:
Das Internet fällt oft aus. Gibt es keine Möglichkeit, es programmatisch zu automatisieren, um es wieder zum Laufen zu bringen? Oder was ist in dieser Richtung bekannt? Gibt es eine Möglichkeit, zwei oder mehr ISPs gleichzeitig, also parallel, mit Strom zu versorgen? Ich danke Ihnen im Voraus.
Es ist einfacher und sicherer für Ihr Geld, den VPS-Service zu nutzen.
 
Keda:

Aus der Frage geht hervor, dass die Person, die sie stellt, völlig neu in mql4 ist. Danke für die Antwort, jetzt verstehe ich, was das Problem ist.

Ich habe versucht, sie zu verstehen, und war noch mehr verwirrt. Ich verwende nur 2 Lose. 2 verschiedene Lose werden eröffnet. Sie sollten zusammenarbeiten. Wie kann ich, wenn sich eine davon schließt, die geschlossene wieder öffnen? Wenn ein Los geschlossen ist, arbeitet das andere mit. Nur wenn beide Lose geschlossen sind, werden 2 Lose geöffnet. Ich wäre für einen Ratschlag dankbar.


Jetzt verstehe ich. Hier ist eine grobe Schätzung:

int    Magic=123;

double Lot_Q=0.01;
double Lot_W=0.05;

bool   Flag_Q=False;
bool   Flag_W=False;


//Просматриваем все открытые ордера

for(int i = OrdersTotal() - 1; i >= 0; i--) 
  {
   OrderSelect(i, SELECT_BY_POS, MODE_TRADES);
   if(OrderSymbol() == Symbol() && OrderMagicNumber() == Magic)//Если это ордер данного символа и магика (т.е. открыт данным советником)
     {
      if(OrderLots()==Lot_Q) Flag_Q=True;//Если ордер с объемом Q есть среди открытых, присваиваем флагу Q истину.
      if(OrderLots()==Lot_W) Flag_W=True;//Если ордер с объемом W есть среди открытых, присваиваем флагу W истину.
     }
   }


//Проверяем условия нужности открытия - индикаторы, другие сигналы, и что там у Вас еще. И если есть сигнал

if(Flag_Q==False)//Только если ордер Q не открыт в настоящий момент
  {
   //Открытие ордера Q
  }

if(Flag_W==False)//Только если ордер W не открыт в настоящий момент
  {
   //Открытие ордера W
  }
 
Na toll, das ist es. Dankeschön
 

Hallo! Können Sie mir sagen, wie ich das kompakter schreiben kann?

        for (i=4; i<7; i++){
        sum+=GetPrcD1(symb[i]);
        Content[5][1]=DoubleToStr(sum/3,3);
        }
        
        for (i=7; i<10; i++){
        sum+=GetPrcD1(symb[i]);
        Content[6][1]=DoubleToStr(sum/3,3);
        }

        for (i=10; i<13; i++){
        sum+=GetPrcD1(symb[i]);
        Content[7][1]=DoubleToStr(sum/3,3);
        }

        for (i=13; i<16; i++){
        sum+=GetPrcD1(symb[i]);
        Content[8][1]=DoubleToStr(sum/3,3);
        }

        for (i=16; i<19; i++){
        sum+=GetPrcD1(symb[i]);
        Content[9][1]=DoubleToStr(sum/3,3);
        }
Grund der Beschwerde: