Открываются только ордеры Sell

 
Написал код,который делает неплохой профит,но обнаружил,что он открывает только на Sell. Несколько раз все пересмотрел,но не нашел ошибку.
//жжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжж
extern int FastMacd = 12;
extern int SlowMacd = 26;
extern int RSIperiod = 11;
extern int RSIlevel = 40;
extern int CCIperiod = 7;
extern int CCIlevel = 40;
extern double Lots = 0.3;
extern double Maclevel = 0.00072;
extern double SL = 270;
extern double percent = 8;
//--------------------------------------------------------------------------------------------
int
per,
zak,
total;
//--------------------------------------------------------------------------------------------
double
macd,
macd_1,
signal,
signal_1,
CCI,
RSI;
//жжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжж
int init()
{
//============================================================================================
SL = SL*Point;
return;
//============================================================================================
}
//жжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжж
int start()
{
//============================================================================================
total=OrdersTotal();
//--------------------------------------------------------------------------------------------
macd=iMACD(NULL,0,FastMacd,SlowMacd,9,PRICE_CLOSE,MODE_MAIN,1);
macd_1=iMACD(NULL,0,FastMacd,SlowMacd,9,PRICE_CLOSE,MODE_MAIN,0);
signal=iMACD(NULL,0,FastMacd,SlowMacd,9,PRICE_CLOSE,MODE_SIGNAL,1);
signal_1=iMACD(NULL,0,FastMacd,SlowMacd,9,PRICE_CLOSE,MODE_SIGNAL,0);
RSI=iRSI(NULL,0,RSIperiod,PRICE_CLOSE,0);
CCI=iRSI(NULL,0,CCIperiod,PRICE_CLOSE,0);
//--------------------------------------------------------------------------------------------
if (Peresechenie()==1) Open_Buy();
if (Peresechenie()==2) Open_Sell();
//============================================================================================
if (Zakrytiye()==1) Close_Buy();
if (Zakrytiye()==2) Close_Sell();
//============================================================================================
return;
}
//жжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжж
int Peresechenie() 
{
per=0;
//============================================================================================
if (macd<signal && macd_1>signal_1 && signal<-Maclevel && RSI<RSIlevel && CCI<-CCIlevel) per=1;
//--------------------------------------------------------------------------------------------
if (macd>signal && macd_1<signal_1 && signal>Maclevel && RSI>(100-RSIlevel) && CCI>CCIlevel) per=2;
//============================================================================================
return(per);
}
//жжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжж
int Zakrytiye()
{
zak=0;
//============================================================================================
if (macd>signal && macd_1<signal_1 && signal>0) zak=1;
//--------------------------------------------------------------------------------------------
if (macd<signal && macd_1>signal_1 && signal<0) zak=2;
//============================================================================================
return(zak);
}
//жжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжж
int Open_Buy() // Функция открытия Buy
{
//============================================================================================
if (total<2)
OrderSend(Symbol(),OP_BUY, LotsOptimized(), Ask, 0, Ask-SL, 0, "", 0, 0, Blue);
//============================================================================================
return;
}
//жжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжж
int Open_Sell() // Функция открытия Sell
{
//============================================================================================
if (total<2)
OrderSend(Symbol(),OP_SELL, LotsOptimized(), Bid, 0, Bid+SL, 0, "", 0, 0, Red);
//============================================================================================
return;
}
//жжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжж
int Close_Buy()
{
//============================================================================================
for(int i = OrdersTotal()-1; i>=0; i--)
{
if (OrderSelect(i,SELECT_BY_POS,MODE_TRADES)==true)
if(OrderType()==OP_BUY)
{
OrderClose(OrderTicket(),OrderLots(),Bid,0,White);
}
//============================================================================================
return;
}
}
//жжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжж
int Close_Sell()
{
//============================================================================================
for(int i = OrdersTotal()-1; i>=0; i--)
{
if (OrderSelect(i,SELECT_BY_POS,MODE_TRADES)==true)
if(OrderType()==OP_SELL)
{
OrderClose(OrderTicket(),OrderLots(),Ask,0,White);
}
//============================================================================================
return;
}
}
//жжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжж
double LotsOptimized()
{
double lot=Lots;
lot=NormalizeDouble(AccountFreeMargin()*percent/100/1000.0,2);
if(lot<0.1) lot=0.1;
return(lot);
}
//жжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжж
 
Eugene1305:
Написал код,который делает неплохой профит,но обнаружил,что он открывает только на Sell. Несколько раз все пересмотрел,но не нашел ошибку.
CCI=iRSI(NULL,0,CCIperiod,PRICE_CLOSE,0);

Переменная CCI, а индикатор RSI, соответственно меньше 0 он и не бывает

 
точно!а я и не заметил. Спасибо!
 
Eugene1305:
точно!а я и не заметил. Спасибо!
Прикольно будет, если после исправления ошибки профит испарится. А такие случаи бывали.