Помогите, не могу понять почему эксперт не торгует

 
Проблема такая решил написать советника для себя побаловаться, а он не хороший такой берет и заставляет меня голову ломать, вроде все правильно но ставки он только закрывает, а новых не открывает вообще не каких, может я где напортачил смысл сбил или не недодал смыслу? Советник работает так - 1 бар открытый ниже ма но закрытый выше ма это повод для ставки на рост в 0 баре, как только цена пересечет в обратном направлении эта повод закрыть приведущию ставку и открыть новую по напровлению. Добавлю еще я открываю ставку, он ее тупа вовремя пересечения закрывает, но новую не открывает хотя советник написан так что даже если нет ставки все равно он должен открыть хотя бы одну по направлению. Помогите решить проблему, при много благодарен заранее всем помогающим.
Файлы:
 
xameleon:
Проблема такая решил написать советника для себя побаловаться, а он не хороший такой берет и заставляет меня голову ломать, вроде все правильно но ставки он только закрывает, а новых не открывает вообще не каких, может я где напортачил смысл сбил или не недодал смыслу? Советник работает так - 1 бар открытый ниже ма но закрытый выше ма это повод для ставки на рост в 0 баре, как только цена пересечет в обратном направлении эта повод закрыть приведущию ставку и открыть новую по напровлению. Добавлю еще я открываю ставку, он ее тупа вовремя пересечения закрывает, но новую не открывает хотя советник написан так что даже если нет ставки все равно он должен открыть хотя бы одну по направлению. Помогите решить проблему, при много благодарен заранее всем помогающим.

А логи где?
 
Сори логов нет, просто посмотрите по коду все там правельно или нет. Код не большой.
 
xameleon:
Сори логов нет, просто посмотрите по коду все там правельно или нет. Код не большой.

Надо бы ошибки в названии топика исправить, да и запятые не помешали бы
 
{buyTP=Ask+TakeProfit*Point;
   sellTP=Bid-TakeProfit*Point;}
if(StopLoss>0)
  {buySL=Ask-StopLoss*Point;
   sellSL=Bid+StopLoss*Point;}
   if(oBuy == 1)
   { 
   while(!IsTradeAllowed()) Sleep(100);
   OrderSend(Symbol(),OP_BUY,LotSelect(MaxRisk),Ask,3,buySL,buyTP,"лот открыт на покупку",0,0,CLR_NONE)
Цены не нормализованы -- как одна из причин
 
xameleon:
Проблема такая решил написать советника для себя побаловаться, а он не хороший такой берет и заставляет меня голову ломать, вроде все правильно но ставки он только закрывает, а новых не открывает вообще не каких, может я где напортачил смысл сбил или не недодал смыслу? Советник работает так - 1 бар открытый ниже ма но закрытый выше ма это повод для ставки на рост в 0 баре, как только цена пересечет в обратном направлении эта повод закрыть приведущию ставку и открыть новую по напровлению. Добавлю еще я открываю ставку, он ее тупа вовремя пересечения закрывает, но новую не открывает хотя советник написан так что даже если нет ставки все равно он должен открыть хотя бы одну по направлению. Помогите решить проблему, при много благодарен заранее всем помогающим.


у вас функция ставка всё время с нулевыми параметрами вызывается (первые два).

Stavka(oBuy, oSell, TakeProfit, StopLoss);

oBuy, oSell инициализируются нулём, а затем в них заносится кол-во уже открытых позиций (а как их открыли то?)

Наверное нужно в первом случае (где бай) - Stavka(1, 0, TakeProfit, StopLoss); а где селл Stavka(0, 1, TakeProfit, StopLoss);

....
if(oBuy == 0 && Open[1]< ma && Close[1]> ma) 
{ 
   if (oSell == 1)
   {
      for(int j = OrdersTotal() - 1 ; j >= 0 ; j--)
      {
         if(OrderSelect(j,SELECT_BY_POS,MODE_TRADES)) CloseOrder();
      }
    }
    Stavka(1, 0, TakeProfit, StopLoss);
}
if(oSell==0 && Open[1]>ma && Close[1]<ma)
{ 
   if (oBuy == 1)
   {
      for(int k = OrdersTotal()- 1 ; k>=0 ; k--)
      {
         if(OrderSelect(k,SELECT_BY_POS,MODE_TRADES)) CloseOrder();
      }
   }
   Stavka(0, 1, TakeProfit, StopLoss);
 }
.....
 
Avals:


у вас функция ставка всё время с нулевыми параметрами вызывается (первые два).

Stavka(oBuy, oSell, TakeProfit, StopLoss);

oBuy, oSell инициализируются нулём, а затем в них заносится кол-во уже открытых позиций (а как их открыли то?)

Наверное нужно где бай Stavka(1, 0, TakeProfit, StopLoss); а где селл Stavka(0, 1, TakeProfit, StopLoss);



спосибо большое! дествительно смысел был иммено тут потерян.
Причина обращения: