Любые вопросы новичков по MQL4 и MQL5, помощь и обсуждение по алгоритмам и кодам - страница 717

 
Vladimir Pastushak:

Благодарю. У меня не получается вызвать метод родительского класса.

На сколько я помню это делается через родитель :: метод

А сам метод в родителе имеет тело?

 
Artyom Trishkin:

А сам метод в родителе имеет тело?

да имеет

Вот код, что я делаю не так ???

//+------------------------------------------------------------------+

class A

  {

public:

   virtual int Test_A()

     {

      return 100;

     }

  };

//+------------------------------------------------------------------+

class B :public A

  {

public:

   virtual int Test_A()

     {

      return 200;

     }

  };


B b;

//+------------------------------------------------------------------+

void OnStart()

  {

   Comment (A::b.Test_A());

  }

//+------------------------------------------------------------------+


 
Есть индикатор zigzag по которому можно узнать значение цены экстремума, мне нужно  отрисовать трендовую линию от экстремума в будущее(на следующий день).Как это сделать не зная координат  второй точки и значение Time первой точки?
 
Vladimir Pastushak:

Вот код, что я делаю не так ???

нет, так не будет работать

написав тело ной ф-ции Тест() в классе В, Вы закрыли старую ф-цию Тест() и теперь при обьявлении экземпляра класса и вызове метода Тест() всегда будет выполняться В::Тест(), а вот если бы Вы не написали В::Тест(), то всегда срабатывала бы А::Тест()

вот пример сделал. поэкспериментируйте

//+------------------------------------------------------------------+
class A
  {
public:
   virtual int Test_A()  { Print(__FUNCSIG__); return 100;  }
  };

//+------------------------------------------------------------------+
class B :public A
  {
public:
   virtual int Test_A()  { Print(__FUNCSIG__," = ", A::Test_A()); return 200;   }
  };

B b;

//+------------------------------------------------------------------+

void OnStart()

  {
   Print (__FUNCSIG__," = ",b.Test_A());
  }
//+-------------------------------------------------------------
 
Привет. Как сделать порядковое исчисление? Чтобы за место SELL сначало было 1, затем 2 и так далее... пока не обновится когда не будет ордеров. Подскажите!
        if((fMarketOrderss(OP_SELL)>=1)) { 
       if( ((Bid-Opens)/ma+Times/1440) > SELL ) {
if(OrderSend(Symbol(),OP_SELL,0.01,Bid,3,0,0,NULL,321,0,1)>0){} }}
 
Хмм, странно, никто не отвечает.
 
Rustam Bikbulatov:
Хмм, странно, никто не отвечает.

думаю, никто не понимает ваш пост :)


 

Здравствуйте! Как сделать чтобы советник по внешним переменным открыл позиции заданного объема единичных ордеров обоих позиций, например

задано объем единичного ордера = 1.35 лота, общий объем открываемых позиций 500 лотов, эксперт открывает ордер бай объемом 1.35 лота, затем открывает сэлл ордер объемом 1.35 лота,

далее все повторяется пока не откроется 500 лотов бай и 500 лотов сэлл, причем так как количество лотов не кратно 1.35, то последний ордер должен быть меньше чем 1.35

 

Приветствую.

Сделал функцию, которая при достижении ордером "bezubitok" пунктов профита модифицирует ордер перенося сл на уровень открытия ордера. Работает, вроде, корректно, но при тестировании (и на всех тиках) каждый 10-20й раз в журнал пачками пишет сообщение об ошибке 1. 

Нет ошибки, но результат неизвестен

void Bezubitok(){
   for (int i=OrdersTotal()-1; i>=0; i--){
      if(OrderSelect(i, SELECT_BY_POS, MODE_TRADES)){
         if (OrderSymbol() == Symbol() && OrderMagicNumber() == magic){
            if(OrderType()==OP_BUY){
               if (OrderStopLoss()!=OrderOpenPrice() && Ask-OrderOpenPrice()>bezubitok*Point){
                  double sl1 = OrderOpenPrice();
                  if(OrderModify(OrderTicket(), OrderOpenPrice(), sl1, OrderTakeProfit(), 0, Indigo)) {}
                  }
               }
            if(OrderType()==OP_SELL){
               if (OrderStopLoss()!=OrderOpenPrice() && OrderOpenPrice()-Bid>bezubitok*Point){
                  double sl1 = OrderOpenPrice();
                  if(OrderModify(OrderTicket(), OrderOpenPrice(), sl1, OrderTakeProfit(), 0, DeepPink)) {}
                  }
               }
            }   
         }
      }
   }

По какой причине это и как это победить?

 
Andrey Sokolov:

Приветствую.

Сделал функцию, которая при достижении ордером "bezubitok" пунктов профита модифицирует ордер перенося сл на уровень открытия ордера. Работает, вроде, корректно, но при тестировании (и на всех тиках) каждый 10-20й раз в журнал пачками пишет сообщение об ошибке 1.

По какой причине это и как это победить?

Ошибка 1 - это нет ошибки, но результат неизвестен. Дело в том, что вы пытаетесь модифицировать стоп на ту же цену, на которой он уже стоит. Перед модификацией сравнивайте цену стопа с ценой, на которую хотите его установить. Если он уже стоит на этой цене, то и модифицировать нечего.

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