Неадекватно работающий 1й мой советник

 
Это мой 1й самостоятельный советник. Пусть и убыточный, но я хочу набить руку.

Опыта не хватает, и походу, где-то ошибки - советник открывает ордер только на покупку и много... Компиляцию проходит.

Помогите, если не трудно исправить...

Кратко его суть: есть скользящая средняя. при пересечении ее и закрытия бара - выставить ордер в ту сторону и закрыть старый. И наоборот. При достижении цели закрытие по Take Profit.

Код:
extern int Period_MA = 576;

extern int Take_Profit = 100;

extern int Slippage = 10;

bool B = TRUE;

bool S = TRUE;



int start()
{
  double MA;
  MA = iMA(NULL,0,Period_MA,0,MODE_SMA,PRICE_CLOSE,0);

//--------------------------------------------------------------------

  if (iClose(NULL,0,1)>MA && B==true) //условие, что бар должен закрыться выше МА и при условии B==true .
    {
       if (OrderType()==OP_SELL) OrderDelete(OrderTicket()); // закрытие старого ордера на продажу
       OrderSend (Symbol(),OP_BUY,0.1,Ask,3,0,Bid+Take_Profit*Point); // открытие ордера на покупку
       S = true; B = false; // присвоить S = true, чтобы потом можно было открыть ордер на продажу и B = false, чтобы больше не открывался на покупку
       return;
    }
//--------------------------------------------------------------------

  if (iClose(NULL,0,1)<MA && S==true) // все наоборот)))
    {
       if (OrderType()==OP_BUY) OrderDelete(OrderTicket());
       OrderSend (Symbol(),OP_SELL,0.1,Ask,3,0,Bid-Take_Profit*Point);
       S = false; B = true;
       return;
    }

//--------------------------------------------------------------------

  return(0);
}

//+------------------------------------------------------------------+
 
Это не советник. Я даже и не знаю что это.
 
okvseok:
Это мой 1й самостоятельный советник. Пусть и убыточный, но я хочу набить руку.

Опыта не хватает, и походу, где-то ошибки - советник открывает ордер только на покупку и много... Компиляцию проходит.

Помогите, если не трудно исправить...

Кратко его суть: есть скользящая средняя. при пересечении ее и закрытия бара - выставить ордер в ту сторону и закрыть старый. И наоборот. При достижении цели закрытие по Take Profit.

Код:

Читайте учебник - там всё есть. Разбирайте советников в нём предоставленных к изучению и всё.
Причина обращения: