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

 
evillive:



Ich brauche also eine ganze Zahl...
 

Leute, Hilfe wird gebraucht. Die Funktion muss die Hälfte der Aufträge abschließen, beginnend mit dem ältesten. Im ersten Fall werden die Aufträge aus irgendeinem Grund einer nach dem anderen geschlossen, im zweiten Fall beginnen sie in der falschen Reihenfolge zu schließen.

void CloseHalfOrders (int otype)// ф-ция закрытия половины ордеров сетки
{
  int count = 0; double CTbuy = CountTrades(OP_BUY); double CTsell = CountTrades(OP_SELL); 
  for (int i = 0; i<=OrdersTotal;i++)
  {
    if (OrderSelect(i, SELECT_BY_POS,MODE_TRADES))
    {
       if (OrderSymbol()==Symbol() && OrderMagicNumber()==Magic && OrderType() == otype)
       {
         if (otype == OP_BUY)
         { 
           if (count<CTbuy/2 && CTbuy>3 )
           
             OrderClose(OrderTicket(),OrderLots(),Bid,0,Black);
             count++;
             Sleep(1000);
           
         }
       
       
         else if (otype == OP_SELL)
         {
           if (count<CTsell/2 && CTsell>3)
           
           OrderClose(OrderTicket(),OrderLots(),Ask,0,Black);
           count++;
           Sleep(1000);
           
         }
       }
     }
   }
   
 }
 for (int i = OrdersTotal()-1; i>=0; i--)
 
vadynik:

Ich brauche also eine ganze Zahl...
MathRound
 
evillive:
MathRound


dies ist also eine Rundung, die Zahl wird nicht int, sondern bleibt double
 
vadynik:

dies ist also eine Rundung, die Zahl wird nicht int, sondern bleibt double

Und? Gibt es einen grundlegenden Unterschied zwischen 1 und 1,0 für Berechnungen? Das Format ist natürlich double, aber der Wert ist integer.


Eine besonders perverse Variante dann: DoubleToStr und dann StringToInteger

 
vadynik:

Bitte sagen Sie mir, wie ich die Warnung im neuen Compiler entfernen kann

möglicher Datenverlust aufgrund von Typumwandlung

int    SizeB      =MathAbs(Open[1]-Close[1])/Point;

Так помогает 

int    SizeB      =(int) ( MathAbs(Open[1]-Close[1])/Point );

 
Zhunko:



Danke, also keine Vorwarnung, es frisst schon mein Auge)
 

Hallo, ich habe Kim's durchsucht, aber ich kann nichts finden, was mich wissen lässt: Von welchem Auftrag (pending) wurde die Position eröffnet? Aus einem Limitauftrag oder einem Stoppauftrag?

Ich habe versucht, die Preise der letzten geöffneten Bestellung zu vergleichen

if(MathAbs(GetOrderOpenPrice()-LastPrice) <= slip)

mit einer geöffneten Position, aber die ganze Logik ist kaputt. Vielleicht gibt es etwas, das besser geeignet ist? Danke!

 
Trader7777:

Leute, Hilfe wird gebraucht. Die Funktion sollte die Hälfte der Aufträge abschließen, beginnend mit dem ältesten. Im ersten Fall werden die Aufträge aus irgendeinem Grund einer nach dem anderen geschlossen, im zweiten Fall beginnen sie in der falschen Reihenfolge zu schließen.


Es gab eine Frage wie diese, wie man Aufträge schließt, beginnend mit dem ältesten, ein paar Seiten später gibt es eine Antwort und den richtigen Code.


https://www.mql5.com/ru/forum/145455/page406

 
borilunad:

Hallo, ich habe Kim's durchsucht, aber ich kann nichts finden, was mich wissen lässt: Von welchem Auftrag (pending) wurde die Position eröffnet? Aus einem Limitauftrag oder einem Stoppauftrag?

Ich habe versucht, die Preise der letzten geöffneten Bestellung zu vergleichen

mit einer geöffneten Position, aber die ganze Logik ist kaputt. Vielleicht gibt es etwas, das besser geeignet ist? Danke!

Boris. Versuchen Sie, die Kommentare zu den Aufträgen einzutragen - Limit zu Limit, Stop zu Stop. Aus den Kommentaren zu den offenen Stellen können Sie dann ersehen, woher die Beine kommen. Nur eine teilweise Schließung dieser Kommentare löscht sie. Vielleicht kann etwas anderes die Kommentare löschen. Nur gelöschte Positionen werden in der Historie gespeichert. Die, die funktioniert haben, sind nicht mehr da. Sie müssen durch... Du findest heraus, was du durchmachen musst...