Standart göstergeleri yeniden mi çiziyorsunuz?! - sayfa 4

 
kesinlikle...
işte dosyalardan veriler


ve grafikteki bu çubuk


ve bu tek durum değil, birçok örnekten sadece biri.
tüm bu çubuklar "Pazar" çubuklarıyla ilgilidir.
 
ve işte tırnak arşivinde
 
Saat 4'te , açılış saati 23-00 olan bir barın olması size garip gelmedi mi?
 
üstelik açıkçası gereksiz, 20:00 ve 00:00 olduğu için bu konudaki ilk mesajımda her şey beklediğim gibi,
ama işte gerçek şu ki, üzerine bir nesne yerleştiremezsiniz (bir çizgi oluşturun), muhtemelen tırnak tabanıyla başka bir şey, gerekli olduğunu düşünüyorsanız, önce onu çivilemeye çalışın ve ardından tutamaçlarla ekleyin
 
Pazar barları hakkında okudum. Belki (gösterge için), nokta iBarShift() işlevindedir.

int iBarShift(dize sembolü, int zaman çerçevesi, tarih saat, bool tam=yanlış)
Zamana göre bir bar arayın. İşlev, belirtilen zamanın ait olduğu çubuğun ofsetini döndürür. Belirtilen süre için çubuk yoksa (geçmişte "delik"), tam parametreye, -1'e veya en yakın çubuğun ofsetine bağlı olarak işlev döner.

Seçenekler:
sembol - Enstrümanın sembolik adı. NULL, geçerli karakter anlamına gelir.
zaman çerçevesi - Dönem. Grafik dönemlerinden biri olabilir. 0, mevcut grafiğin periyodu anlamına gelir.
time - Aranacak zaman değeri.
kesin - Çubuk bulunamazsa değeri döndürür. YANLIŞ - iBarShift en yakın olanı döndürür. DOĞRU - iBarShift -1 değerini döndürür.

Misal:
datetime some_time=D'2004.03.21 12:00';
int shift=iBarShift("EUROUSD",PERIOD_M1,bir_zaman);
Print("açık zamanlı çubuğun kayması",TimeToStr(bazı_zaman),", ", shift);




MiG alıntılarına daha sonra bakmaya çalışacağım.
 
Bu soru bir önceki sayfada sorulmuştu. :hakkında)
Hayır, görünmüyordu.
Bu normal bir "Pazar" barıdır ve saat 11'de açılır. Ve örneğin, FIBO "Pazar" çubukları 22:00'de başlar.
 
Kontrol ettim, her şey doğrulandı Doğru, yine de çizgiyi doğru yere koymayı başardım. Bunun için önce saatlere geçtim. Bir nesneyi ayarlarken, en yakın çubuğun her zaman Period() dakika doğruluğu ile arandığını düşünüyorum.

 
İkinci para birimini kullanan göstergenin son hali.
Hem çubukların farklı varış zamanları hem de tarihteki boşluklar dikkate alınır.
Eleştiri açığız.

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


 
Aptalca soru: "nPeriod" değişkeninin adında gösteriş yapmaktan başka amacı nedir? ;hakkında)
 
Aptalca soru: "nPeriod" değişkeninin adında gösteriş yapmaktan başka amacı nedir? ;hakkında)


Uh... Sadece MA oradaydı ve sonra onu kaldırdım. Ama sonuna kadar değil :)