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

 
Artyom Trishkin:
Ну так проверяйте количество открытых позиций на нулевой свече M15. Если уже есть позиция, и она открыта на нулевой свече M15, то больше не открывать.
Я не очень хорошо разбираюсь в программировании, но вот этот модуль этим и занимается же
b=0;
    for (i=OrdersTotal()-1;i>=0;i--)  
       {
        RefreshRates();
        if(OrderSelect (i, SELECT_BY_POS, MODE_TRADES) == true) a = 0;
        if (OrderSymbol() == Symbol() && OrderMagicNumber() == Magic) b++;
       }
но вопрос в том что когда ордер закроется по SL или TP следующий сигнал  на М15 его вновь откроет.
 
customer03:
Я не очень хорошо разбираюсь в программировании, но вот этот модуль этим и занимается же
b=0;
       }
но вопрос в том что когда ордер закроется по SL или TP следующий сигнал  на М15 его вновь откроет.

Попробуйте сделать контроль на новый бар по Н1

b=0;
    for (i=OrdersTotal()-1;i>=0;i--)  
       {
        RefreshRates();
        if(OrderSelect (i, SELECT_BY_POS, MODE_TRADES) == true) a = 0;
        if (OrderSymbol() == Symbol() && OrderMagicNumber() == Magic) b++;
       }

      
if(  stM1 <= 20 && stM0 > 20  && stH0 > 70  && b==0   && opp != iTime(_Symbol,PERIOD_H1,0)) // покупка
      {
       opp = iTime(_Symbol,PERIOD_H1,0);

    RefreshRates();
    op = Ask;
 
Vitaly Muzichenko:

Попробуйте сделать контроль на новый бар по Н1

b=0;
    for (i=OrdersTotal()-1;i>=0;i--)  
       {
        RefreshRates();
        if(OrderSelect (i, SELECT_BY_POS, MODE_TRADES) == true) a = 0;
        if (OrderSymbol() == Symbol() && OrderMagicNumber() == Magic) b++;
       }

      
if(  stM1 <= 20 && stM0 > 20  && stH0 > 70  && b==0   && opp != iTime(_Symbol,PERIOD_H1,0)) // покупка
      {
       opp = iTime(_Symbol,PERIOD_H1,0);

    RefreshRates();
    op = Ask;
Попробовал, но что то никаких изменений.
 
customer03:
Я не очень хорошо разбираюсь в программировании, но вот этот модуль этим и занимается же
b=0;
    for (i=OrdersTotal()-1;i>=0;i--)  
       {
        RefreshRates();
        if(OrderSelect (i, SELECT_BY_POS, MODE_TRADES) == true) a = 0;
        if (OrderSymbol() == Symbol() && OrderMagicNumber() == Magic) b++;
       }
но вопрос в том что когда ордер закроется по SL или TP следующий сигнал  на М15 его вновь откроет.

Нет, этот кусок кода точно не этим занимается.

Вам нужно проверить что бар открытия позиции на периоде М15 не равен нулю - вот тогда можно открывать позицию:

if(iBarShift(Symbol(),PERIOD_M15,OrderOpenTime())!=0)
  {
   // код открытия позиции
  }
 

Здравствуйте! Помогите разобратся с классами, что я делаю не так:

class ASD
  {
private:
   // Здесь располагаются переменные и функции, доступные только внутри класса
  
  int c (int m_a,int m_b)
 {    int m_d = m_a+m_b;}

public:
  void d (int a,int b )
  { 
  m_a=a+b;    
  }
  
   // Здесь располагаются переменные и функции, доступные также вне класса
  };
 
Vikon:

Здравствуйте! Помогите разобратся с классами, что я делаю не так:

class ASD
  {
private:
   // Здесь располагаются переменные и функции, доступные только внутри класса
  
  int c (int m_a,int m_b)
 {    int m_d = m_a+m_b;}

public:
  void d (int a,int b )
  { 
  m_a=a+b;    
  }
  
   // Здесь располагаются переменные и функции, доступные также вне класса
  };
Начните с прочтения статьи.
 
Artyom Trishkin:
Начните с прочтения статьи.

Я ее и читаю, но чуток не догоняю. 

Вот что получается:

класс:

class ASD

  {

private:

   // Здесь располагаются переменные и функции, доступные только внутри класса

   int c(int m_a,int m_b)

     {
      m_a=a+b; m_b=a-b;

      int m_d=m_a+m_b;

      d=m_d;

      return(c(m_a,m_b));
     }

public:

   int               a;

   int               b;

   int               d;

  };

скрипт:

#include <ASD.mqh>


ASD ar;
//+------------------------------------------------------------------+

//| Script program start function                                    |

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

void OnStart()

  {

   ar.a=1;

   ar.b=3;

   Alert(ar.d);

  }
//+------------------------------------------------------------------+

 Алерт выдает ноль. Что не так??

 
Vikon:

Я ее и читаю, но чуток не догоняю. 

Вот что получается:

класс:


 Алерт выдает ноль. Что не так??

Трудно код вставить посредством кнопки SRC ?

Я за вас вставил правильно код.

 
Vikon:

Я ее и читаю, но чуток не догоняю. 

Вот что получается:

класс:

class ASD

  {

private:

   // Здесь располагаются переменные и функции, доступные только внутри класса

   int c(int m_a,int m_b)

     {
      m_a=a+b; m_b=a-b;

      int m_d=m_a+m_b;

      d=m_d;

      return(c(m_a,m_b));
     }

public:

   int               a;

   int               b;

   int               d;

  };

скрипт:

#include <ASD.mqh>


ASD ar;
//+------------------------------------------------------------------+

//| Script program start function                                    |

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

void OnStart()

  {

   ar.a=1;

   ar.b=3;

   Alert(ar.d);

  }
//+------------------------------------------------------------------+

 Алерт выдает ноль. Что не так??

Внутри класса сделайте Print'ы значениям. А потом глядите в журнале что там будет распечатано при запуске скрипта ;)
 
Artyom Trishkin:
Внутри класса сделайте Print'ы значениям. А потом глядите в журнале что там будет распечатано при запуске скрипта ;)
Принты можно вставить только внутри функции, а как вызвать эту функцию что бы принт или алерт заработал не пойму. Вы можете помочь исправив мой код с тремя простыми переменными??? Я все делаю как и описано в статье, но редактор не пропускает, или что то не дописано или что то не допонято, влюбом случае стена, собственно поэтому и обратился за помощю. За SKC спасибо.
Причина обращения: