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

 
Artyom Trishkin :

Dürüst olmak gerekirse, bu SB kaynaklarını hiç kullanmadım. Ama renklerin hangi yöntemlerle belirlendiği Güvenlik Konseyi'ne bakmanızı engelleyen şey nedir? Listede ne gösterdiniz:

- yani bunlar nesnelerin adlarıdır - CPanel , CEdit, CBmpButton ve CWndClient sınıfları.

Ve bu sınıfların renkleri depolayan üyelerinin adlarını bulmanız ve hangi yöntemlerle başlatılabileceğini veya değiştirilebileceğini görmeniz gerekir.

Ve muhtemelen önce gerekli değerleri başlatmanız ve ancak o zaman nesnenin kendisini oluşturmanız gerekecektir.

Renkler Tanımlar'da ayarlanır, ardından nesneler ObjectSetInteger() işlevleri kullanılarak renklendirilir. Ayrıca şu anda doğrudan bu yöntemle yeniden boyama yapıyorum. Ancak OOP üzerinden denemek arzu edilir. Anladığım kadarıyla, değişiklik için ayrı bir genel yöntem yoksa, özel üyeye ulaşılamaz. Ben sadece kalıtım, sanal yöntemler konusunda o kadar güçlü değilim, hala "yüzüyorum" ve bu konuyu inceliyorum. Tamam, hizmet masasından renklendirme için genel bir yöntem oluşturmasını isteyeceğim ve eğer başka bir şekilde mümkünse, size nasıl olduğunu söyleyebilirler.
 
LRA :
Hata mesajına tıklayın. İmleç değişkenin adını gösterecektir. Duyurulması gerekiyor
Teşekkür ederim!
 
Kedrov :
Teşekkür ederim!

Bu forumda geri derlenmiş kodlar yayınlamayın. Anladığım kadarıyla kodu değil, sadece bir resim göndermişsiniz. Ancak bu, çalıntı yazılım ürünleriyle çalıştığınız anlamına gelir. Bu kategorik olarak burada hoş karşılanmıyor - bu ... nasıl desek ... topluluk etiğinin ihlali. Burada, forumda ve kaynakta, forum kullanıcılarının aslan payı programcılardır - kendi kodlarımızı yazarız veya meslektaşlarımızın genel gelişmelerini kullanırız. Birinden çalınan kodu kullanır ve yeniden yaparsınız (belki burada bulunan birinden). Sonuç olarak, işinize böyle başlamayın.

 
Vasiliy Pushkaryov :
Renkler Tanımlar'da ayarlanır, ardından nesneler ObjectSetInteger() işlevleri kullanılarak renklendirilir. Ayrıca şu anda doğrudan bu yöntemle yeniden boyama yapıyorum. Ancak OOP üzerinden denemek arzu edilir. Anladığım kadarıyla, değişiklik için ayrı bir genel yöntem yoksa, özel üyeye ulaşılamaz. Ben sadece kalıtım, sanal yöntemler konusunda o kadar güçlü değilim, hala "yüzüyorum" ve bu konuyu inceliyorum. Tamam, hizmet masasından renklendirme için genel bir yöntem yapmasını isteyeceğim ve eğer başka bir şekilde mümkünse, belki size nasıl olduğunu söylerler.

Geçici olarak - bu sınıfı Include\Your_klasörünüze kopyalayın ve renkleri ve bunları ayarlamak ve döndürmek için genel yöntemleri saklamak için ihtiyaç duyduğunuz sınıf üyesi değişkenlerini girin.

Ayrıca, ne istersen yapabilirsin. Eksi - SB'yi güncellerken, orijinal sınıfta iyileştirmeler görünebilir, ancak bunlara sahip olmayacaksınız ve ihtiyacınız olan yöntemleri tekrar kopyalayıp güncellenmiş sınıfa girmeniz gerekecek.

...peki, rengi sakince değiştirmenin bir yolu olmaması garip - tanımlamalar olmadan ...

 

Lütfen yardım edin - tüm enstrümanlardaki tüm açık pozisyonların hacmi (toplam lot sayısı) hakkında nasıl hızlı bir şekilde bilgi alınır? Lütfen özelliği paylaşın.

 
Aleksey Vyazmikin :

Lütfen yardım edin - tüm enstrümanlardaki tüm açık pozisyonların hacmi (toplam lot sayısı) hakkında nasıl hızlı bir şekilde bilgi alınır? Lütfen özelliği paylaşın.


GetAmountLotFromOpenPos() işlevi.

Bu işlev, birçok açık pozisyonun toplamını döndürür. Dikkate alınacak pozisyonların daha doğru seçimi harici parametreler tarafından belirlenir:

  • sy - Piyasa aracının adı. Bu parametreyi ayarlarsanız, işlev yalnızca belirtilen takımın konumlarını dikkate alacaktır. Varsayılan değer "" herhangi bir piyasa aracı anlamına gelir. NULL , geçerli enstrüman anlamına gelir.
  • op - Ticaret işlemi, pozisyon türü. Geçerli değerler: OP_BUY , OP_SELL veya -1 . Varsayılan değer -1 , herhangi bir konum anlamına gelir.
  • mn - Konum Kimliği, MagicNumber. Varsayılan değer -1 , herhangi bir tanımlayıcı anlamına gelir.

 
//+----------------------------------------------------------------------------+
//|  Автор    : Ким Игорь В. aka KimIV,  http://www.kimiv.ru                   |
//+----------------------------------------------------------------------------+
//|  Версия   : 19.02.2008                                                     |
//|  Описание : Возвращает сумму лотов открытых позиций                        |
//+----------------------------------------------------------------------------+
//|  Параметры:                                                                |
//|    sy - наименование инструмента   ( ""  - любой символ,                   |
//|                                     NULL - текущий символ)                 |
//|    op - торговая операция          ( -1  - любая позиция)                  |
//|    mn - MagicNumber                ( -1  - любой магик)                    |
//+----------------------------------------------------------------------------+
double GetAmountLotFromOpenPos(string sy="", int op=-1, int mn=-1) {
  double l=0;
  int    i, k=OrdersTotal();

  if (sy=="0") sy=Symbol();
  for (i=0; i<k; i++) {
    if (OrderSelect(i, SELECT_BY_POS, MODE_TRADES)) {
      if (OrderSymbol()==sy || sy=="") {
        if (OrderType()==OP_BUY || OrderType()==OP_SELL) {
          if (op<0 || OrderType()==op) {
            if (mn<0 || OrderMagicNumber()==mn) {
              l+=OrderLots();
            }
          }
        }
      }
    }
  }
  return(l);
}
 
Vladimir Zubov :

Teşekkür ederim.

 

Lütfen bana şu soruyu söyleyin: Eşiğe göre zikzak(derinlik(nokta olarak, Yüksek(Düşük) n-nokta geçtikten sonra oluşur, derinlik=Derinlik*Nokta). zikzağın tamamlanması, yani son ArrUp noktası vardı, sonra derinlik geri düşecek ve ilk ArrDn noktası oluştu, ondan sonra başka bir ArrDn noktası serisi oluştu, çünkü fiyat düştü (çizim).nokta: Belki bir for döngüsü, Anlayamıyorum.

 //+------------------------------------------------------------------+
//|                                                       FastZZ.mq4 |
//+------------------------------------------------------------------+
#property copyright "Copyright 2012, Yurich"
#property link        "https://login.mql5.com/ru/users/Yurich"
//---
#property indicator_chart_window
#property indicator_buffers 4
#property indicator_color1 Red
#property indicator_color2 Red
#property indicator_color3 Gold
#property indicator_color4 DodgerBlue
#property indicator_width3 3
#property indicator_width4 3

//--- input parameters
extern int   Depth= 10 ;
//---
double zzH[],zzL[];
double depth;
int last,direction,pbars;
datetime lastbar;
double ArrUp[];
double ArrDn[];
//+------------------------------------------------------------------+
int init()
  {
//---- indicators
   SetIndexBuffer ( 0 ,zzH);
   SetIndexBuffer ( 1 ,zzL);
   SetIndexBuffer ( 2 ,ArrUp);
   SetIndexBuffer ( 3 ,ArrDn);
   SetIndexStyle ( 0 , DRAW_ZIGZAG );
   SetIndexStyle ( 1 , DRAW_ZIGZAG );
   SetIndexStyle ( 2 , DRAW_ARROW );
   SetIndexStyle ( 3 , DRAW_ARROW );
   SetIndexArrow ( 2 , 159 );
   SetIndexArrow ( 3 , 159 );
   SetIndexEmptyValue ( 0 , 0.0 );
   SetIndexEmptyValue ( 1 , 0.0 );
   IndicatorDigits ( Digits );
//----
   depth=Depth* Point ;
   direction= 1 ;
   last= 0 ;
   pbars= 0 ;
   lastbar= 0 ;
   return ( 0 );
  }
//+------------------------------------------------------------------+
int start()
  {
   int limit= Bars - IndicatorCounted ()- 1 ;
   if (lastbar!= Time [ 0 ])
     {
      lastbar= Time [ 0 ];
      last++;
     }
   if ( MathAbs ( Bars -pbars)> 1 ) { last= Bars - 1 ; limit=last;}
   pbars= Bars ;
//---
   for ( int i=limit; i> 0 ; i--)
     {
       bool set= false ;
      zzL[i]= 0 ;
      zzH[i]= 0 ;
      ArrUp[i]= EMPTY_VALUE ;
      ArrDn[i]= EMPTY_VALUE ;
       //---
       if (direction> 0 )
        {
         if ( High [i]>zzH[last])
           {
            zzH[last]= 0 ;
            zzH[i]= High [i];
            ArrUp[i]= High [i];
             if ( Low [i]< High [last]-depth)
              {
               if ( Open [i]< Close [i])
                 {
                  zzH[last]= High [last];
                  ArrUp[last]= High [last];
                 }
               else direction=- 1 ;
               zzL[i]= Low [i];
               ArrDn[i]= Low [i];
              }
            last=i;
            set= true ;
           }
         if ( Low [i]<zzH[last]-depth && (!set || Open [i]> Close [i]))
           {
            zzL[i]= Low [i];
            ArrDn[i]= Low [i];
             if ( High [i]>zzL[i]+depth && Open [i]< Close [i])
              {
               zzH[i]= High [i];
               ArrUp[i]= High [i];
              }
             else direction=- 1 ;
            last=i;
           }
        }
       else //direction<0
        {
         if ( Low [i]<zzL[last])
           {
            zzL[last]= 0 ;
            zzL[i]= Low [i];
            ArrDn[i]= Low [i];
             if ( High [i]> Low [last]+depth)
              {
               if ( Open [i]> Close [i])
                 {
                  zzL[last]= Low [last];
                  ArrDn[last]= Low [last];
                 }
               else direction= 1 ;
               zzH[i]= High [i];
               ArrUp[i]= High [i];
              }
            last=i;
            set= true ;
           }
         if ( High [i]>zzL[last]+depth && (!set || Open [i]< Close [i]))
           {
            zzH[i]= High [i];
            ArrUp[i]= High [i];
             if ( Low [i]<zzH[i]-depth && Open [i]> Close [i])
              {
               zzL[i]= Low [i];
               ArrDn[i]= Low [i];
              }
             else direction= 1 ;
            last=i;
           }
        }
     }
//----
   zzH[ 0 ]= 0 ;
   zzL[ 0 ]= 0 ;
//----
   return ( 0 );
  }
//+------------------------------------------------------------------+
 

Merhaba.

Danışmanı nasıl durduracağınızı ve yeni bir mum göründüğünde onu nasıl başlatacağınızı öğrenin.

Neden: