Wie schließe ich alle Aufträge mit Gesamtgewinn in Pips? - Seite 7

 
khasan kayumov:
Könnte jemand bitte beraten, wie man alle Aufträge durch den Gesamtgewinn in Pips zu schließen?

Lesen Sie die Beiträge, einige habe ich nicht verstanden. Ich glaube, ich bin noch keinem von ihnen begegnet.

Ich habe diese Frage folgendermaßen verstanden: Wie kann man offene Aufträge für verschiedene Instrumente schließen, wenn der Gewinn erreicht ist?

Vielleicht ist das nicht besonders clever, aber so habe ich es umgesetzt:

extern int    iPrftAc       = 35;   // Закрытие всех ордеров по текущему счету.
.......

if (AccountProfit() > iPrftAc)
   {
    Print("//--> Закрытие ордеров: Условие достижения ПРИБЫЛИ ПО ТЕКУЩЕМУ СЧЕТУ!;");
    vOrderClose(9,0,"");          
   }
........
void vOrderClose(int f_iTypOrdDel,  //Тип операции выбранного ордера на удаление
                 int f_iOrderTicket,//Номер тикета ордера
                 string f_sNamSig)  //Наименование сигнала
{
.......
 if (f_iTypOrdDel==9) // Удаление всех открытых и отложенных ордеров по всем финансовым инструментам.
     {
      int CloseOrdSymAll = 0;
      do {
          CloseOrdSymAll = 0;
          for (int i=0; i<=OrdersTotal(); i++)
            {
             if (OrderSelect(i, SELECT_BY_POS, MODE_TRADES)==true)
                {
                 switch(OrderType())
                    {
                     case OP_BUY     :f_sCmdType = "OP_BUY";
                                      f_bResult = OrderClose(OrderTicket(),OrderLots(),MarketInfo(OrderSymbol(),MODE_BID),iSlippage,clrBlue);
                                      if (f_bResult == true) Print("//---> vOrderClose: ",f_iTypOrdDel,") Order(#",OrderTicket(),") Type(#",OrderType(),") ",f_sCmdType,"  successfully");
                                      else {
                                            Print("//--->vOrderClose: № ",f_iTypOrdDel,". Order(#",OrderTicket(),") Type(#",OrderType(),") ",f_sCmdType,", failed. Error:", GetLastError());
                                            Sleep(1000);
                                           }  
                                      CloseOrdSymAll++;
                                      break;
                                         
                     case OP_BUYLIMIT:f_sCmdType = "OP_BUYLIMIT";
                                      f_bResult = OrderDelete(OrderTicket(),CLR_NONE);
                                      if (f_bResult == true) Print("//---> vOrderClose: ",f_iTypOrdDel,") Order(#",OrderTicket(),") Type(#",OrderType(),") ",f_sCmdType," successfully");
                                      else {
                                            Print("//--->vOrderClose: № ",f_iTypOrdDel,". Order(#",OrderTicket(),") Type(#",OrderType(),") ",f_sCmdType,", failed. Error:", GetLastError());
                                            Sleep(1000);
                                           }  
                                      CloseOrdSymAll++;
                                      break;
                                         
                     case OP_BUYSTOP :f_sCmdType = "OP_BUYSTOP";
                                      f_bResult = OrderDelete(OrderTicket(),CLR_NONE);
                                      if (f_bResult == true) Print("//---> vOrderClose: ",f_iTypOrdDel,") Order(#",OrderTicket(),") Type(#",OrderType(),") ",f_sCmdType," successfully");
                                      else {
                                            Print("//--->vOrderClose: № ",f_iTypOrdDel,". Order(#",OrderTicket(),") Type(#",OrderType(),") ",f_sCmdType,", failed. Error:", GetLastError());
                                            Sleep(1000);
                                           }  
                                      CloseOrdSymAll++;
                                      break;
                                         
                     case OP_SELL    :f_sCmdType = "OP_SELL";
                                      f_bResult = OrderClose(OrderTicket(),OrderLots(),MarketInfo(OrderSymbol(),MODE_ASK),iSlippage,clrRed);
                                      if (f_bResult == true) Print("//---> vOrderClose: ",f_iTypOrdDel,") Order(#",OrderTicket(),") Type(#",OrderType(),") ",f_sCmdType," successfully");
                                      else {
                                            Print("//--->vOrderClose: № ",f_iTypOrdDel,". Order(#",OrderTicket(),") Type(#",OrderType(),") ",f_sCmdType,", failed. Error:", GetLastError());
                                            Sleep(1000);
                                           }  
                                      CloseOrdSymAll++;
                                      break;
                                         
                     case OP_SELLLIMIT:f_sCmdType = "OP_SELLLIMIT";
                                       f_bResult = OrderDelete(OrderTicket(),CLR_NONE);
                                       if (f_bResult == true) Print("//---> vOrderClose: ",f_iTypOrdDel,") Order(#",OrderTicket(),") Type(#",OrderType(),") ",f_sCmdType," successfully");
                                       else {
                                             Print("//--->vOrderClose: № ",f_iTypOrdDel,". Order(#",OrderTicket(),") Type(#",OrderType(),") ",f_sCmdType,", failed. Error:", GetLastError());
                                             Sleep(1000);
                                            }  
                                       CloseOrdSymAll++;
                                       break;
                                         
                     case OP_SELLSTOP :f_sCmdType = "OP_SELLSTOP";
                                       f_bResult = OrderDelete(OrderTicket(),CLR_NONE);
                                       if (f_bResult == true) Print("//---> vOrderClose: ",f_iTypOrdDel,") Order(#",OrderTicket(),") Type(#",OrderType(),") ",f_sCmdType," successfully");
                                       else {
                                             Print("//--->vOrderClose: № ",f_iTypOrdDel,". Order(#",OrderTicket(),") Type(#",OrderType(),") ",f_sCmdType,", failed. Error:", GetLastError());
                                             Sleep(1000);
                                            }  
                                       CloseOrdSymAll++;
                                       break;
                    }
                }    
            }          
         }
     }
}
//+------------------------------------------------------------------+
//|Конец                                                             |
//+------------------------------------------------------------------+
 

Was ich nicht verstehe, ist Folgendes.

Verdienen Sie Geld oder machen Sie Punkte?

Warum sich die Mühe machen, nach komplexen Ergebnissen zu suchen, wenn das gewünschte (HAUPT!) Ergebnis immer vor Ihnen liegt: Wenn Ihnen die Gesamtgewinne (in Geld!) aller Geschäfte passen, dann schließen Sie das ganze verdammte Ding!

 
Artemij:

Was ich nicht verstehe, ist Folgendes.

Verdienen Sie Geld oder machen Sie Punkte?

Warum sich die Mühe machen, nach komplexen Ergebnissen zu suchen, wenn das gewünschte (HAUPT!) Ergebnis immer vor Ihnen liegt: Wenn Ihnen der Gesamtgewinn (in Geld!) aller Geschäfte passt, dann schließen Sie das ganze verdammte Ding!


Wenn der Gewinn in Geld besteht, müssen Sie bei einer Änderung der Losgröße den Gewinnwert proportional ändern. Das ist ungünstig.

 
Vadym Kulish:

Lesen Sie die Beiträge, einige davon habe ich nicht verstanden. Ich bin ihnen wohl noch nicht begegnet.

Ich habe diese Frage folgendermaßen verstanden: Wie kann man offene Aufträge für verschiedene Instrumente schließen, wenn der Gewinn erreicht ist?

Vielleicht ist es nicht sehr elegant, aber so habe ich diese Frage umgesetzt:

Warum brauchen wir eine so große Pause? Alles funktioniert jetzt schnell.

Ich schließe, ohne eine einzige Pause einzulegen.

 
Renat Akhtyamov:

Warum die lange Pause? Es läuft jetzt schnell...

Ich mache überhaupt keine Pause.


Es ist ein Überbleibsel des vorherigen Codes - ich habe die Art des Fehlers nicht verstanden.MarketInfo(OrderSymbol(),MODE_ASK), Ich habe es für alle Fälle dort gelassen. Der Expert Advisor ist unvollständig.