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

 
Auch im Log während des Tests steht: 2012.05.11 20:03:29 2012.01.09 01:02 Fenicks v01 EURUSD,M1: OrderModify error 1

Wie wird man diesen Fehler los?

Hier ist der Code des Expert Advisors selbst:

extern double Lot=0.01;
int h=15; //начало от цены
int g=20; //тейкпрофит
int i=0;
int k=1;
int l=1;
double TakeB=0;
double TakeS=0;
int olbuy=0;
int olsell=0;
int oldbuy=0;
int oldsell=0;
int otkbuy=0;
int otlbuy=0;
int otksell=0;
int otlsell=0;


int openbuy()  // Выставления отложенных ордеров на продажу
  {
   double PRICE=Ask-Point*h;
   OrderSend (Symbol(),OP_BUYLIMIT,Lot*1,PRICE,0,0,PRICE+Point*g,"My order #",11);
   PRICE=Ask-Point*(h+10);
   OrderSend (Symbol(),OP_BUYLIMIT,Lot*2,PRICE,0,0,PRICE+Point*g,"My order #",12);
   PRICE=Ask-Point*(h+20);
   OrderSend (Symbol(),OP_BUYLIMIT,Lot*4,PRICE,0,0,PRICE+Point*g,"My order #",13);
   PRICE=Ask-Point*(h+30);
   OrderSend (Symbol(),OP_BUYLIMIT,Lot*8,PRICE,0,0,PRICE+Point*g,"My order #",14);
   PRICE=Ask-Point*(h+40);
   OrderSend (Symbol(),OP_BUYLIMIT,Lot*16,PRICE,0,0,PRICE+Point*g,"My order #",15);
   PRICE=Ask-Point*(h+50);
   OrderSend (Symbol(),OP_BUYLIMIT,Lot*32,PRICE,0,0,PRICE+Point*g,"My order #",16);
   PRICE=Ask-Point*(h+60);
   OrderSend (Symbol(),OP_BUYLIMIT,Lot*64,PRICE,0,0,PRICE+Point*g,"My order #",17);
   PRICE=Ask-Point*(h+70);
   OrderSend (Symbol(),OP_BUYLIMIT,Lot*128,PRICE,0,0,PRICE+Point*g,"My order #",18);
   PRICE=Ask-Point*(h+85);
   OrderSend (Symbol(),OP_BUYLIMIT,Lot*256,PRICE,0,0,PRICE+Point*1.5*g,"My order #",19);
   PRICE=Ask-Point*(h+100);
   OrderSend (Symbol(),OP_BUYLIMIT,Lot*512,PRICE,0,0,PRICE+Point*1.5*g,"My order #",20);
  return(0);
  }

int opensell()  // Выставления отложенных ордеров на продажу
  {
   double PRICE=Bid+Point*h;
   OrderSend (Symbol(),OP_SELLLIMIT,Lot*1,PRICE,0,0,PRICE-Point*g,"My order #",21);
   PRICE=Bid+Point*(h+10);
   OrderSend (Symbol(),OP_SELLLIMIT,Lot*2,PRICE,0,0,PRICE-Point*g,"My order #",22);
   PRICE=Bid+Point*(h+20);
   OrderSend (Symbol(),OP_SELLLIMIT,Lot*4,PRICE,0,0,PRICE-Point*g,"My order #",23);
   PRICE=Bid+Point*(h+30);
   OrderSend (Symbol(),OP_SELLLIMIT,Lot*8,PRICE,0,0,PRICE-Point*g,"My order #",24);
   PRICE=Bid+Point*(h+40);
   OrderSend (Symbol(),OP_SELLLIMIT,Lot*16,PRICE,0,0,PRICE-Point*g,"My order #",25);
   PRICE=Bid+Point*(h+50);
   OrderSend (Symbol(),OP_SELLLIMIT,Lot*32,PRICE,0,0,PRICE-Point*g,"My order #",26);
   PRICE=Bid+Point*(h+60);
   OrderSend (Symbol(),OP_SELLLIMIT,Lot*64,PRICE,0,0,PRICE-Point*g,"My order #",27);
   PRICE=Bid+Point*(h+70);
   OrderSend (Symbol(),OP_SELLLIMIT,Lot*128,PRICE,0,0,PRICE-Point*g,"My order #",28);
   PRICE=Bid+Point*(h+85);
   OrderSend (Symbol(),OP_SELLLIMIT,Lot*256,PRICE,0,0,PRICE-Point*1.5*g,"My order #",29);
   PRICE=Bid+Point*(h+100);
   OrderSend (Symbol(),OP_SELLLIMIT,Lot*512,PRICE,0,0,PRICE-Point*1.5*g,"My order #",30);
  return(0);
  }

int closebuy()  // Закрывает отложенный ордера на покупку
{
   for(i=1; i<OrdersTotal(); i++)
    {
      if((OrderSelect(i-1,SELECT_BY_POS)==true)
      && (OrderType()==2))
      {
      OrderDelete(OrderTicket());
      }
    }
}

int closesell()  // Закрывает отложенный ордера на продажу
{
   for(i=1; i<OrdersTotal(); i++)
    {
      if((OrderSelect(i-1,SELECT_BY_POS)==true)
      && (OrderType()==3))
      {
      OrderDelete(OrderTicket());
      }
    }
}

int start()
  {
// начало открытия отложенных ордеров 
   if (OrdersTotal()==0)
     {
     openbuy();
     opensell();
     }
// Открывает на продажу если на покупку открыта ранее
   for(i=0; i<OrdersTotal(); i++)
    {
      if((OrderSelect(i,SELECT_BY_POS)==true)
      && (OrderType()==3))
      {
      olsell++;
      }
    } 
    for(i=0; i<OrdersTotal(); i++)
    {
      if((OrderSelect(i,SELECT_BY_POS)==true)
      && (OrderType()==1))
      {
      oldsell++;
      }
    }   
        if(olsell<1 && oldsell<1)
          {
          opensell();
          } 
// Открывает на покупку если на прадажу уже открыта ранее
   for(i=0; i<OrdersTotal(); i++)
    {
      if((OrderSelect(i,SELECT_BY_POS)==true)
      && (OrderType()==2))
      {
      olbuy++;
      }
    }
   for(i=0; i<OrdersTotal(); i++)
    {
      if((OrderSelect(i,SELECT_BY_POS)==true)
      && (OrderType()==0))
      {
      oldbuy++;
      }
    }
        if(olbuy<1 && olbuy<1)
          {
          openbuy();
          }
// конец открытия отложенных ордеров

// ---------- Начало модификаций отложенных ордеров --------------
// Модификация тейк профита для открытых ордеров на покупку

   for(i=0; i<OrdersTotal(); i++)
     {
      if((OrderSelect(i,SELECT_BY_POS)==true)
      && (OrderType()==0))
       {
       TakeB=OrderTakeProfit();
       }
     }
   for(i=0; i<OrdersTotal(); i++)
     {
      if((OrderSelect(i,SELECT_BY_POS)==true)
      && (OrderType()==0))
       {
       OrderModify(OrderTicket(),OrderOpenPrice(),0,TakeB,0);
       }
      }
 // Модификация тейк профита для открытых ордеров на продажу
   for(i=0; i<OrdersTotal(); i++)
     {
      if((OrderSelect(i,SELECT_BY_POS)==true)
      && (OrderType()==1))
       {
       TakeS=OrderTakeProfit();
       }
     }
   for(i=0; i<OrdersTotal(); i++)
     {
      if((OrderSelect(i,SELECT_BY_POS)==true)
      && (OrderType()==1))
       {
       OrderModify(OrderTicket(),OrderOpenPrice(),0,TakeS,0);
       }
      }
// Подсчет открытых и закрытых ордеров
   for(i=0; i<OrdersTotal(); i++)
     {
      if((OrderSelect(i,SELECT_BY_POS)==true)
      && (OrderType()==0))
       {
       otkbuy++;                              // Открытых покупок
       }
     }
   for(i=0; i<OrdersTotal(); i++)
     {
      if((OrderSelect(i,SELECT_BY_POS)==true)
      && (OrderType()==2))
       {
       otlbuy++;                              // Отложенных покупок
       }
     }
   for(i=0; i<OrdersTotal(); i++)
     {
      if((OrderSelect(i,SELECT_BY_POS)==true)
      && (OrderType()==1))
       {
       otksell++;                             // Открытых продаж
       }
     }
   for(i=0; i<OrdersTotal(); i++)
     {
      if((OrderSelect(i,SELECT_BY_POS)==true)
      && (OrderType()==3))
       {
       otlsell++;                             // Отложенных продаж
       }
     }
// Очистка лишних ордеров на покупку
if((otkbuy==0) && (otlbuy<=5))
   {
   closebuy();
   }
// Очистка лишних ордеров на продажи
if((otksell==0) && (otlsell<=5))
   {
   closesell();
   }
// Модификация отложенных ордеров на покупку
   otkbuy=0;
   otlbuy=0;
   otksell=0;
   otlsell=0;
   olbuy=0;
   olsell=0;
   oldbuy=0;
   oldsell=0; 
   return(0);
  }
//+------------------------------------------------------------------+
 
alex12:
Auch im Log während des Tests steht: 2012.05.11 20:03:29 2012.01.09 01:02 Fenicks v01 EURUSD,M1: OrderModify error 1
Wie wird man diesen Fehler los?

Rufen Sie die Funktion OrderModify nicht auf, wenn sich keiner der Auftragsparameter geändert hat.
 
sergeev:

die Funktion OrderModify nicht aufrufen, wenn keine Auftragsparameter geändert werden.
Welchen Code sollte ich in den Expert Advisor schreiben, um diesen Fehler zu vermeiden?
 
alex12:
Welchen Code muss ich in den Expert Advisor schreiben, um diesen Fehler zu vermeiden?

richtig
 
Vielleicht können Sie mir schon sagen, was die Einstellungen bedeuten, nach denen ich Sie am Ende von Seite 115 in diesem Thread gefragt habe?
 
alex12:
Vielleicht können Sie mir schon sagen, was die Einstellungen bedeuten

Nun, bei Zeilen wie.

if(olbuy<1 && olbuy<1)

es ist wahrscheinlich nichts.)

 
Was bedeuten sie - bitte um Rat.

Ich habe also einige der Einstellungscodezeilen aussortiert.

Es gibt immer noch Zeilen mit Einstellungscodes, die ich nicht verstehe:

int i=0;
int k=1;
int l=1;
 
alsu:

Nun, bei Zeilen wie.

es ist wahrscheinlich nichts.)

Ja, ja, das ist mir auch aufgefallen - es macht keinen Sinn.)
 

Manchmal möchten Sie wirklich einen anderen benutzerdefinierten Indikator von einem benutzerdefinierten Indikator aus aufrufen. - funktioniert nicht((.

Wie kann ich sie umgehen? Wäre es besser, den zweiten Indikator in eine Funktion zu verwandeln? Gibt es einen anderen Weg?

 
jelizavettka:

Manchmal möchten Sie wirklich einen anderen benutzerdefinierten Indikator von einem benutzerdefinierten Indikator aus aufrufen. - funktioniert nicht((.

Wie kann ich sie umgehen? Wäre es besser, den zweiten Indikator in eine Funktion zu verwandeln? Gibt es einen anderen Weg?


iCustom() wird nicht aufgerufen?
Grund der Beschwerde: