기준 지표를 다시 그리다?! - 페이지 4

 
틀림없이...
여기 파일의 데이터가 있습니다


차트의 이 막대


이것은 유일한 경우가 아니라 많은 경우의 한 예일 뿐입니다.
이 모든 막대는 "일요일" 막대와 관련이 있습니다.
 
그리고 여기 따옴표 아카이브에 있습니다.
 
23시부터 00시까지 영업 하는 4시 에 바가 있다는게 이상하게 느껴지지 않으셨나요?
 
게다가 20:00과 00:00이 있기 때문에 분명히 불필요합니다. 모든 것이 이 스레드의 첫 번째 게시물에서 예상한 대로입니다.
그러나 여기에 개체를 배치할 수 없다는 사실이 있습니다(선 만들기). 아마도 따옴표 기반이 있는 다른 것입니다. 필요하다고 생각되면 먼저 못을 박고 핸들로 추가하십시오.
 
나는 일요일 바에 대해 읽었습니다. 아마도 (지표의 경우) 점은 iBarShift() 함수 에 있습니다.

int iBarShift(문자열 기호, int timeframe, datetime 시간, bool exact=false)
시간으로 바를 검색하세요. 함수는 지정된 시간이 속한 막대의 오프셋을 반환합니다. 지정된 시간 동안 막대가 없으면(히스토리에 "구멍") 정확한 매개변수에 따라 -1 또는 가장 가까운 막대의 오프셋이 반환됩니다.

옵션:
symbol - 도구의 상징적 이름입니다. NULL은 현재 문자를 의미합니다.
기간 - 기간. 차트 기간 중 하나일 수 있습니다. 0은 현재 차트의 기간을 의미합니다.
time - 검색할 시간 값입니다.
정확한 - 막대를 찾을 수 없는 경우 반환 값입니다. FALSE - iBarShift는 가장 가까운 것을 반환합니다. 참 - iBarShift는 -1을 반환합니다.

예시:
datetime some_time=D'2004.03.21 12:00';
int shift=iBarShift("EUROUSD",PERIOD_M1,some_time);
Print("열린 시간이 있는 막대의 이동 ",TimeToStr(some_time)," is ",shift);




나중에 MiG 인용문을 살펴보려고 합니다.
 
이 질문은 이전 페이지에서 이미 질문했습니다. :에 대한)
아니, 아닌 것 같았다.
이것은 일반 "일요일"바이며 오후 11시에 엽니 다. 예를 들어 FIBO "일요일" 막대는 22:00에 시작합니다.
 
확인해보니 모든 것이 확인되었고, 그래도 정확한 위치에 선을 설정할 수 있었습니다. 이를 위해 먼저 시계로 전환했습니다. 객체를 설정할 때 가장 가까운 막대는 항상 Period() 분의 정확도로 검색된다고 생각합니다.

 
두 번째 통화를 사용하는 지표의 최종 버전입니다.
막대의 도착 시간과 기록의 공백이 모두 고려됩니다.
비판은 환영합니다.

#property copyright "Copyright Quark"
#property link      ""

#property indicator_separate_window
#property indicator_buffers 1
#property indicator_color1 Lime

// indicator parameters
extern int nPeriod = 6;

double arrOpen[];

int nExtCountedBars = 0;

int nBars;
int nBarsUsdChf;

////////////////////////
int init()
{
	nBars = 0;
	nBarsUsdChf = 0;

	string strIndicatorShortName = "Test_1(" + Symbol() + " " + nPeriod + ")";  
	IndicatorShortName(strIndicatorShortName);

	// drawing settings
	SetIndexStyle(0, DRAW_LINE);
	SetIndexShift(0, 0);

	IndicatorDigits(4);
		
	// indicator buffers mapping
	SetIndexBuffer(0, arrOpen);
		
	return(0);
}
///////////////////////////
int start()
{
	if(Bars <= nPeriod) 
		return(0);
		
	if(nBars == Bars || nBarsUsdChf == iBars("USDCHF", 0))
		return(-1);

	int nPos = Bars - nBars;
	
	int nPosUsdChf = nPos;
	
	nBars = Bars;
	nBarsUsdChf = iBars("USDCHF", 0);
		
	while(nPos >= 0)
	{
		// Adjust nPosUsdChf, so that time is the same as in EURUSD
		// If Time(USDCHF) < Time(EURUSD), decrease nPosUsdChf
		while(nPosUsdChf > 0 &&
			TimeDay(Time[nPosUsdChf]) < TimeDay(Time[nPos]) ||		// Yerterday vs. Today
			(TimeDay(Time[nPosUsdChf]) == TimeDay(Time[nPos]) &&		// Same day
				TimeHour(Time[nPosUsdChf]) < TimeHour(Time[nPos])))
			nPosUsdChf--;

		// Now, if Time(USDCHF) > Time(EURUSD), increase nPosUsdChf
		while(nPosUsdChf < Bars &&
			TimeDay(Time[nPosUsdChf]) > TimeDay(Time[nPos]) ||		// Yerterday vs. Today
			(TimeDay(Time[nPosUsdChf]) == TimeDay(Time[nPos]) &&		// Same day
				TimeHour(Time[nPosUsdChf]) > TimeHour(Time[nPos])))
			nPosUsdChf++;

		arrOpen[nPos] = iOpen("USDCHF", 0, nPosUsdChf);

		nPos--;
		nPosUsdChf--;
	}

	return(0);
}


 
어리석은 질문: 이름에서 과시하는 것 외에 "nPeriod" 변수의 목적은 무엇입니까? ;에 대한)
 
어리석은 질문: 이름에서 과시하는 것 외에 "nPeriod" 변수의 목적은 무엇입니까? ;에 대한)


어... 그냥 MA가 거기에 있었다가 내가 없앴어요. 하지만 끝까지는 아닙니다 :)