Помогите выявить глюк в советнике!!!

 

Вроде в тексте стоит контроль по количеству

//+------------------------------------------------------------------+
//|                                                 DSokolov_1_a.mq4 |
//|                      Copyright © 2009, MetaQuotes Software Corp. |
//|                                        http://www.metaquotes.net |
//+------------------------------------------------------------------+
#property copyright "Copyright © 2009, MetaQuotes Software Corp."
#property link      "http://www.metaquotes.net"

//--------------Функция StochastikD1---------------------+
extern int KperiodStochD1=25; //Период усреднения для вычисления линии %K.
extern int DperiodStochD1=15; //Период усреднения для вычисления линии %D.
extern int SlowingStochD1=15; //Значение замедления.
static int MethodStochD1=0;   //Метод усреднения. Может быть любым из значений MODE_SMA-0/MODE_SMA-1/MODE_SMMA-2/MODE_LWMA-3
static int Price_fieldStochD1=0;  //Параметр выбора цен для расчета. Может быть одной из следующих величин: 0-Low/High или 1-Close/Close.
static int ModeStochD1=0;     //Параметр выбора цен для расчета.MODE_MAIN-0/MODE_SIGNAL-1
static int ModeStochD1S=1;    //Параметр выбора цен для расчета.MODE_MAIN-0/MODE_SIGNAL-1
//--------------Функция Stochastik---------------------+
extern int KperiodStoch=21;   //Период(количество баров) для вычисления линии %K.
extern int DperiodStoch=8;    //Период усреднения для вычисления линии %D.
extern int SlowingStoch=8;    //Значение замедления.
static int MethodStoch=0;     //Метод усреднения. Может быть любым из значений MODE_SMA-0/MODE_SMA-1/MODE_SMMA-2/MODE_LWMA-3
static int Price_fieldStoch=0;  //Параметр выбора цен для расчета. Может быть одной из следующих величин: 0-Low/High или 1-Close/Close.
static int ModeStoch=0;       //Параметр выбора цен для расчета.MODE_MAIN-0/MODE_SIGNAL-1
static int ModeStochS=1;      //Параметр выбора цен для расчета.MODE_MAIN-0/MODE_SIGNAL-1
//--------------Функция Price Channel------------------+
extern int PeriodPrCh=8;      //Период усреднения для вычисления индикатора
extern int ModePrChUp=0;      //Линия индикатора: 0-Up; 1-Down; 2-Middle;
extern int ModePrChDw=1;      //Линия индикатора: 0-Up; 1-Down; 2-Middle;
//+----------------------------------------------------+
int bar=0;
//+------------------------------------------------------------------+
//| expert initialization function                                   |
//+------------------------------------------------------------------+
int init()
  {
//----
   
//----
   return(0);
  }
//+------------------------------------------------------------------+
//| expert deinitialization function                                 |
//+------------------------------------------------------------------+
int deinit()
  {
//----
   
//----
   return(0);
  }
//+------------------------------------------------------------------+
//| expert start function                                            |
//+------------------------------------------------------------------+
void start()
  {
//---- Условие открытия позиций ----
if(OrdersTotal()<1)
   {  if((StochD1(bar)>StochD1(bar+1))&&(StochD1(bar)>StochD1S(bar))) // условие по дневкам
         {  if((Stoch(bar)<40)&&(Stoch(bar)>StochS(bar)))            // условие по часовкам
               {PosOpenBuy();return;}
         }
   }
   {  if((StochD1(bar)<StochD1(bar+1))&&(StochD1(bar)<StochD1S(bar))) // условие по дневкам
         {  if((Stoch(bar)>60)&&(Stoch(bar)<StochS(bar)))            // условие по часовкам
               {PosOpenSell();return;}
         }
   } 
//---- Условиек закрытия позиций ----
if(OrdersTotal()>0)
   {  if(OrderType()<1)
         {  if(Bid<PriceChDw(bar+1)){PosAllClose();return;}  
         }
      if(OrderType()>0)
         {  if(Ask>PriceChUp(bar+1)){PosAllClose();return;}
         }
   }
   return;
  }
//+------------------------!!!FINAL!!!--------------------------------------+

//--------------Функция StochastikD1---------------------+
//extern int KperiodStochD1=5;  //Период усреднения для вычисления линии %K.
//extern int DperiodStochD1=3;  //Период усреднения для вычисления линии %D.
//extern int SlowingStochD1=3;  //Значение замедления.
//static int MethodStochD1=0;  //Метод усреднения. Может быть любым из значений MODE_SMA-0/MODE_SMA-1/MODE_SMMA-2/MODE_LWMA-3
//static int Price_fieldStochD1=0;  //Параметр выбора цен для расчета. Может быть одной из следующих величин: 0-Low/High или 1-Close/Close.
//static int ModeStochD1=0;  //Параметр выбора цен для расчета.MODE_MAIN-0/MODE_SIGNAL-1
//+----------------------------------------------------+
double StochD1(int i=0) {double j=iStochastic(Symbol(),PERIOD_D1,KperiodStochD1,DperiodStochD1,SlowingStochD1,MethodStochD1,Price_fieldStochD1,ModeStochD1,i); return (j);} 
double StochD1S(int i=0) {double j=iStochastic(Symbol(),PERIOD_D1,KperiodStochD1,DperiodStochD1,SlowingStochD1,MethodStochD1,Price_fieldStochD1,ModeStochD1S,i); return (j);} 
//+----------------------------------------------------+
//--------------Функция Stochastik---------------------+
//extern int KperiodStoch=21;  //Период(количество баров) для вычисления линии %K.
//extern int DperiodStoch=8;  //Период усреднения для вычисления линии %D.
//extern int SlowingStoch=8;  //Значение замедления.
//static int MethodStoch=0;  //Метод усреднения. Может быть любым из значений MODE_SMA-0/MODE_SMA-1/MODE_SMMA-2/MODE_LWMA-3
//static int Price_fieldStoch=0;  //Параметр выбора цен для расчета. Может быть одной из следующих величин: 0-Low/High или 1-Close/Close.
//static int ModeStoch=0;  //Параметр выбора цен для расчета.MODE_MAIN-0/MODE_SIGNAL-1
//+----------------------------------------------------+
double Stoch(int i=0) {double j=iStochastic(Symbol(),PERIOD_H1,KperiodStoch,DperiodStoch,SlowingStoch,MethodStoch,Price_fieldStoch,ModeStoch,i); return (j);} 
double StochS(int i=0) {double j=iStochastic(Symbol(),PERIOD_H1,KperiodStoch,DperiodStoch,SlowingStoch,MethodStoch,Price_fieldStoch,ModeStochS,i); return (j);} 
//+----------------------------------------------------+
//--------------Функция Price Channel------------------+
//extern int PeriodPrCh=2;//Период усреднения для вычисления индикатора
//extern int ModePrChUp=0;  //Линия индикатора: 0-Up; 1-Down; 2-Midle;
//+----------------------------------------------------+
double PriceChUp(int a=0){double b=iCustom(Symbol(),PERIOD_H1,"Price Channel",PeriodPrCh,ModePrChUp,a); return(b);}
double PriceChDw(int a=0){double b=iCustom(Symbol(),PERIOD_H1,"Price Channel",PeriodPrCh,ModePrChDw,a); return(b);}
//+----------------------------------------------------+


//+--------------Функция открытия позиции Buy----------+
void PosOpenBuy()
//-----------------
{OrderSend(Symbol(),OP_BUY,0.1,Ask,1,0,0,"Koment",0,0,Red); return;}
//+----------------------------------------------------+

//+--------------Функция открытия позиции Sell----------+
void PosOpenSell()
//-----------------
{OrderSend(Symbol(),OP_SELL,0.1,Bid,1,0,0,"Koment",0,0,Blue); return;}
//+----------------------------------------------------+

//--------------Функция закрытия всех ордеров----------+
void PosAllClose()
//----------------
{
int i;
for( i=0;i<OrdersTotal();i++)                               
   {
   OrderSelect(i, SELECT_BY_POS, MODE_TRADES);
   if(OrderType()==OP_BUY ) 
      {       
      OrderClose(OrderTicket(),OrderLots(),Bid,2,Red); 
      }
      else
      {         
      if(OrderType()==OP_SELL )
         {  
         OrderClose(OrderTicket(),OrderLots(),Ask,2,Red); 
         }
      }  
   }
}
//-----------------------------------------------------+

ордеров через OrdersTotal(). Должен открывать только 1, А он открывает целую кучу!

Помогите понять где фигня получилась???

Не програмист!

Файлы:
 

Попробуйте

Файлы:
 
Figar0 писал(а) >>

Попробуйте

Спасибо! Сам дурень, не заметил!