특정 지표에 대한 고유 ID 생성기 - 페이지 3

 
Ovo : "가르쳐"를 의미했는지 확실하지 않습니다. 디버깅을 위해 몇 개를 사용하지만 __DATETIME__ 의 경우 아직 사용하지 못했습니다... 어디를 목표로 하고 있습니까?

죄송합니다. 동일한 표시기를 여러 창에서 찾고 있다는 사실을 잊었습니다.

다른 것을 생각해 보도록 하겠습니다.

=================================================

아하, 알겠습니다. 적절한 길이 계산을 수행하는 함수 를 만듭니다.

그런 다음 기능이 완료되는 시간 경과를 고유 번호로 반환합니다.

 

TimeCurrent()는 고유한 숫자입니다..

인디를 붙인 시간을 활용해보는건 어떨까요?? 레이블에 저장

 
Ovo :
모든 조언을 시도하지는 않기 때문입니다. 센스있는 분들만 뽑습니다.
나는 당신 도우 려는 사람들과 함께 당신의 오만함절제할 것을 제안합니다 . 이러한 태도는 이 포럼에서 환영받지 못합니다.
 
angevoyageur :
나는 당신 도우 려는 사람들과 함께 당신의 오만함절제할 것을 제안합니다 . 이러한 태도는 이 포럼에서 환영받지 못합니다.

나는 멀리하려고 노력할 것입니다.
 

내 생각이 말도 안 된다고 어떻게 말할 수 있니??

시간 전류 는 고유 번호입니다..

이 코드를 시도하십시오. 1 차트에 첨부하십시오. 그러나 다른 입력 기간

#property strict
#property indicator_separate_window
//+------------------------------------------------------------------+
//| Custom indicator initialization function                         |
//+------------------------------------------------------------------+
extern int periode= 4 ;
int OnInit ()
  {
//--- indicator buffers mapping
string shortname= StringConcatenate ( WindowExpertName (), "_" ,periode);
IndicatorShortName (shortname);
int wind= WindowFind (shortname);
string name= StringConcatenate ( "TIME_TAG" ,wind);
   if ( ObjectFind (name)!=wind)
  {   ObjectCreate (name, OBJ_LABEL , wind, 0 , 0 );
       ObjectSet (name, OBJPROP_CORNER , 2 );
       ObjectSet (name, OBJPROP_XDISTANCE , 2 );
       ObjectSet (name, OBJPROP_YDISTANCE , 5 ); 
       ObjectSetText (name, DoubleToStr ( TimeCurrent (), 0 )+ DoubleToStr (wind, 0 ) , 9 , "Arial" ,Yellow);   
  }
//---
   return ( INIT_SUCCEEDED );
  }
//+------------------------------------------------------------------+
//| Custom indicator iteration function                              |
//+------------------------------------------------------------------+
int OnCalculate ( const int rates_total,
                 const int prev_calculated,
                 const datetime &time[],
                 const double &open[],
                 const double &high[],
                 const double &low[],
                 const double &close[],
                 const long &tick_volume[],
                 const long &volume[],
                 const int &spread[])
  {
//---
   
//--- return value of prev_calculated for next call
   return (rates_total);
  }
 
WDholic :

시간 전류는 고유 번호입니다..

TimeCurrent()는 다음을 포함하여 다양한 가능한 상황에서 고유한 숫자가 아닙니다.

* 여러 기존 차트와 해당 차트에 연결된 여러 지표를 사용하여 MT4 사본을 다시 시작합니다. 모두 동시에 초기화되고 동일한 TimeCurrent()가 표시됩니다.

* 유동성이 부족한 기간 동안 지표 사본을 추가하고 있습니다. 중개인의 가격 피드 유형에 따라 5-10초 동안 새 틱이 없고 TimeCurrent()가 변경되지 않는 기간이 있을 수 있습니다. 이러한 기간 동안 새 지표를 추가하면 TimeCurrent()에 대해 동일한 값을 얻게 됩니다.

 
string name= StringConcatenate ( "TIME_TAG" ,wind);
   if ( ObjectFind (name)!=wind)
  {   ObjectCreate (name, OBJ_LABEL , wind, 0 , 0 );
       ObjectSet (name, OBJPROP_CORNER , 2 );
       ObjectSet (name, OBJPROP_XDISTANCE , 2 );
       ObjectSet (name, OBJPROP_YDISTANCE , 5 ); 
       ObjectSetText (name, DoubleToStr ( TimeCurrent (), 0 )+ DoubleToStr (wind, 0 ) , 9 , "Arial" ,Yellow);   
  }

TIME TAG 레이블을 찾을 수 없는 경우에만 시간 태그 추가

따라서 deinit ..에서 레이블 TIME TAG 를 삭제하지 마십시오. 그러면 값이 절대 변경되지 않습니다.

ok.. 5초 또는 10초 안에 틱이 없으면 두려운 경우.. 현재 시간 대신 TimeLocal을 사용할 수 있습니다.

 
WDholic :

TIME TAG 레이블을 찾을 수 없는 경우에만 시간 태그 추가

따라서 deinit ..에서 레이블 TIME TAG 를 삭제하지 마십시오. 그러면 값이 절대 변경되지 않습니다.

ok.. 5초 또는 10초 안에 틱이 없으면 두려운 경우.. 현재 시간 대신 TimeLocal을 사용할 수 있습니다.

... 차트 개체 에 대해 위에서 설명한 문제도 있습니다. 차트에 지표를 추가한 다음 템플릿을 생성하면 템플릿에서 생성된 모든 새 차트는 동일한 TIME_TAG 값을 갖게 됩니다. 그리고 개체의 사용은 차트당 하나의 지표 인스턴스만 허용합니다. 가능한 모든 매개변수를 IndicatorShortName에 넣지 않는 한 여러 지표는 동일한 ID를 얻습니다.

 
gchrmt4 :

... 차트 개체에 대해 위에서 설명한 문제도 있습니다. 차트에 지표를 추가한 다음 템플릿을 생성하면 템플릿에서 생성된 모든 새 차트는 동일한 TIME_TAG 값을 갖게 됩니다. 그리고 개체의 사용은 차트당 하나의 지표 인스턴스만 허용합니다. 가능한 모든 매개변수를 IndicatorShortName에 넣지 않는 한 여러 지표는 동일한 ID를 얻습니다.


시도해주세요..

1개의 템플릿으로 5개의 인디를 다른 설정에 넣으면..

예. 시간 값은 111111000입니다.

창 1에 1111110001 이 표시됩니다.
창 2에 1111110002 가 표시됩니다.
창 3에 1111110003 이 표시됩니다.
창 4에서 1111110004 가 표시됩니다.

창 5에 1111110005 가 표시됩니다.

창 번호를 포함하기 때문에

ObjectSetText (이름 , DoubleToStr ( TimeCurrent (), 0 )+ DoubleToStr (바람, 0 ) , 9 , "Arial" , 노란색);


가능한 모든 매개변수 를 IndicatorShortName에 넣지 않는 한 여러 지표는 동일한 ID를 얻습니다 .

네.. 고려해보시면 좋을 것 같습니다.

하지만 OVO 및 You와 같은 마스터 코더에게는 쉬울 것이라고 생각합니다.

 
WDholic :

1개의 템플릿으로 5개의 인디를 다른 설정에 넣으면..

어떤 버전의 MT4를 사용하고 있는지 모르지만 내 컴퓨터의 v616에서 WindowFind()는 OnInit() 중에 -1을 반환합니다. 설명서 에는 항상 "init() 함수가 작동할 때 사용자 지정 표시기가 자체적으로 검색하면 WindowFind()가 -1을 반환합니다."라고 나와 있습니다.