[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 186

 
Pyro:

Hallo zusammen. Meine Suche in der Historie ergibt nicht das Volumen der Lose. Ist das der richtige Weg?


Er gibt 0,1 Lose zurück, obwohl die Lose vom Programm geändert werden. Die Tickets werden korrekt wiedergegeben (geändert).


Suchen Sie nicht in allem nach "Bugs und Features" - manchmal öffnet sich die Tür ganz einfach ... :-)

Wo ist die Bestellschleife?

 
 if(OrdersHistoryTotal() != 0)
   {
    for(int counter = OrdersHistoryTotal()-1; counter >= 0; counter--)
      {
       OrderSelect(counter, SELECT_BY_POS, MODE_HISTORY);
       if(OrderSymbol() == Symbol() && OrderMagicNumber() == MagicNumber)
         {
          if(OrderType() == OP_BUY || OrderType() == OP_SELL)   
             Comment("\n\n\n",OrderLots()," ",OrderTicket());                        
         }
      }
   }
 
Pyro:

Hallo zusammen. Meine Suche in der Historie ergibt nicht das Volumen der Lose. Ist das der richtige Weg?


Es wird das Los 0.1 zurückgegeben, obwohl die Lose vom Programm geändert werden. Die Tickets werden korrekt angezeigt (Änderung). ein Fehler? ein Fehler?


Siehe Code analog, bearbeiten, versuchen:

 //---------------------расчет по истории ордеров номера очередной итерации----------------------------------------------- 
  Iteration = 0; // зануляем инерации перед их учетом в цикле по истории
  Sum_Loss = 0;  // суммарный убыток по этим итерациям

datetime 
Time_at_History_Current = 0,
Time_at_History_Previos = 0;  
    
 
 if(OrdersHistoryTotal() != 0)
   {
    for(int counter = OrdersHistoryTotal()-1; counter >= 0; counter--)
      {
       OrderSelect(counter, SELECT_BY_POS, MODE_HISTORY);
       if(OrderSymbol() == Symbol() && OrderMagicNumber() == MagicNumber)
         {
          if(OrderType() == OP_BUY || OrderType() == OP_SELL)
            {
             if(OrderProfit() < 0) // если убыток по выбранному ордеру, то считаем суммарный и записываем время закрытия ордера
                                   // для последующего его анализа при подсчете количества итераций
                {
                 double lastLoss = OrderProfit();
                 Sum_Loss=Sum_Loss+lastLoss;  // считаем общий убыток по закрытым подряд убыточным ордерам
                 Time_at_History_Current = OrderCloseTime();
                } 
             
             //Print(" Time_at_History_Current_в цикле = ", TimeToStr(Time_at_History_Current, TIME_DATE|TIME_SECONDS));
             //Print(" Time_at_History_Previos_в цикле = ", TimeToStr(Time_at_History_Previos, TIME_DATE|TIME_SECONDS));
             
             if(Time_at_History_Current != Time_at_History_Previos) // если они не равны, то считаем итерации и делаем их равными
               {
                Time_at_History_Previos = Time_at_History_Current ;
                Iteration++;
                //Print("Iteration at History в условии сравнения  = ",  Iteration);
               }   
             else // они равны, то проверяем, дополнительно, наличие профита по выбранному следующему ордеру и выходим из цикла
               {
                if(OrderProfit() >= 0)
                  break;
               }
            }
         }
      }
   }
 

Roman


Ich brauche keinen Zyklus. Ich muss die LOT der letzten Bestellung bekommen, egal welche, ich brauche keine Filterung. In dem Beispiel steht nichts über LOT. Ich bin verblüfft.

 
Pyro:

Roman


Ich brauche keinen Zyklus. Ich muss die LOT der letzten Bestellung bekommen, egal welche, ich brauche keine Filterung. In dem Beispiel steht nichts über LOT. Ich bin verblüfft.


Sehen Sie es sich an - ich habe meinen vorherigen Beitrag geändert...
 
Das verstehe ich nicht. Eine Schleife wird benötigt, wenn Sie nach bestimmten Kriterien filtern müssen, wie in Ihrem Fall. Meine Aufgabe ist einfacher - ich muss den letzten Auftrag aus der Geschichte nehmen. Per Definition ist er geschlossen, und per Definition gibt es keine offenen Positionen auf dem Markt. Schwebende Aufträge werden nicht verwendet. D.h., die letzte Bestellung wird auf jeden Fall die Marktbestellung sein. Die Tickets werden korrekt zurückgegeben, die Lose nicht.
 
Pyro:
Das verstehe ich nicht. Eine Schleife wird benötigt, wenn Sie nach bestimmten Kriterien filtern müssen, wie in Ihrem Fall. Meine Aufgabe ist einfacher - ich muss den letzten Auftrag aus der Geschichte nehmen. Per Definition ist er geschlossen, und per Definition gibt es keine offenen Positionen auf dem Markt. Die Tickets werden korrekt zurückgegeben, die Lose nicht.

Eigene! Lernen Sie, die Suche zu benutzen! :-)
 
Vielen Dank dafür :) Das Problem war etwas anderes.
 
MK07:

Danke für die Hilfe. Ich habe if (D_sig==0) { Befehl für Signal ; }. Die "Schritte" wurden weniger, aber sie sind immer noch da. Und es ist nicht klar, wie sie gebildet werden.

Ich habe MathAbs eingesetzt, um einen "Korridor" für den Vergleich zu haben, denn die Wahrscheinlichkeit, dass die Signallinien absolut gleich sind, ist vernachlässigbar klein.

Vielleicht hat jemand anderes Gedanken zu meinem Problem?


Ich habe es so geschrieben und es wird D_Sig im Kommentar angezeigt.

         D_sig=MathAbs(Signal1Buffer[0]-Signa13Buffer[0]);                              // разница между сигнальными линиями 1-ого и 3-ого MACD на
                                                                                        // нулевом баре
if(D_sig==0)  {   D_sig_Last=D_sig; }
      
//       break;          
             
           
              
         
         j++;
         
}             
     
      Comment( "\n"," Баров = ",WindowBarsPerChart()-1, 
               "\n"," Macd1Buffer = ",DoubleToStr(Macd1Buffer[0],4),
               "\n"," Signal1Buffer = ",DoubleToStr(Signal1Buffer[0],4),
               "\n"," Macd3Buffer = ",DoubleToStr(Macd3Buffer[0],4),
               "\n"," Signa13Buffer = ",DoubleToStr(Signa13Buffer[0],4),
               "\n"," D_sig = ",DoubleToStr(D_sig,4));
 
Schlagen Sie ein "Lieblingsprinzip" der EA-Namensbildung vor - und dass das Handlungsprinzip berücksichtigt wird und die Version usw.
 

Hallo zusammen.

Es gibt eine Funktion bool NewBar().Bitte erstellen Sie eine Funktion bool NewZZ() . Wenn ein neues Zickzack-Knie erscheint -> true.