오류, 버그, 질문 - 페이지 2247

 
A100 :
빌드 1755\1795는 오류 없이 컴파일됩니다. 그래서 이것은 의사 를 위한 것입니다 ... 특히 템플릿이 없으면 모든 것이 괜찮습니다 ... 그러나 템플릿이 어떻게 영향을 미칠 수 있습니까?

저는 1816을 사용하고 있습니다. 예, 1795는 문제 없이 컴파일됩니다. 나는 또한 1881을 보았습니다. 컴파일되지 않습니다. 그래서 의사에 대해서는 강하게 말했다.

 
fxsaber :

사용성 예를 참조하십시오.

STL은 C++에서 제공되기 때문에 사용 예제를 찾을 수 있습니다. MQL 포팅의 본질은 컨테이너의 추상화 원칙과 알고리즘의 일반화를 가능한 한 완전히 반복하는 것입니다. 특히, 프로그래밍 스타일을 단순화하는 것이 가능합니다. 일반적으로 계산과 함께 여러 루프로 작성되는 것을 한 줄에 작성하는 것입니다.

 
Stanislav Korotky :

STL은 C++에서 제공되기 때문에 사용 예제를 찾을 수 있습니다.

불행히도 나는 이 언어를 이해하지 못합니다.

 

얘들아 인디케이터에서 주기가 바뀌면 전역변수 가 0으로 초기화 되는거 맞지????

 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);
  }

이론적으로 Expert Advisors와 같아야하며 재설정해서는 안됩니다 .....

기간을 변경할 때 전역 변수의 데이터를 저장하는 방법은 무엇입니까?

 
Vladimir Pastushak :

얘들아 인디케이터에서 주기가 바뀌면 전역변수 가 0으로 초기화 되는거 맞지????

나 같은 경우 어드바이저에서 초기화되지 않는 것은 정상이 아니다.
 
TheXpert :
나 같은 경우 어드바이저에서 초기화되지 않는 것은 정상이 아니다.

이러한 변수는 필요한 경우 재설정해야 합니다.

기간을 변경할 때 전역 변수 를 0으로 설정하면 안 됩니다...

기간 변경시 데이터를 저장할 수 있는 기능이 없습니다...
 
Vladimir Pastushak :

이러한 변수는 필요한 경우 재설정해야 합니다.

기간을 변경할 때 전역 변수 를 0으로 설정하면 안 됩니다...

기간 변경시 데이터를 저장할 수 있는 기능이 없습니다...

어떻게 남아 있지 않습니까?
많은 옵션이 있습니다.
나에게 가장 편리한 것은 리소스를 통해 볼 수 있습니다.
나는 오랫동안 그것을 스스로 사용하고 있습니다.

 
Nikolai Semko :

어떻게 남아 있지 않습니까?
많은 옵션이 있습니다.
나에게 가장 편리한 것은 리소스를 통해 볼 수 있습니다.
나는 오랫동안 그것을 스스로 사용하고 있습니다.

예를 들어주세요...

 
Vladimir Pastushak :

이러한 변수는 필요한 경우 재설정해야 합니다.

기간을 변경할 때 전역 변수 를 0으로 설정하면 안 됩니다...

기간 변경시 데이터를 저장할 수 있는 기능이 없습니다...

왜 안되나요? 새 기간 --> 표시기의 새 인스턴스. 그리고 인디케이터의 원격 인스턴스의 변수는 새로운 것과 어떤 관계를 가질 수 있습니까???

 
Vladimir Pastushak :

예를 들어주세요...

 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 );}
  }
//+------------------------------------------------------------------+

그리고 다음은 그러한 클래스를 사용하는 표시기 자체입니다.
TF를 클릭하고 모든 것이 정상인지 확인하십시오.
 #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 );  
  }