Подскажите где ошибка?

ohr  

Всех привет.

Я не программист так что не судите строго

Посмотрите пожалуйста  где ошибся, заменил индикатор в советнике, так он теперь на каждом тике стал открывать ордер!

Старый код не убирал, а просто закоментил.

//============================================== Открытие 1-го ордера по индикатору =================================
   lotsbuy=0;
   double ma;
   if(time() && totb==0 && tots==0)
      if((UseNewBar && NewBar_B!=iTime(Symbol(),StochTime,0)) || !UseNewBar)
      if(Volume[0]>1) return;
//--- get Moving Average 
        ma=iMA(NULL,0,MovingPeriod,MovingShift,MODE_SMA,PRICE_CLOSE,0);
   //--- buy conditions
           if(Open[1]<ma && Close[1]>ma)
        {
        // if(!ManualTrade && Stochastic("buy")) // if(!ManualTrade && Stochastic("buy"))
          //{
            if(UseMM)
              {
               lotsbuy=MM(mult,UseMoney,MaxTrades,step);

               if(lotsbuy<minLot)
                 {
                  TradeStop();

                  return; //(0);
                 }
              }
            else
               lotsbuy=min_lot;
               
               if(isCloseLastPosByStop(Symbol(),-1,magicall)==true)
               lotsbuy=NormalizeDouble(GetLotLastClosePos(Symbol(),-1,magicall)*mult,2);

            if(AccountFreeMarginCheck(Symbol(),OP_BUY,lotsbuy)>0)
            OpenBuy(step,TP,lotsbuy);

            NewBar_B=iTime(Symbol(),UNB_TF,0);
          // }
        }

//------------------------------------------------------------------------------------
   if(time() && tots==0 && totb==0)
      if((UseNewBar && NewBar_S!=iTime(Symbol(),StochTime,0)) || !UseNewBar)
      if(Volume[0]>1) return;
//--- get Moving Average 
        ma=iMA(NULL,0,MovingPeriod,MovingShift,MODE_SMA,PRICE_CLOSE,0);
//--- sell conditions
         if(Open[1]>ma && Close[1]<ma)
        {
        // if(!ManualTrade && Stochastic("sell"))
         // {
            if(UseMM)
              {
               lotssell=MM(mult,UseMoney,MaxTrades,step);

               if(lotssell<minLot)
                 {
                  TradeStop();

                  return; //(0);
                 }
              }
            else
               lotssell=min_lot;

               if(isCloseLastPosByStop(Symbol(),-1,magicall)==true)
               lotssell=NormalizeDouble(GetLotLastClosePos(Symbol(),-1,magicall)*mult,2);

            if(AccountFreeMarginCheck(Symbol(),OP_SELL,lotssell)>0)
            OpenSell(step,TP,lotssell);

            NewBar_S=iTime(Symbol(),UNB_TF,0);
          // }
        }
Leanid Aladzyeu  

Мне показалось или я не увидел начало кода от Старт, ну а раз открывает на каждом тике  , значит нет проверки на количество открытых позиции

и совет Вам для быстрой отладки кода напишите Принт  на каждую строку и в журнале вы увидите как именно движется ваш код. 

ohr  
Leanid Aladzyeu:

Мне показалось или я не увидел начало кода от Старт, ну а раз открывает на каждом тике  , значит нет проверки на количество открытых позиции

и совет Вам для быстрой отладки кода напишите Принт  на каждую строку и в журнале вы увидите как именно движется ваш код. 

Функция находится в старте, код очень большой, изменения я делал только в этой части кода
ohr  

А за совет спасибо попробую

Leanid Aladzyeu  
ohr:

А за совет спасибо попробую

Ссылку на Видео уроки дать? по которым я сам учился)
ohr  
Leanid Aladzyeu:
Ссылку на Видео уроки дать? по которым я сам учился)
Давайте конечно
ohr  
Leanid Aladzyeu:

 


Спасибо

Leanid Aladzyeu  
ohr:

Спасибо

Там их 16 уроков
ohr  

Ну ошибку то я нашел:

if(time() && totb==0 && tots==0)

Но почему она возникает так и не пойму

Причина обращения: