[Toute question de débutant, afin de ne pas encombrer le forum. Professionnels, ne passez pas votre chemin. Je ne peux aller nulle part sans toi. - page 33

 
xruss >> :
Connaissez-vous la réponse à ma question complémentaire ?

La condition ci-dessous est correcte, mais je n'utilise pas la fonction de mise à jour, donc je ne peux pas vous le dire.

P.S. Je suis aussi un débutant.

 
xruss писал(а) >>
Quelqu'un sait-il si cet ordre d'énumération des conditions par plusieurs (&&) dans une ligne de l'opérateur if() est acceptable ?

Acceptable, même si je mettrais plus de parenthèses - les opérations ont des priorités différentes selon les langues - pour ne pas penser à des futilités - quelque chose du genre :

if ((Max_price_1>EMA20_Open) && (Min_price_1>EMA20_Open) && (Heiniken_Red>Heiniken_Blue))
   {
    Opn_B=true;
   }
 
zfs >> :

Vous recherchez des sommets parmi les x voisins les plus proches de l'indicateur et vous les comparez.

A quoi ressemble la fonction de recherche des 2 derniers maxima sur le RSI ?

Quelqu'un peut-il me montrer le code ?

 
xruss писал(а) >>

...(faut-il faire un rafraîchissement avec RefreshRates() ?)...

Quel est l'objectif de RefreshRates ? Le fait est qu'après un nouveau tick, les variables intégrées (comme Ask, Bid, etc.) sont lues et transmises à la fonction start(). Si le démarrage est trop long, un nouveau tick peut arriver, mais les variables ne sont pas mises à jour. C'est alors que vous appelez RefreshRates.

Quand le démarrage prend trop de temps ? En général, lorsqu'une opération commerciale est en cours, il y a un échange sur le réseau, l'autorisation du serveur pour l'opération est requise et une réponse est attendue. Donc, généralement, RefreshRates est utilisé lorsque plus d'un ordre est ouvert/fermé sur un tick. Il est utilisé entre les opérations.

 
amur писал(а) >>

A quoi ressemble la fonction de recherche des deux derniers sommets du RSI ?

Quelqu'un peut-il me montrer le code ?

Aussi étrange que cela puisse paraître, la tâche n'est pas facile. Techniquement, il faut revenir en arrière et chercher des points comme ça :

y(x-1)<y(x) et y(x)>y(x+1).

Mais cela permettra de trouver des extrema locaux, et c'est un peu exagéré - vous ne serez pas satisfait du résultat.

 
Itso >> :

Aussi étrange que cela puisse paraître, la tâche n'est pas facile. Techniquement, il faut revenir en arrière et chercher des points tels que :

y(x-1)<y(x) et y(x)>y(x+1).

Mais cela va trouver des extrema locaux, et c'est un peu exagéré - vous ne serez pas satisfait du résultat.

Je pense à peu près la même chose, mais je suis confus par certaines réflexions : comment le 1er maximum sera-t-il distingué du 2ème,

car cette condition correspond à la fois au premier maximum et aux 2ème et 3ème....

 
amur писал(а) >>

Je pense à la même chose, mais certaines réflexions me laissent perplexe : comment le 1er maximum sera-t-il différencié du 2ème maximum ?

parce que tant le premier maximum que le 2ème et le 3ème maximum rentrent dans cette condition....

Je peux vous recommander de faire des recherches et de lire sur le ZigZag (il y a beaucoup de littérature). Je recommande le zigzag de Rochev - 'Zigzag R'.

 
Itso >> :

Je peux vous recommander de faire des recherches et des lectures sur le ZigZag (la littérature est abondante). Je recommande le zigzag de Rochev - 'Zigzag R'.

>>Merci. Je vais y jeter un coup d'oeil.

J'ai regardé sur ....((( Je ne comprends rien clairement... Le tableau est rempli, puis la fonction shifft n'est pas claire sur ce qu'elle fait exactement.

 
amur писал(а) >>

Merci. Je vais jeter un coup d'oeil.

Regardé à....(((( je ne comprends rien... Le tableau est rempli, puis la fonction shifft ne comprend pas ce qu'elle fait exactement.

C'est le problème - la question est assez complexe - mais ce zigzag fonctionne sans erreur. Vous pouvez l'utiliser pour le RSI.

 
amur >> :

A quoi ressemble la fonction permettant de trouver les 2 derniers sommets du RSI ?

Quelqu'un peut-il le montrer sous forme de code ?

Ça ressemble à ça :

bool exit_for=false;
int max_1=0;int max_2=0;
for(int k=0; k<Bars; k++)
{
	if(	iRSI(Symbol(),0, rsi_period,PRICE_CLOSE, k)<iRSI(Symbol(),0, rsi_period,PRICE_CLOSE, k+1)
		&& iRSI(Symbol(),0, rsi_period,PRICE_CLOSE, k+1)>iRSI(Symbol(),0, rsi_period,PRICE_CLOSE, k+2) 	)
	{
		//Если это первый максимум:
		if( max_1==0)
			max_1= k+1;//Записываем номер бара экстремума
		else
		//Если первый найден, записываем второй
		{	
                        max_2= k+1;
                        exit_for=true;
                } 
	}
        //Выход из цикла, когда найдены оба максимума
        if( exit_for==true) k=Bars+1;  
}