[ARCHIVE!] Any rookie question, so as not to clutter up the forum. Professionals, don't pass by. Can't go anywhere without you - 4. - page 115

 
I downloaded Fenicks v01 - the one I need, but I can't make out more than half of the settings.

What do these settings mean:

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;
 
Also in the log during the test writes: 2012.05.11 20:03:29 2012.01.09 01:02 Fenicks v01 EURUSD,M1: OrderModify error 1

How to get rid of this error ?

Here is the code of the Expert Advisor itself:

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:
Also in the log during the test writes: 2012.05.11 20:03:29 2012.01.09 01:02 Fenicks v01 EURUSD,M1: OrderModify error 1
How to get rid of this error?

Do not call the OrderModify function if there is no change in any of the order parameters.
 
sergeev:

not call the OrderModify function if no order parameters are changed.
What code should I write in the Expert Advisor to avoid this error?
 
alex12:
What code do I have to write in the Expert Advisor to avoid this error ?

correct
 
Maybe you can already tell me what the settings I asked you about at the end of page 115 in this thread mean?
 
alex12:
Maybe you can already tell me what the settings mean

Well, given lines like.

if(olbuy<1 && olbuy<1)

it's probably nothing.)

 
What do they mean - please advise.

so I have sorted out some of the setting code lines.

There are still lines of settings code that I don't understand:

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

Well, given lines like.

it's probably nothing.)

Yeah, yeah, I noticed that too - it doesn't make sense.)
 

Sometimes you really want to call another custom indicator from a custom indicator. - does not work((.

How do I get around it? Would it be better to turn the second indicator into a function? Is there any other way?

Reason: