Hatalar, hatalar, sorular - sayfa 2247

 
A100 :
build 1755\1795 hatasız derler. Yani bu doktor için ... özellikle şablon olmadığı için her şey yolunda ... ama şablon nasıl etkileyebilir?!

1816 kullanıyorum. Evet, 1795 sorunsuz derleniyor. Ayrıca 1881'e baktım - derlenmiyor. Yani, doktor hakkında, şiddetle söylendi.

 
fxsaber :

Kullanılabilirlik örneğine bakın.

STL, C++'dan geldiği için kullanım örnekleri burada bulunabilir. MQL'ye taşımanın özü, kapsayıcı soyutlama ve algoritmaların genelleştirilmesi ilkesini olabildiğince eksiksiz olarak tekrarlamaktır. Özellikle, programlama stilini basitleştirmek mümkündür - aksi takdirde genellikle birkaç döngü olarak yazılanları bir satırda hesaplamalarla yazmak mümkündür.

 
Stanislav Korotky :

STL, C++'dan geldiği için kullanım örnekleri burada bulunabilir.

Ne yazık ki, bu dili anlamıyorum.

 

Beyler göstergelerde periyot değiştiğinde global değişkenlerin sıfırlandığı doğru mu ????

 string test= "" ;
int OnInit ()
  {
   Print ( "N 1 = " ,test);
   test= "Rezult" ;
   Print ( "N 2 = " ,test);
   return ( INIT_SUCCEEDED );
  }
//+------------------------------------------------------------------+
//| Custom indicator iteration function                              |
//+------------------------------------------------------------------+
int OnCalculate ( const int rates_total,
                 const int prev_calculated,
                 const int begin,
                 const double &price[])
  {
   Print ( "N 3 = " ,test);
   return (rates_total);
  }

Teorik olarak Expert Advisors'daki gibi olmalı, sıfırlanmamalı.....

Dönem değiştirilirken global değişkenlerin verileri nasıl kaydedilir?

 
Vladimir Pastushak :

Beyler göstergelerde periyot değiştiğinde global değişkenlerin sıfırlandığı doğru mu ????

bana gelince, danışmanlarda sıfırlanmamaları normal değil
 
TheXpert :
bana gelince, danışmanlarda sıfırlanmamaları normal değil

Bu tür değişkenler gerekirse sıfırlanmalıdır.

Dönem değiştirilirken global değişken sıfıra ayarlanmamalıdır...

Dönem değiştirirken veri kaydetme imkanımız yok...
 
Vladimir Pastushak :

Bu tür değişkenler gerekirse sıfırlanmalıdır.

Dönem değiştirilirken global değişken sıfıra ayarlanmamalıdır...

Dönem değiştirirken veri kaydetme imkanımız yok...

Nasıl kalmadı?
Birçok seçenek var.
Benim için en uygun olanı kaynaklar aracılığıyla görülür.
Uzun zamandır kendim kullanıyorum.

 
Nikolai Semko :

Nasıl kalmadı?
Birçok seçenek var.
Benim için en uygun olanı kaynaklar aracılığıyla görülür.
Uzun zamandır kendim kullanıyorum.

Örnek verin lütfen...

 
Vladimir Pastushak :

Bu tür değişkenler gerekirse sıfırlanmalıdır.

Periyodu değiştirirken global bir değişken sıfıra ayarlanmamalıdır ...

Dönem değiştirirken veri kaydetme imkanımız yok...

Neden olmasınlar? Yeni dönem --> göstergenin yeni örneği. Ve göstergenin uzak örneğinin değişkeninin yenisiyle ne gibi bir ilişkisi olabilir?

 
Vladimir Pastushak :

Örnek verin lütfen...

 union DoubleUint { double d; uint u[ 2 ]; };


class Cdouble
  {
private :
   string             Name;
   uint               Var[ 2 ];
   uint               w;
   uint               h;
   DoubleUint        du;

public :
                     Cdouble( const string name, double var);
                    ~Cdouble();
   bool               Ok;
   bool               Set( double var);
   double             value;
  };

Cdouble::Cdouble( const string name, double var)
  {
   w= 2 ;
   h= 1 ;
   Ok= false ;
   Name= "::" +name+ IntegerToString ( ChartGetInteger ( 0 , CHART_WINDOW_HANDLE ));
   if ( ResourceReadImage (Name,Var,w,h))
     {
      du.u[ 0 ]=Var[ 0 ];
      du.u[ 1 ]=Var[ 1 ];
      value=du.d;
      Ok= true ;
     }
   else
     {
      du.d=var;
      Var[ 0 ]=du.u[ 0 ];
      Var[ 1 ]=du.u[ 1 ];
      value=var;
       if (! ResourceCreate (Name,Var, 2 , 1 , 0 , 0 , 0 , COLOR_FORMAT_XRGB_NOALPHA )) printf ( "Error create Resource: " + DoubleToString ( GetLastError (), 0 ));
       else Ok= true ;
     }
  }

Cdouble::~Cdouble()
  {
   if ( _UninitReason != REASON_RECOMPILE && _UninitReason != REASON_CHARTCHANGE ) ResourceFree (Name);
  }
//+------------------------------------------------------------------+
bool Cdouble::Set( double var)
  {
   du.d=var;
   Var[ 0 ]=du.u[ 0 ];
   Var[ 1 ]=du.u[ 1 ];
   value=var;
   Ok= false ;
   if (! ResourceCreate (Name,Var, 2 , 1 , 0 , 0 , 0 , COLOR_FORMAT_XRGB_NOALPHA )) { printf ( "Error create Resource: " + DoubleToString ( GetLastError (), 0 )); return ( false );}
   else { Ok= true ; return ( true );}
  }
//+------------------------------------------------------------------+

Ve işte böyle bir sınıfı kullanan göstergenin kendisi
TF'ye tıklayın ve her şeyin yolunda olduğunu göreceksiniz.
 #include <CVar\Variable.mqh>

Cdouble d ( "abracadabra" ,- 898767.98798 );

int OnInit ()
  {
   EventSetMillisecondTimer ( 1000 );
   return ( INIT_SUCCEEDED );
  }
int OnCalculate ( const int rates_total,
                 const int prev_calculated,
                 const int begin,
                 const double &price[])
  {
   return (rates_total);
  }

void OnTimer ()
  {
   Comment ( DoubleToString (d.value, 5 ));
   d.Set(d.value+ 0.01 );  
  }