Ошибки, баги, вопросы - страница 1417

 
A100:
результат typename всегда имеет типа string, иными словами
Я не про то. typename возвращает строку с названием типа. Внутри шаблонизированного метода класса строка с типом равна "int", а внутри вызванного оттуда конструктора - строка содержит "string".
 
Stanislav Korotky:
Я не про то. typename возвращает строку с названием типа. Внутри шаблонизированного метода класса строка с типом равна "int", а внутри вызванного оттуда конструктора - строка содержит "string".
class A { public:
template<typename T>
        A( T ) { Print( typename( T )); }
};
class B { public:
template<typename T>
        void f( T t ) { A a( t ); } //вызываем A::A(...)
};
void OnStart()
{
        B b;
        int i = 0;
        b.f( i );
}
Результат: int
 

Компилятор не сообщает об ошибке при отсутствии #endif

#property library
#ifndef MACRO
#define MACRO

Желательно, чтобы сообщал, иначе трудноуловимые ошибки
 
A100:
Результат: int
Да, такой минимальный пример работает как надо, а более сложный исходник - нет. Написал в СД.
 
CoderMQ4:

Ребята, скажите это баг Маркета или это абсолютно нормально?


не пробовал, но работать не должно, если привязка к железу, а не к операционной системе. Это все равно, что снять винчестер и поставить на другую материнку с другим видео. Начнет сразу искать новые драйверы.

Или у меня неправильное понимание виртуальной машины

 

Вызов виртуальной функции в объекте-экземпляре производного класса приводит к вызову этой функции из базового класса, а не производного.

 
Ilya Malev:

Вызов виртуальной функции в объекте-экземпляре производного класса приводит к вызову этой функции из базового класса, а не производного.

В конструкторе так всегда. Почему? -> google C++ (добавьте к строке запроса слово конструктор)
 
A100:
В конструкторе так всегда. Почему? -> google C++ (добавьте к строке запроса слово конструктор)

Спасибо, не знал) Хорошо бы это и в справку по MQL5 добавить, ну там где про виртуальные функции и конструкторы. Ведь не во всех языках так.

 
Всем привет!
Недавно начал программированием заниматься и столкнулся с такой проблемой, не выставляется СтопЛосс. Подскажите где ошибка?
int start()
  {
   if(CountTrades()==0)
     {
      double ima=iMA(Symbol(),PERIOD_H1,14,0,MODE_SMA,PRICE_CLOSE,1);
      if(Ask>ima)
        {
         ticket=OrderSend(Symbol(),OP_BUY,Lots,Ask,Slippage,0,0,"",Magic,0,Blue);
         if(ticket>0)
           {
            TP=NormalizeDouble(Ask+TakeProfit*Point,Digits);
            bool modify1=OrderModify(ticket,OrderOpenPrice(),0,TP,0);
            {
             SL=NormalizeDouble(Ask-StopLoss*Point,Digits);
            bool modify=OrderModify(ticket,OrderOpenPrice(),SL,0,0);
            }
           }
        }
      else if(Bid<ima)
        {
         ticket=OrderSend(Symbol(),OP_SELL,Lots,Bid,Slippage,0,0,"",Magic,0,Red);
         if(ticket>0)
           {
            TP=NormalizeDouble(Bid-TakeProfit*Point,Digits);
            bool modify1=OrderModify(ticket,OrderOpenPrice(),0,TP,0);
            {
             SL=NormalizeDouble(Bid+StopLoss*Point,Digits);
            bool modify=OrderModify(ticket,OrderOpenPrice(),SL,0,0);
            }
           }
        }
      else
        {
         int order_type=FindLastOrderType();
         if(order_type==OP_BUY)
           {
            price=FindLastPrice(OP_BUY);
            if(Ask<=price-Step*Point)
              {
               lastlot = FindLastLots(OP_BUY);
               lastlot = NormalizeDouble(lastlot * Multiplier, 2);
               ticket=OrderSend(Symbol(),OP_BUY,lastlot,Ask,Slippage,0,0,"",Magic,0,Blue);
               if(ticket>0)
                  ModifyOrders(OP_BUY);
              }
           }
         else if(order_type==OP_SELL)
           {
            price=FindLastPrice(OP_SELL);
            if(Bid<=price+Step*Point)
              {
               lastlot=FindLastLots(OP_SELL);
              }
            lastlot=NormalizeDouble(lastlot*Multiplier,2);
            ticket=OrderSend(Symbol(),OP_SELL,lastlot,Bid,Slippage,0,0,"",Magic,0,Red);
            if(ticket>0)
               ModifyOrders(OP_SELL);
           }
        }
     }
   return(0);
  }
Заранее благодарю)))
 
Сергей Верещак:
      if(Ask>ima)
        {
         ticket=OrderSend(Symbol(),OP_BUY,Lots,Ask,Slippage,0,0,"",Magic,0,Blue);
         if(ticket>0)
           {
            TP=NormalizeDouble(Ask+TakeProfit*Point,Digits);
            bool modify1=OrderModify(ticket,OrderOpenPrice(),0,TP,0);    Установили Тейк профит а стоп лос установли 0  идем далее
            {
             SL=NormalizeDouble(Ask-StopLoss*Point,Digits);
            bool modify=OrderModify(ticket,OrderOpenPrice(),SL,0,0);    Устанавливаем Стоп лос а тейк профит ставим ноль, тоесть удаляе тот который выставили ранее
            }
           }
        }
     
Заранее благодарю)))
Копайте , наводку дал ...