Les indicateurs standard sont prioritaires ! - page 4

 
Bien sûr...
Voici les données des fichiers


et voici cette barre sur le graphique


et ce n'est pas le seul cas, c'est un exemple parmi d'autres.
Tous ces bars sont liés aux bars "du dimanche".
 
et le voici dans l'archive des citations
 
Vous n'avez pas trouvé étrange qu'il y ait un bar dont l'heure d'ouverture est de 23 heures le jour de la fête des quatre heures?
 
C'est clairement redondant, puisqu'il y a 20:00 et 00:00, comme je l'ai suggéré dans mon premier message dans ce fil,
mais le fait qu'il ne peut pas positionner un objet (construire une ligne), probablement quelque chose d'autre avec une base de citation, si vous pensez que vous en avez besoin, essayez d'abord de le clouer, et ensuite ajouter manuellement
 
J'ai lu des articles sur les barres montantes. Peut-être (pour l'indicateur) est-ce la fonction iBarShift()
.
<br/ translate="no"> int iBarShift( string symbol, int timeframe, datetime time, bool exact=false)
Recherche de barre par temps. La fonction renvoie le décalage de la barre à laquelle appartient le temps spécifié. S'il n'y a pas de barre pour le temps spécifié (un "trou" dans l'historique), la fonction, selon le paramètre exact, renvoie -1 ou le décalage de la barre la plus proche.

Paramètres :
symbol - nom du symbole de l'instrument. NULL signifie le symbole actuel.
timeframe - Période. Peut être l'une des périodes du graphique. 0 signifie la période du graphique actuel.
time - Valeur de temps à rechercher.
exact - Valeur retournée si aucune barre n'est trouvée. FALSE - iBarShift renvoie la plus proche. TRUE - iBarShift renvoie -1.

Exemple :
datetime some_time=D'2004.03.21 12:00' ;
int shift=iBarShift("EUROUSD",PERIOD_M1,some_time) ;
Print("shift of bar with open time ",TimeToStr(some_time)," is ",shift) ;




J'essaierai de regarder les citations sur les MiG, plus tard.
 
Cette question m'a déjà été posée sur une page précédente. :о)
Non, ça ne l'était pas.
C'est un bar habituel du dimanche, et il ouvre à 23 heures. FIBO, par exemple, propose des bars "du dimanche" qui commencent à 22 heures.
 
J'ai vérifié, tout est confirmé. C'est vrai, j'ai quand même réussi à placer la ligne au bon endroit. Pour cela, je suis d'abord passé aux horloges. Je pense que lorsqu'on définit un objet, on cherche toujours la barre la plus proche des minutes exactes de Period().

 
La version finale de l'indicateur utilisant la deuxième devise.
Les différentes heures d'arrivée des barres ainsi que les omissions dans l'historique sont prises en compte.
Toute critique est la bienvenue.

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


 
Question stupide : à quoi sert la variable "nPeriod", si ce n'est à montrer son nom ? ;о)
 
Question stupide : à quoi sert la variable "nPeriod", si ce n'est pour se faire remarquer dans le nom ? ;o) <br / translate="no">


Э... C'est juste qu'il y avait une AMM, et puis je l'ai supprimée. Mais pas jusqu'au bout :)