EA läuft nicht auf mehreren Paaren, brauche Hilfe - Seite 3

 
for(int i=0;i<OrdersTotal();i++)
      {
         if(OrderSelect(i,SELECT_BY_POS,MODE_TRADES)==false) break;
         if(OrderMagicNumber()==MagicNumber && OrderSymbol()==Symbol()) continue;
         //---Check Order Type
         if(OrderType()==OP_BUY)
         {
           if(fastma < slowma)
           {
             if(OrderClose(OrderTicket(),Lots,OrderClosePrice(),10,clrNONE))
               Print("Order Closed : ", OrderClosePrice());
             else
               Print("Error Closing order ", GetLastError());
              
           }
          
         }
      if(OrderType()==OP_SELL)
        {
          if(fastma > slowma)
          {
             if(OrderClose(OrderTicket(),Lots,OrderClosePrice(),10,clrNONE))
               Print("Order Closed : ", OrderClosePrice());
            else
               Print("Error Closing Order : ", GetLastError());
              
          }
          
        }
      }
    Sleep(300000);
    return(0);
}
Mein Ea hört nicht auf, Aufträge zu öffnen und zu schließen, es scheint etwas in meinem Code zu ignorieren, ist irgendetwas falsch mit meiner Funktion zum Schließen von Aufträgen?
 
Matt_Townsend: Stimmt etwas nicht mit meiner Funktion zum Schließen von Aufträgen?

Ja - Sie müssen beim Schließen von Aufträgen abwärts zählen:

for(int i=OrdersTotal()-1; i>=0; i--)
Sie können hier nachlesen, warum
 
honest_knave:

Ja - Sie müssen beim Schließen von Aufträgen rückwärts zählen:

for(int i=OrdersTotal()-1; i>=0; i--)
Sie können hier nachlesen, warum.
Es ist immer noch nur öffnen und schließen Trades fast sofort, gibt es etwas anderes falsch mit Code?
 
Matt_Townsend Ist sonst noch etwas mit dem Code nicht in Ordnung?
Drucken Sie Ihre Variablen aus, und finden Sie heraus, warum.
 
if(OrderMagicNumber()==MagicNumber && OrderSymbol()==Symbol()) continue;

Warum sollten Sie fortfahren?

if(OrderMagicNumber()!= MagicNumber || OrderSymbol()!= Symbol()) continue;


würde mehr Sinn machen
 
Keith Watford:
if(OrderMagicNumber()==MagicNumber && OrderSymbol()==Symbol()) continue;

Warum sollten Sie weitermachen?

if(OrderMagicNumber()!= MagicNumber || OrderSymbol()!= Symbol()) continue;


würde mehr Sinn machen
Es werden keine Aufträge geschlossen, wenn der Code || enthält, aber es funktioniert besser, wenn das != enthalten ist.
 
//+---------------------------------------------+
//|System start                                 |
//+---------------------------------------------+
int start()
{


    double fastma, slowma;
    int    ticket, total;
    //---define Ma's
    
    fastma = iMA(NULL,0,5,0,MODE_EMA,PRICE_CLOSE,0);
    slowma = iMA(NULL,0,8,0,MODE_SMA,PRICE_CLOSE,0);
    
    total = OrdersTotal();
    //---Start operations
    
    if(total < 1)
    {
       if(fastma > slowma)
        {
         ticket = OrderSend(Symbol(),OP_BUY,Lots,Ask,10,0,0,"",0,0,Blue);
         if(ticket > 0)
         {
            if(OrderSelect(ticket,SELECT_BY_TICKET,MODE_TRADES))
            Print("Buy order opened : ", OrderOpenPrice());
         }
         else
           Print("Error opening order : ", GetLastError());
           return(0);
       }
       if(fastma < slowma)
       {
         ticket = OrderSend(Symbol(),OP_SELL,Lots,Bid,10,0,0,"",0,0,Red);
         if(ticket > 0)
         {
            if(OrderSelect(ticket,SELECT_BY_TICKET,MODE_TRADES))
            Print("Sell order opened : ", OrderOpenPrice());
         }
         else
           Print("Error opening order : ", GetLastError());
           return(0);
       }
       return(0);
    }
  
      
    for(int i=OrdersTotal()-1;i>=0;i--)
      {
         if(OrderSelect(i,SELECT_BY_POS,MODE_TRADES)==false) break;
         if(OrderMagicNumber()!=MagicNumber && OrderSymbol()!=Symbol()) continue;
         //---Check Order Type
         if(OrderType()==OP_BUY)
         {
           if(fastma < slowma)
           {
             if(OrderClose(OrderTicket(),Lots,OrderClosePrice(),10,clrNONE))
               Print("Order Closed : ", OrderClosePrice());
             else
               Print("Error Closing order ", GetLastError());
           }
          
         }
      if(OrderType()==OP_SELL)
        {
          if(fastma > slowma)
          {
             if(OrderClose(OrderTicket(),Lots,OrderClosePrice(),10,clrNONE))
               Print("Order Closed : ", OrderClosePrice());
            else
               Print("Error Closing Order : ", GetLastError());
          }
          
        }
      }
    Sleep(300000);
    return(0);
}
Hier ist mein Code, wie es jetzt steht, es kann Trades auf was auch immer Paar ich es auf, aber zufällig hat bestimmte mit offenen Trades öffnen. Ich habe versucht, den Code im Wesentlichen unabhängig auf was auch immer Paar, das ich es auf, aber leider der Code wird nicht öffnen, bis alle anderen Trades geschlossen sind, und dann nicht öffnen, Trades auf alle Paare, die es auf gesetzt ist. Gibt es irgendwie zu haben, das Programm zu tun, dass, Es tut kaufen und verkaufen, wie ich es will.
 
Ihr Code
  for(int i=OrdersTotal()-1;i>=0;i--)
      {
         if(OrderSelect(i,SELECT_BY_POS,MODE_TRADES)==false) break;
         if(OrderMagicNumber()!=MagicNumber || OrderSymbol()!=Symbol()) continue;
         //---Check Order Type
         if(OrderType()==OP_BUY)
Vereinfacht
  for(int i=OrdersTotal()-1;i>=0;i--) if(
     OrderSelect(i,SELECT_BY_POS)
  && OrderMagicNumber() == MagicNumber
  && OrderSymbol()      == Symbol()
  ){
     //---Check Order Type
     if(OrderType()==OP_BUY)
 
whroeder1:
Sie codieren
  for(int i=OrdersTotal()-1;i>=0;i--)
      {
         if(OrderSelect(i,SELECT_BY_POS,MODE_TRADES)==false) break;
         if(OrderMagicNumber()!=MagicNumber && OrderSymbol()!=Symbol()) continue;
         //---Check Order Type
         if(OrderType()==OP_BUY)
Vereinfacht
  for(int i=OrdersTotal()-1;i>=0;i--) if(
     OrderSelect(i,SELECT_BY_POS)
  && OrderMagicNumber() == MagicNumber
  && OrderSymbol()      == Symbol()
  ){
     //---Check Order Type
     if(OrderType()==OP_BUY)

Jedes Diagramm läuft immer noch nicht unabhängig, gibt es noch etwas, was ich tun kann?

Und so wie das kodiert ist, werden keine Trades mehr geschlossen.

 
Keith Watford 2016.12.14 03:10| 122.155.43.228ban DE

    total = OrdersTotal();
    //---Start operations
    
    if(total <= 1)
Schleife durch die offenen Orders und zähle nur die Trades, die die magische Zahl und das Chart-Symbol des EAs haben
Grund der Beschwerde: