[ARCHIV] Alle Fragen von Anfängern, um das Forum nicht zu überladen. Fachleute, gehen Sie nicht vorbei. Nirgendwo ohne dich - 3. - Seite 37

 
nuan:
Frage: Wie kann ich programmatisch alle Aufträge schließen, z.B. alle 30 Minuten?

datetime prevtime;
int Magic=11111;
int slippage=5;

//=====================
 int start(){
 
    datetime TimeM30=iTime(NULL,30,0);
    if(TimeM30==prevtime) return(0); 
    prevtime = TimeM30;   
    CloseAllPos();
  return(0);
 }
//=====================
 void CloseAllPos(){
   double maxlot=0;
   for(int i=OrdersTotal()-1; i>=0; i--){
     if(!OrderSelect(i, SELECT_BY_POS, MODE_TRADES))continue;
     if(OrderSymbol()!=Symbol())continue;
     if(OrderMagicNumber()!=Magic)continue; 
      if(maxlot<OrderLots()){ 
         maxlot=OrderLots();
         if(OrderType()==OP_BUY)OrderClose(OrderTicket(),maxlot,NormalizeDouble(Bid, Digits),slippage,Yellow);
         if(OrderType()==OP_SELL)OrderClose(OrderTicket(),maxlot,NormalizeDouble(Ask, Digits),slippage,Yellow);
  } } }
 
Dankeschön
 
Ersetzen der Schlusskurse durch Eröffnungskurse - das Ergebnis ist identisch mit dem vorherigen, außer dass die Aktienlinie jetzt genau über der Bilanzlinie liegt. Die Zahl der Geschäfte und der Gewinn sind etwas zurückgegangen, aber die Situation hat sich weiter stabilisiert. Im untersuchten Zeitraum gab es keine Verlustgeschäfte.
 
Vinin:


Wenn ich es richtig verstehe, mit einer Überprüfung des Zustands der Aufträge auf dem Markt? -

...
if (OrderType()<2) 
//здесь  корректировка размера позиций с учетом ввода/вывода


Interessantes Zeug! Können Sie den vollständigen Code veröffentlichen? Es ist nicht ganz klar, wie die Aufträge mit den eingezahlten/abgehobenen Geldern verknüpft sind. Können wir feststellen, wie viel Geld zu Beginn auf das Konto eingezahlt wurde, sozusagen das Anfangssaldo, ohne die Historie der geschlossenen Positionen neu zu berechnen? Nicht alle Broker stellen den gesamten Handelsverlauf zur Verfügung, einige sind nicht älter als 1 Monat, so dass die Neuberechnung der Rentabilität des Expert Advisors falsch ist: Das Startdatum ist korrekt, aber der Saldo ist derjenige, der vor einem Monat war. Dadurch wird der monatliche Gewinn über den gesamten Handelszeitraum gestreckt.

 
nuan:
Frage: Wie kann ich programmatisch alle Aufträge schließen, z.B. alle 30 Minuten?

datetime prevtime;
int Magic=11111;
int slippage=5;

//=====================
 int start(){
 
    datetime TimeM30=iTime(NULL,30,0);
    if(TimeM30==prevtime) return(0); 
    prevtime = TimeM30;   
    CloseAllPos();
  return(0);
 }
//=====================
 void CloseAllPos(){
   double maxlot=0;
   for(int i=OrdersTotal()-1; i>=0; i--){
     if(!OrderSelect(i, SELECT_BY_POS, MODE_TRADES))continue;
     if(OrderSymbol()!=Symbol())continue;
     if(OrderMagicNumber()!=Magic)continue; 
      if(maxlot<OrderLots()){ 
         maxlot=OrderLots();
         if(OrderType()==OP_BUY)OrderClose(OrderTicket(),maxlot,NormalizeDouble(Bid, Digits),slippage,Yellow);
         if(OrderType()==OP_SELL)OrderClose(OrderTicket(),maxlot,NormalizeDouble(Ask, Digits),slippage,Yellow);
  } } }


чет он не работает , закрывает в секунду
 
forexnew:


Wenn ich das richtig verstehe, mit einer Überprüfung des Zustands der Aufträge auf dem Markt? -


Interessantes Zeug! Können Sie den vollständigen Code veröffentlichen? Es ist nicht ganz klar, wie die Aufträge mit den eingezahlten/abgehobenen Geldern verknüpft sind. Können wir feststellen, wie viel Geld zu Beginn auf das Konto eingezahlt wurde, sozusagen das Anfangssaldo, ohne die Historie der geschlossenen Positionen neu zu berechnen? Nicht alle Broker stellen den gesamten Handelsverlauf zur Verfügung, einige sind nicht älter als 1 Monat, so dass die Neuberechnung der Rentabilität des EA falsch ist: Das Startdatum ist korrekt, aber der Saldo ist derjenige, der vor einem Monat war. Dadurch wird der monatliche Gewinn über den gesamten Handelszeitraum gestreckt.


Dies ist wahrscheinlich doch nicht der Fall.
Öffnen Sie im Terminal die Registerkarte "Kontoverlauf", klicken Sie mit der rechten Maustaste, und wählen Sie "Gesamter Verlauf".
Die Historie wird bis zum Zeitpunkt der Kontoeröffnung zurückgeladen.
 
forexnew:


Wenn ich es richtig verstehe, mit einer Überprüfung des Zustands der Aufträge auf dem Markt? -


Interessantes Zeug! Können Sie den vollständigen Code veröffentlichen? Es ist nicht ganz klar, wie die Aufträge mit den eingezahlten/abgehobenen Geldern verknüpft sind. Können wir feststellen, wie viel Geld zu Beginn auf das Konto eingezahlt wurde, sozusagen das Anfangssaldo, ohne die Historie der geschlossenen Positionen neu zu berechnen? Nicht alle Broker stellen den gesamten Handelsverlauf zur Verfügung, einige sind nicht älter als 1 Monat, so dass die Neuberechnung der Rentabilität des Expert Advisors falsch ist: Das Startdatum ist korrekt, aber der Saldo ist derjenige, der vor einem Monat war. Dadurch wird der monatliche Gewinn über den gesamten Handelszeitraum gestreckt.

Darum geht es hier nicht, aber es geht darum, programmgesteuert zu verfolgen, ob bis zu einem bestimmten Zeitpunkt Einzahlungen/Abhebungen auf/von dem Konto erfolgt sind. Es gibt noch keinen Code, aber eine Grundformel für die Berechnung der Positionsvolumenanpassung finden Sie hier. (Die Anzahl (in Bezug auf die Gesamtmittel) der Platzierungen/Entnahmen ist damit verbunden)
 
nuan:


Was meinen Sie mit "schließt sich in einer Sekunde"?
Eine lange Zeit? Oder was?

 

Die Charta bedeutet, dass sie den Auftrag in derselben Sekunde abschließt, nicht in 30 Minuten.


Ich habe es wie in Ihrem Beispiel eingestellt


datetime TimeM30=iTime(NULL,30,0);
    if(TimeM30==prevtime) return(0); 
    prevtime = TimeM30;   
    CloseAllPosTime();
Der Roboter schließt nicht aus anderen Gründen, d.h. er schließt nicht bei einem Stop oder bei Gewinn.


1 29.07.2011 00:00 kaufen 1 0,01 1,4328 1,3328 1,5328 0,00 1000,00
2 29.07.2011 00:01 Schluss 1 0,01 1,4327 1,3328 1,5328 -0,10 999,90
3 29.07.2011 00:01 kaufen 2 0,01 1,4329 1,3329 1,5329 0,00 999,90
4 29.07.2011 00:01 Schluss 2 0,01 1,4326 1,3329 1,5329 -0,30 999,60
5 29.07.2011 00:01 kaufen 3 0,01 1,4328 1,3328 1,5328 0,00 999,60
6 29.07.2011 00:03 Schluss 3 0,01 1,4327 1,3328 1,5328 -0,10 999,50
7 29.07.2011 00:03 kaufen 4 0,01 1,4329 1,3329 1,5329 0,00 999,50
8 29.07.2011 00:03 close 4 0,01 1,4329 1,3329 1,5329 0,00 999,50


 
Roman.:
Darum geht es hier nicht, sondern darum, ob bis zu einem bestimmten Zeitpunkt Einzahlungen/Abhebungen auf das/vom Konto erfolgt sind oder nicht. Es gibt noch keinen Code, aber eine Grundformel für die Berechnung der Positionsvolumenanpassung finden Sie hier. (Die Anzahl der Einzahlungen/Abhebungen (in Bezug auf das Gesamtguthaben) ist damit verbunden)

Ich habe verstanden.

Und wenn Sie die Eröffnung eines Kontos mit $0 als Start und die erste Einzahlung als Aufstockung betrachten. Ist es möglich, programmatisch alle Toppings (einschließlich des ersten) zu ermitteln, die auf dem Konto vorgenommen wurden?