MQL4 ve MQL5 ile ilgili herhangi bir acemi sorusu, algoritmalar ve kodlar hakkında yardım ve tartışma - sayfa 92

 
Artyom Trishkin :
Peki, sıfır mum M15'teki açık pozisyonların sayısını kontrol edin. Zaten bir pozisyon varsa ve sıfır mum M15'te açıksa, tekrar açmayın.
Programlamada pek iyi değilim ama bu modül tam da bunu yapıyor.
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++;
       }
ama soru şu ki, emir SL veya TP tarafından kapatıldığında, M15'teki bir sonraki sinyal onu tekrar açacak.
 
customer03 :
Programlamada pek iyi değilim ama bu modül tam da bunu yapıyor
b= 0 ;
       }
ama soru şu ki, emir SL veya TP tarafından kapatıldığında, M15'teki bir sonraki sinyal onu tekrar açacak.

H1'de yeni bir çubuk üzerinde kontrol yapmaya çalışın

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 :

H1'de yeni bir çubuk üzerinde kontrol yapmaya çalışın

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 ;
Denedim ama bir değişiklik yok.
 
customer03 :
Programlamada pek iyi değilim ama bu modül tam da bunu yapıyor.
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++;
       }
ama soru şu ki, emir SL veya TP tarafından kapatıldığında, M15'teki bir sonraki sinyal onu tekrar açacak.

Hayır, bu kod parçası kesinlikle bunu yapmıyor.

M15 döneminde bir pozisyon açma çubuğunun sıfıra eşit olmadığını kontrol etmeniz gerekir - o zaman bir pozisyon açabilirsiniz:

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

Merhaba! Sınıfları anlamama yardım et, neyi yanlış yapıyorum:

sınıf ASD
{
özel:
// Sadece sınıf içinde kullanılabilen değişkenler ve fonksiyonlar
int c (int m_a, int m_b)
{int m_d = m_a+m_b;}

halka açık:
geçersiz d (int a,int b )
{
m_a=a+b;
}
// Sınıf dışında da kullanılabilen değişkenler ve fonksiyonlar
};
 
Vikon :

Merhaba! Sınıfları bulmama yardım et, neyi yanlış yapıyorum:

sınıf ASD
{
özel:
// Sadece sınıf içinde kullanılabilen değişkenler ve fonksiyonlar
int c (int m_a, int m_b)
{int m_d = m_a+m_b;}

halka açık:
geçersiz d (int a,int b )
{
m_a=a+b;
}
// İşte sınıfın dışında da kullanılabilen değişkenler ve fonksiyonlar
};
Makaleyi okuyarak başlayın.
 
Artyom Trishkin :
Makaleyi okuyarak başlayın.

Okudum ama tam olarak yakalayamadım.

İşte olanlar:

Sınıf:

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;

  };

senaryo:

#include <ASD.mqh>


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

//| Script program start function                                    |

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

void OnStart ()

  {

   ar.a= 1 ;

   ar.b= 3 ;

   Alert (ar.d);

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

Uyarı sıfır verir. Sorun nedir??

 
Vikon :

Okudum ama tam olarak yakalayamadım.

İşte olanlar:

Sınıf:


Uyarı sıfır verir. Sorun nedir??

SRC düğmesini kullanarak kodu eklemek zor mu?

Sizin için doğru kodu yapıştırdım.

 
Vikon :

Okudum ama tam olarak yakalayamadım.

İşte olanlar:

Sınıf:

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;

  };

senaryo:

#include <ASD.mqh>


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

//| Script program start function                                    |

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

void OnStart ()

  {

   ar.a= 1 ;

   ar.b= 3 ;

   Alert (ar.d);

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

Uyarı sıfır verir. Sorun nedir??

Sınıfın içinde, değerlere Print 's yapın. Ardından, komut dosyasını çalıştırdığınızda orada ne yazdırılacağına günlüğe bakın;)
 
Artyom Trishkin :
Sınıf içinde, değerlere Prints yapın. Ardından, komut dosyasını çalıştırdığınızda orada ne yazdırılacağına günlüğe bakın;)
Baskılar yalnızca işlevin içine eklenebilir, ancak yazdırma veya uyarının çalışması için bu işlevi nasıl çağıracağımı anlamıyorum. Kodumu üç basit değişkenle düzelterek yardımcı olabilir misiniz ??? Her şeyi yazıda anlatıldığı gibi yapıyorum ama editör atlamıyor ya da bir şey eklenmemiş ya da bir şey anlaşılmamış, her halükarda duvar, bu yüzden yardım istedim. SKC için teşekkürler.