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

 
evillive:

Und wann sollte dieser Zyklus Ihrer Meinung nach enden?

?

Korrigiert:

if(R==0)

{

 while(true)

 {

  Sleep(30000);

  Alert("Ошибка!");

  DeleteBuy=OrderDelete(OrderTicketBuy);

  DeleteSell=OrderDelete(OrderTicketSell);

  return(1);

 }

}

Auch die Gewinnberechnung.

Ich habe eine Meldung und eine Fehlerbehandlung in die while-Schleife (true) eingefügt. Die Schleife funktioniert, die Nachricht wird geschrieben, keine Fehler. Aber die Bedingung wird nicht erfüllt, die Daten scheinen nicht aktualisiert zu werden.

Dateien:
test3_7.mq4  16 kb
 
CJIeCaPb:

Ich habe eine Meldung und eine Fehlerbehandlung in die while-Schleife (true) eingefügt. Die Schleife funktioniert, die Nachricht wird geschrieben, keine Fehler. Aber die Bedingung wird nicht erfüllt, die Daten werden nicht aktualisiert.

Hier noch ein paar Hinweise.

In diesem Zyklus werden nicht alle Aufträge berücksichtigt; was passiert außerdem, wenn es mehr als einen Auftrag einer Art gibt (z. B. wenn drei By-Stop-Aufträge erteilt werden)?

for(i=1;i<=OrdersTotal();i++)
{
 Alert(i);
 if(OrderSelect(i-1,SELECT_BY_POS)==true)
 {
  if(OrderSymbol()!=Symb)continue;
  if(OrderType()==OP_BUYSTOP)
  {
   OrderTicketBuy=OrderTicket();
   Alert("Buy");
   }
   if(OrderType()==OP_SELLSTOP)
   {
   OrderTicketSell=OrderTicket();
   Alert("Sell");
   }
  }
}


Eigentlich sollte es umgekehrt sein: Zuerst sollten wir eine Reihenfolge wählen, und erst wenn eine Reihenfolge gewählt ist, sollten wir ihren Typ überprüfen und allen möglichen Unsinn darüber machen:

while(OrderType()==OP_BUY)//Buy
{
 RefreshRates();
 
 SelectBuy=OrderSelect(OrderTicketBuy,SELECT_BY_TICKET);
 ...
}
 
//--------------------------------------------------------------------------
//Sell
while(OrderType()==OP_SELL)
{
 RefreshRates();
  
 SelectSell=OrderSelect(OrderTicketSell,SELECT_BY_TICKET);
 ...
}
 


Und in der "sweep-switch-which-type-traits-stoploss", warum genau überall weiter ??? Und wann wird diese Linie ausgeführt werden, in einem und im zweiten Schalter?

    CloseBuy=OrderClose(OrderTicketBuy,Lote,Bid,1); continue;//119
-----
    CloseSell=OrderClose(OrderTicketSell,Lote,Ask,1); continue;//119
 
evillive:


Hier wird zuerst der Auftragstyp betrachtet und dann der Auftrag ausgewählt. Eigentlich sollte es umgekehrt sein, zuerst den Auftrag auswählen und dann, wenn der Auftrag ausgewählt ist, seinen Typ betrachten und sich über ihn lustig machen:

also:

if(R==1)//238

{

 Alert("yes");

 R=0;

 SelectBuy=OrderSelect(OrderTicketBuy,SELECT_BY_TICKET);

}


if(R==2)//245

{

 Alert("yes");

 R=0;

 SelectSell=OrderSelect(OrderTicketSell,SELECT_BY_TICKET);

}

Und in der "scroll-type-tralit-stoploss" (=D. Was gefällt Ihnen nicht? Ich denke, es ist normal, es ist sehr klar. ), warum genau überall??? Und wann wird diese Linie ausgeführt werden, in einem und im zweiten Schalter?

Auf diese Weise wird sie je nach Zustand unterbrochen:

 Timen=OrderCloseTime();

 if(Timen>0)

 {

  DeleteSell=OrderDelete(OrderTicketSell);

  OldProfit=0;

  WarBuy=true;

  break;

 }

Ja, die Unterbrechung wird in der OrderClose-Zeichenkette besser aussehen. Dann müssen wir OrderDelete hinzufügen.

evillive:

Hier noch ein paar Hinweise.

Diese Schleife berücksichtigt nicht alle Aufträge, und was passiert, wenn es mehr Aufträge eines Typs als einen gibt (z.B. wenn drei By-Stop-Aufträge erteilt werden)?

OrdersTotal beginnt bei 1 und OrderSelect bei 0.

Gibt es mehr als einen Auftrag desselben Typs auf 1 Symbol? Nein. Aber ich werde es mir noch einmal ansehen.

Wir brauchen eine ähnliche Bedingung wie diese: "Wenn MA==Preis, dann".

Das reicht aus:

if((MA>Open[0] && MA<Close[0]) || (MA<Open[0] && MA>Open[0]))

P.S.: Frohes neues Jahr!

 
Für manche ist es kein Silvester. Frohes neues Jahr!!!
 

Frohes neues Jahr!

Ich habe vor kurzem mit dem Studium von MQL 4 begonnen und wollte eine Frage stellen:

Ich habe zum Beispiel eine Bedingung für die Eröffnung eines Auftrags:

wenn (Gebot>=SS+5*Punkt)

OrderSend(Symbol(),OP_BUY,Lot,Ask,10,Ask-SL*Point,Ask+TP*Point,NULL,Magic,0,Green);

Die Frage ist: Welche Bedingung muss angegeben werden, um die zweite Order zu eröffnen, wenn die erste Order einen Gewinn von 10 Punkten oder mehr aufweist?

 
lexdemon:

Frohes neues Jahr!

Ich habe vor kurzem mit dem Studium von MQL 4 begonnen und wollte eine Frage stellen:

Ich habe zum Beispiel eine Bedingung für die Eröffnung eines Auftrags:

wenn (Gebot>=SS+5*Punkt)

OrderSend(Symbol(),OP_BUY,Lot,Ask,10,Ask-SL*Point,Ask+TP*Point,NULL,Magic,0,Green);

Die Frage ist: Welche Bedingung muss angegeben werden, um die zweite Order zu öffnen, wenn die erste Order einen Gewinn von 10 Punkten oder mehr aufweist?

Sehen Sie hier, es gibt eine Menge Funktionen für fast alle Fälle.

https://www.mql5.com/ru/forum/131859

 
lexdemon:

Frohes neues Jahr!

Ich habe vor kurzem mit dem Studium von MQL 4 begonnen und wollte eine Frage stellen:

Ich habe zum Beispiel eine Bedingung für die Eröffnung eines Auftrags:

wenn (Gebot>=SS+5*Punkt)

OrderSend(Symbol(),OP_BUY,Lot,Ask,10,Ask-SL*Point,Ask+TP*Point,NULL,Magic,0,Green);

Nun die Frage, welche Bedingungen müssen festgelegt werden, um die zweite Order zu eröffnen, wenn die erste Order einen Gewinn von 10 Punkten oder mehr aufweist?

Vorauswahl der Bestellung OrderSelect (Ticket_first_order, SELECT_BY_TICKET);

if(OrderOpenPrice()+10*Point==Ask)

OrderSend(Symbol(),OP_BUY,Lot,Ask,10,Ask-SL*Point,Ask+TP*Point,NULL,Magic,0,Green);

 
CJIeCaPb

 Нужно условие максимально приближенное к этому: "если MA==цене, то".

Такое  пойдет:

if((MA>Open[0] && MA<Close[0]) || (MA<Open[0] && MA>Open[0]))


Hurra, es scheint zu funktionieren. Ich habe in jede Schleife den Operator "Return" und "O" eingefügt, um unnötige Operationen zu vermeiden.

Ein Problem: Die Aufträge sind umständlich - ich weiß nicht, wie ich die Bedingung formulieren soll.

Dateien:
test3.mq4  16 kb
 

Ich habe einen Trader namens forexstart, wenn es einen Unterschied macht. Das Problem ist, dass ich einen Handelsroboter geschrieben habe, der auf 1-Minuten-Charts arbeitet. es analysiert die Geschichte auf vielen Charts, die Geschichte ist für etwa einen Monat und eine Hälfte und nicht mehr gegeben.

Ich habe einen Handelsroboter, der auf einem Ein-Minuten-Chart läuft. Er analysiert die Historie. Auf vielen Charts ist die Historie für etwa eineinhalb Monate und nicht länger angegeben, obwohl der Stunden-, Tages- und Jahreschart die Historie zeigt.

Wie kann ich damit umgehen?


 
pycha:

Ich habe einen Trader namens forexstart, wenn es einen Unterschied macht. das Problem ist, dass ich einen Roboter, der auf 1-Minuten-Charts arbeitet geschrieben. es analysiert die Geschichte auf vielen Charts und nicht etwas anderes angezeigt.

ich habe einen handelsroboter, der auf dem einminütigen chart läuft. er zeigt die geschichte an. auf vielen charts wird die geschichte für etwa anderthalb monate angegeben und nicht länger, obwohl der stunden-, tages- und jahreschart die geschichte anzeigt. es gibt auch fälle, in denen er zu einem bestimmten datum zurückkehrt und dann abbricht, das spiel geht ein paar monate weiter, obwohl die höheren charts alles wieder anzeigen.

Wie kann ich damit umgehen?


Wenn nach einigen Zyklen des Löschens - Herunterladen des Verlaufs vom Server DC - die Unterbrechungen immer noch da sind, bedeutet dies, dass sie Ihnen den Verlauf geben werden. Googeln Sie Tickstory Lite und bereiten Sie viel Speicherplatz für den Tickverlauf vor, dann füttern Sie den Tester mit diesem Verlauf und Sie haben einen M1 für ein Jahrzehnt oder mehr.
Grund der Beschwerde: