[ARCHIVE!] 포럼을 어지럽히 지 않도록 초보자 질문. 프로, 놓치지 마세요. 너 없이는 아무데도 - 4. - 페이지 273

 
int start()
  {
int counted_bars= IndicatorCounted ();
if (counted_bars< 0 ) return (- 1 );
if ( Period () > 240 )   return (- 1 );

int LastPrevDay = iBars ( Symbol (), PERIOD_D1 );
int barnH= iBars ( Symbol (), PERIOD_H1 );

for ( int i = LastPrevDay- 1 ; i >= 0 ; i--)
{
datetime NowDay = iTime ( Symbol (), PERIOD_D1 , i);
int PrevDay = iBarShift ( Symbol (), PERIOD_D1 , NowDay);
datetime x_time= StrToTime ( TimeToStr (NowDay, TIME_DATE)+ " " +shift_time); 
int x_shift= iBarShift ( Symbol (), PERIOD_H1 ,x_time);
double CL= iClose ( Symbol (), PERIOD_H1 ,x_shift);

int LastDay = iBarShift ( Symbol (), PERIOD_D1 , iTime ( Symbol (), PERIOD_D1 , i))- 1 ;
if (LastDay> 0 )   // тут я запутался 
buffer[i]= CL;
}
return ( 0 );

이해를 도와주세요. 라인이 올바르게 진행되도록. 그래서 그것은 단지 버퍼에 선을 제공합니다. 그것은 피벗 선처럼 하루 안에 있어야합니다. .... 저에게 그 선은 전날의 X 시간 수준에서 시작됩니다.

이해해주세요 .... 할 수 없습니다(((

 
nlp2311 :

이해를 도와주세요. 라인이 올바르게 진행되도록. 그래서 그것은 단지 버퍼에 선을 제공합니다. 그것은 피벗 선처럼 하루 안에 있어야합니다. .... 저에게 그 선은 전날의 X 시간 수준에서 시작됩니다.

이해해주세요 .... 할 수 없습니다(((

물론 매일이 아니라 더 작은 시간대에 4시간 동안 5시간씩 움직여야 한다고 가정해 봅시다. 몇 시간 이하로 시작한다고 가정해 보겠습니다.

그리고 다음날 5시 이전에 그립니다. 완료 방법은 다음과 같습니다.

 #property indicator_chart_window
#property indicator_buffers 1
#property indicator_color1 Blue
#property indicator_width1 2
//==============================
extern int     hour = 5 ;
extern int     hrma = 4 ;
//==============================
double fx[];
double mai;
int p,hr,hrp;
//************************************************************
int init()  
{   
   SetIndexBuffer ( 0 ,fx);
   
   p=hrma* 60 / Period (); // пересчет периода мувинга на любой таймфрейм
   
   return ( 0 );
}
//************************************************************
int start()
{
   int cbi= Bars - IndicatorCounted ()- 1 ; if (cbi< 0 ) return (- 1 );
   if (cbi== 1 ) cbi--;
   if (cbi> 1 ) cbi= Bars -p- 1 ;
   //-------------------------------
   for ( int i=cbi; i>= 0 ; i--)
   {
      hrp= TimeHour (Time[i+ 1 ]); 
      hr= TimeHour (Time[i]);
      
       if (hr==hour && hrp!=hr) mai= iMA ( NULL , 0 ,p, 0 , 0 , 0 ,i); // сам простой мувинг, в момент, когда час равен нашему и не неравен на предыдущем баре
      
      fx[i]=mai; // просто приравнивание индикаторного буффера к глобальной переменной 
   }
  
   return ( 0 );
}
//***************************************************************
 

예, 동일한 대답을 했습니다.

ti=Time[i]; // время текущего бара
      
      tiip=tii; // предыдущее состояние времени
      tii=(ti-dth)/dtd*dtd; // время начала суток сдвинутое на нужный нам час
      
       if (tiip!=tii)

하지만 결과는 정확하지 않습니다!!!!!!!!!!!!!!!!!!!!!!!!! 피벗 비아에서 예를 들었습니다.

 if ( TimeDay (Time[i]) != TimeDay (Time[i+ 1 ]))
일반적인 견해는

 int start()
  {
double LastHigh,LastLow;
int counted_bars= IndicatorCounted ();
if (counted_bars< 0 ) return (- 1 );
if ( Period () > 240 )   return (- 1 );

int LastPrevDay = iBars ( Symbol (), PERIOD_D1 );
int barnH= iBars ( Symbol (), PERIOD_H1 );

for ( int i = LastPrevDay- 1 ; i >= 0 ; i--)
{
datetime NowDay = iTime ( Symbol (), PERIOD_D1 , i);
int PrevDay = iBarShift ( Symbol (), PERIOD_D1 , NowDay);
datetime LastD =   iTime ( Symbol (), PERIOD_D1 , i+ 1 );
int LastDay = iBarShift ( Symbol (), PERIOD_D1 , LastD);

if ( TimeDay (Time[i]) != TimeDay (Time[i+ 1 ]))
{ 
datetime x_time= StrToTime ( TimeToStr (NowDay, TIME_DATE)+ " " +shift_time); 
int x_shift= iBarShift ( Symbol (), PERIOD_H1 ,x_time);
double CL= iClose ( Symbol (), PERIOD_H1 ,x_shift);
}

buffer[i]= CL;
}

return ( 0 );
}

이것은 올바른 결과가 아닙니다.

작업은 간단하지만 피벗 레벨에 따라가 아니라 특정 시간 값에서 피벗으로 라인을 시작하는 것은 간단합니다. 그리고 그게 다야!!! 그리고 나는 걱정하고 이해하지 못합니다 ... X 시간에서 시간으로 선을 정렬하는 방법 [0] !!!!!!!!!!!!!!!!!!!!!!!!

 
nlp2311 :

예, 동일한 대답을 했습니다.

그러나 결과는 정확하지 않습니다!!!!!!!!!!!!!!!!!!!!!!!!! 피벗 비아에서 예를 들었습니다.

일반적인 견해는

이것은 올바른 결과가 아닙니다.

작업은 간단하지만 피벗 레벨에 따라가 아니라 특정 시간 값에서 피벗으로 라인을 시작하는 것은 간단합니다. 그리고 그게 다야!!! 그리고 나는 걱정하고 이해하지 못합니다 ... X 시간에서 시간으로 선을 정렬하는 방법 [0] !!!!!!!!!!!!!!!!!!!!!!!!

글쎄, 나는 거기에 예를 썼다.

원하는 시간에 어떤 값을 기록했다면 단순히 이 값과 같습니다.

for ( int i=cbi; i>= 0 ; i--)
{
hrp= TimeHour (시간[i+ 1 ]);
hr= TimeHour (시간[i]);

if (hr==hour && hrp!=hr) x=원하는 것...

fx[i]=x; // 인디케이터 버퍼를 전역 변수 와 동일시
}

적어도 피벗에 대해, 적어도 어떤 것에 대해서도 마찬가지입니다. 간단히 말해서, 이것이 일일 피벗인 경우 이 시점에서 일일 막대 수에 대한 일일 수준이 계산됩니다.

예를 들어, 일일 최대값은 5시입니다. 다른 모든 레벨에서도 동일한 작업을 수행할 수 있습니다. 코드를 빈 표시기에 복사하고 컴파일하고 보십시오. 이것이 필요한 것입니다.

그리고 모든 날을 그릴 필요는 없고 마지막 날만 그릴 경우 약간 다르게 수행됩니다. 좀 더 전문적인 접근 방식을 제안하는 것뿐입니다.

 #property indicator_chart_window
#property indicator_buffers 1
#property indicator_color1 Blue
#property indicator_width1 2
//==============================
extern int     hour = 5 ;
extern int     hrma = 24 ;
//==============================
double fx[];
double hm;
int p,hr,hrp;
//************************************************************
int init()  
{   
   SetIndexBuffer ( 0 ,fx); SetIndexEmptyValue ( 0 ,EMPTY); 
   
   p=hrma* 60 / Period ();
   
   return ( 0 );
}
//************************************************************
int start()
{
   int cbi= Bars - IndicatorCounted ()- 1 ; if (cbi< 0 ) return (- 1 );
   if (cbi== 1 ) cbi--;
   if (cbi> 1 ) cbi= Bars -p- 1 ;
   //-------------------------------
   for ( int i=cbi; i>= 0 ; i--)
   {
      hrp= TimeHour (Time[i+ 1 ]); 
      hr= TimeHour (Time[i]);
      
       if (hr==hour && hrp!=hr) 
      {
         fx[i+ 1 ]=EMPTY;
         hm=High[ iHighest ( NULL , 0 ,MODE_HIGH,p,i+ 1 )];
      }
      
      fx[i]=hm; 
   }
  
   return ( 0 );
}
//***************************************************************
 
안녕 모두. 그리고 누가 차트에 지표를 추가합니까? 즉, 어드바이저가 있고 iMA라고 하는 특정 값을 계산합니다. 차트에 지표를 어떻게 그리나요? 내가 이해하는 한, 추세선을 통해 기능 또는 "핸들"? EA의 매개변수가 있는 지표를 표시하는 더 간단한 방법이 있습니까?
 
Pyro :
안녕 모두. 그리고 누가 차트에 지표를 추가합니까? 즉, 어드바이저가 있고 iMA라고 하는 특정 값을 계산합니다. 차트에 지표를 어떻게 그리나요? 내가 이해 하는 한 , 추세선을 통한 기능 또는 "핸들"? EA의 매개변수가 있는 지표를 표시하는 더 간단한 방법이 있습니까?

포럼에서 추세선을 통해 버퍼를 표시하는 방법을 찾아본 적이 없습니다. 누군가 글을 썼을 수도 있습니다.

또는 직접 작성하면 거기에는 복잡한 것이 없습니다.(HP에서 풀 타임이 필요한 경우)

 
Pyro :
안녕 모두. 그리고 누가 차트에 지표를 추가합니까? 즉, 어드바이저가 있고 iMA라고 하는 특정 값을 계산합니다. 차트에 지표를 어떻게 그리나요? 내가 이해하는 한, 추세선을 통해 기능 또는 "핸들"? EA의 매개변수가 있는 지표를 표시하는 더 간단한 방법이 있습니까?


Expert Advisor가 차트에 첨부되어 있고 그 안에 무언가가 계산되어 있으면 그것이 무엇인지 보려면 정확히 동일한 기능의 지표를 만들고 Expert Advisor와 동일한 매개 변수를 설정하고 차트에 추가해야합니다. 차트. 또는 이동 평균과 같은 표준 MT 기능인 경우 차트에 추가하고 EA와 동일한 매개변수를 설정합니다. EA 자체는 차트에 지표를 표시하지 않습니다. 테스트 후 테스터에서만 렌더링됩니다. 거래 중이 아닙니다. 다른 방법이 있지만 gemornoy는 대시 ObjectCreate(name+Time[0], OBJ_ARROW ,0,Time[0],price)와 같은 개체로 그리는 것입니다. ObjectSet(이름+시간[0],OBJPROP_ARROWCODE,4); 또는 추세선의 세그먼트이지만 이전 막대의 함수 상태도 기억해야 합니다. 그러나 이것은 표시기를 설정할 수 없는 경우입니다. 예를 들어 Asks에 따라 무언가를 그려야 하지만 MT는 Asks 배열 또는 두 쌍의 합성을 저장하지 않습니다. 여기에서도 통제를 위해 변질될 필요가 있다.

글쎄, 당신은 여전히 당신이 필요한 것을 걸 수 있는 템플릿(tpl)을 만들 수 있습니다. 그러나 순전히 실질적으로는 커스텀 인디케이터를 만들어 수동으로 설정하고 새로운 프로필을 작성하고 거래가 필요할 때 해당 프로필을 호출하기만 하면 됩니다. 일반적으로 기술은 환상에 가깝습니다.

 
고통스럽게 황량한 수동 던지기 - 고문에서 매개 변수가 지속적으로 변경되는 경우. 좋습니다. 동료들에게 감사합니다. 이제 확신이 생겼습니다.
 
GV를 통해 EA에서 지표로 전송합니다.
 

1) Advisor 및 Indicator의 사전 설정 매개변수로 템플릿을 만듭니다.

2) GV를 사용하여 지표에 매개변수 전달

3) WINAPI를 사용하여 EA의 차트에서 호출 표시기

화살표 개체를 사용하여 EA에서 지표 차트를 그리는 것을 선호합니다.

사유: