помогите пожалуйста исправить ошибку not all control paths return a value

Авторизуйтесь или зарегистрируйтесь, чтобы добавить комментарий
Pavel Malyshko
3453
Pavel Malyshko  
здравствуйте!что здесь не так?((( четыре одинаковых ошибки..

double counthistoprofit(int mode){
   double profit=0;
   if(OrdersHistoryTotal()>0){
      for(i=OrdersHistoryTotal()-1;i>=0;i--){
         OrderSelect(i,SELECT_BY_POS,MODE_HISTORY);
         if(OrderSymbol()==Symbol() && OrderType()==OP_BUY && OrderMagicNumber()==magic){
            if(mode==2 || mode==3 && TimeDay(OrderOpenTime())!=TimeDay(Time[0]))break;
            if(mode==4 || mode==5 && TimeMonth(OrderOpenTime())!=TimeMonth(Time[0]))break;
            if(mode==0)profit=profit+(OrderClosePrice()-OrderOpenPrice())/pt;
            if(mode==1)profit=profit+OrderProfit();
            if(mode==2 && TimeDay(OrderOpenTime())==TimeDay(Time[0]))profit=profit+(OrderClosePrice()-OrderOpenPrice())/pt;
            if(mode==3 && TimeDay(OrderOpenTime())==TimeDay(Time[0]))profit=profit+OrderProfit();
            if(mode==4 && TimeMonth(OrderOpenTime())==TimeMonth(Time[0]))profit=profit+(OrderClosePrice()-OrderOpenPrice())/pt;
            if(mode==5 && TimeMonth(OrderOpenTime())==TimeMonth(Time[0]))profit=profit+OrderProfit();
         }
         if(OrderSymbol()==Symbol() && OrderType()==OP_SELL && OrderMagicNumber()==magic){
            if(mode==2 || mode==3 && TimeDay(OrderOpenTime())!=TimeDay(Time[0]))break;
            if(mode==4 || mode==5 && TimeMonth(OrderOpenTime())!=TimeMonth(Time[0]))break;
            if(mode==0)profit=profit+(OrderOpenPrice()-OrderClosePrice())/pt;
            if(mode==1)profit=profit+OrderProfit();
            if(mode==2 && TimeDay(OrderOpenTime())==TimeDay(Time[0]))profit=profit+(OrderOpenPrice()-OrderClosePrice())/pt;
            if(mode==3 && TimeDay(OrderOpenTime())==TimeDay(Time[0]))profit=profit+OrderProfit();
            if(mode==4 && TimeMonth(OrderOpenTime())==TimeMonth(Time[0]))profit=profit+(OrderOpenPrice()-OrderClosePrice())/pt;
            if(mode==5 && TimeMonth(OrderOpenTime())==TimeMonth(Time[0]))profit=profit+OrderProfit();
         }
      }
      return(profit);
   }
}


Evgeny Belyaev
158415
Evgeny Belyaev  
Pavel Malyshko:
здравствуйте!что здесь не так?((( четыре одинаковых ошибки..

double countprofit(int mode){
   double profit=0;
   if(OrdersTotal()>0){
      for(i=OrdersTotal()-1;i>=0;i--){
         OrderSelect(i,SELECT_BY_POS,MODE_TRADES);
         if(OrderSymbol()==Symbol() && OrderType()==OP_BUY && OrderMagicNumber()==magic){
            if(mode==0)profit=profit+(OrderClosePrice()-OrderOpenPrice())/pt;
            if(mode==1)profit=profit+OrderProfit();
         }
         if(OrderSymbol()==Symbol() && OrderType()==OP_SELL && OrderMagicNumber()==magic){
            if(mode==0)profit=profit+(OrderOpenPrice()-OrderClosePrice())/pt;
            if(mode==1)profit=profit+OrderProfit();
         }
      }
      return(profit);
   }
}



Без кода никак.

pt не объявлено.

Ты ж продавец. Наверное через фриланс. Но тебе наверное не поможет. Учи основы.

 if(OrdersTotal()>0){ 
Это не к чему.
Pavel Malyshko
3453
Pavel Malyshko  
Evgeny Belyaev:

Без кода никак.

pt не объявлено.

нужен весь код полностью или часть кода?

Evgeny Belyaev
158415
Evgeny Belyaev  
Pavel Malyshko:

нужен весь код полностью или часть кода?

Мне ничего не нужно. Ты ж продавец. Наверное через фриланс.

Pavel Malyshko
3453
Pavel Malyshko  
Evgeny Belyaev:

Мне ничего не нужно. Ты ж продавец. Наверное через фриланс.

можно и не писать тогда,если такой подход

Pavel Malyshko
3453
Pavel Malyshko  
Evgeny Belyaev:

Можно и не спрашивать если мозгов нет. Код исправлен осталось только вставить в редактор. Удачи. 

что за грубость?
вы исправили своё сообщение и вставили туда код после того,как я написал,что можно и не писать тогда если такой подход!

Pavel Malyshko
3453
Pavel Malyshko  
Evgeny Belyaev:

Привыкай.

Мне п ******. Я ждал когда ты продолжишь флудерасничать, чтоб исправить свое сообщение? Да ну. 

а откуда вдруг взялось вот это :

if(OrdersTotal()>0){ 

Это не к чему.

толку нет от ваших правописаний!не исправило это ошибок!учитесь программировать,может тогда создадите хоть какой-то ценный продукт ,а тот мусор,что есть удалите .

Maksim Slovakov
653
Maksim Slovakov  
Pavel Malyshko:
здравствуйте!что здесь не так?((( четыре одинаковых ошибки..

double counthistoprofit(int mode){
   double profit=0;
   if(OrdersHistoryTotal()>0){
      for(i=OrdersHistoryTotal()-1;i>=0;i--){
         OrderSelect(i,SELECT_BY_POS,MODE_HISTORY);
         if(OrderSymbol()==Symbol() && OrderType()==OP_BUY && OrderMagicNumber()==magic){
            if(mode==2 || mode==3 && TimeDay(OrderOpenTime())!=TimeDay(Time[0]))break;
            if(mode==4 || mode==5 && TimeMonth(OrderOpenTime())!=TimeMonth(Time[0]))break;
            if(mode==0)profit=profit+(OrderClosePrice()-OrderOpenPrice())/pt;
            if(mode==1)profit=profit+OrderProfit();
            if(mode==2 && TimeDay(OrderOpenTime())==TimeDay(Time[0]))profit=profit+(OrderClosePrice()-OrderOpenPrice())/pt;
            if(mode==3 && TimeDay(OrderOpenTime())==TimeDay(Time[0]))profit=profit+OrderProfit();
            if(mode==4 && TimeMonth(OrderOpenTime())==TimeMonth(Time[0]))profit=profit+(OrderClosePrice()-OrderOpenPrice())/pt;
            if(mode==5 && TimeMonth(OrderOpenTime())==TimeMonth(Time[0]))profit=profit+OrderProfit();
         }
         if(OrderSymbol()==Symbol() && OrderType()==OP_SELL && OrderMagicNumber()==magic){
            if(mode==2 || mode==3 && TimeDay(OrderOpenTime())!=TimeDay(Time[0]))break;
            if(mode==4 || mode==5 && TimeMonth(OrderOpenTime())!=TimeMonth(Time[0]))break;
            if(mode==0)profit=profit+(OrderOpenPrice()-OrderClosePrice())/pt;
            if(mode==1)profit=profit+OrderProfit();
            if(mode==2 && TimeDay(OrderOpenTime())==TimeDay(Time[0]))profit=profit+(OrderOpenPrice()-OrderClosePrice())/pt;
            if(mode==3 && TimeDay(OrderOpenTime())==TimeDay(Time[0]))profit=profit+OrderProfit();
            if(mode==4 && TimeMonth(OrderOpenTime())==TimeMonth(Time[0]))profit=profit+(OrderOpenPrice()-OrderClosePrice())/pt;
            if(mode==5 && TimeMonth(OrderOpenTime())==TimeMonth(Time[0]))profit=profit+OrderProfit();
         }
      }
      return(profit);
   }
}

Доброе время суток господа. not all control paths return a value или: не все пути управления возвращают значение. Говоря простым языком; какие бы вы значения не вводили в функцию, значение возвращается всегда одно, в данном случае это "0". 

Чуть больше внимания к скобкам и переменным. Вы возвращаете значение "profit" в рамках оператора "if(OrdersHistoryTotal()>0){", хотя сам оператор "if" прописан в функции "counthistoprofit". Перенесите  "return(profit);" между последней и предпоследней фигурными скобками. И тогда оператор "return" будет возвращать значение "profit" в функцию "counthistoprofit". 

Dmitry Fedoseev
57465
Dmitry Fedoseev  
Pavel Malyshko:
здравствуйте!что здесь не так?((( четыре одинаковых ошибки..


Все разветвления кода должны заканчиваться оператором return(...).

Pavel Malyshko
3453
Pavel Malyshko  
Maksim Slovakov:

Доброе время суток господа. not all control paths return a value или: не все пути управления возвращают значение. Говоря простым языком; какие бы вы значения не вводили в функцию, значение возвращается всегда одно, в данном случае это "0". 

Чуть больше внимания к скобкам и переменным. Вы возвращаете значение "profit" в рамках оператора "if(OrdersHistoryTotal()>0){", хотя сам оператор "if" прописан в функции "counthistoprofit". Перенесите  "return(profit);" между последней и предпоследней фигурными скобками. И тогда оператор "return" будет возвращать значение "profit" в функцию "counthistoprofit". 

спасибо)!с одной стороны компилировать удалось без ошибок...а с другой эксперт перестал открывать сделки в тестере....

Pavel Malyshko
3453
Pavel Malyshko  
Maksim Slovakov:

Доброе время суток господа. not all control paths return a value или: не все пути управления возвращают значение. Говоря простым языком; какие бы вы значения не вводили в функцию, значение возвращается всегда одно, в данном случае это "0". 

Чуть больше внимания к скобкам и переменным. Вы возвращаете значение "profit" в рамках оператора "if(OrdersHistoryTotal()>0){", хотя сам оператор "if" прописан в функции "counthistoprofit". Перенесите  "return(profit);" между последней и предпоследней фигурными скобками. И тогда оператор "return" будет возвращать значение "profit" в функцию "counthistoprofit". 

спасибо..так и сделал..все ошибки исправлены..компиляция прошла успешно..вот только советник перестал открывать сделки..хотя когда были ошибки всё работало в тестере прекрасно)

12
Авторизуйтесь или зарегистрируйтесь, чтобы добавить комментарий